BRG_backgrond.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Collections.Generic;
  3. using Core.BRG;
  4. using Unity.Collections;
  5. using Unity.Mathematics;
  6. using UnityEngine;
  7. public class BRG_backgrond : MonoBehaviour
  8. {
  9. public BRGSamples samples;
  10. // public Material mat;
  11. // public Mesh mesh;
  12. public bool m_castShadows;
  13. public int w;
  14. public int h;
  15. /// <summary>
  16. /// BRG容器对象
  17. /// </summary>
  18. private BRGRender<BGRGameObjectInfo> _mBrgRenderBasic;
  19. private int m_itemCount;
  20. public bool isUpdate = true;
  21. /// <summary>
  22. /// GPU项目大小(2个4x3矩阵加1个颜色,每个float4占16字节)
  23. /// </summary>
  24. private const int kGpuItemSize = (3 * 2 + 1) * 16;
  25. public List<BGRGameObjectInfo> m_gameObjectInfos = new List<BGRGameObjectInfo>();
  26. private void Start()
  27. {
  28. m_itemCount = w * h;
  29. for (int i = 0; i < w; i++)
  30. {
  31. for (int j = 0; j < h; j++)
  32. {
  33. BGRGameObjectInfo info = new BGRGameObjectInfo();
  34. info.pos = new Vector3(i * 2, j , 0); // 增加间距,使物体更容易看到
  35. info.rot = Vector3.zero;
  36. info.scale = Vector3.one; // 调整尺寸
  37. m_gameObjectInfos.Add(info);
  38. }
  39. }
  40. _mBrgRenderBasic = new BRGRender<BGRGameObjectInfo>();
  41. _mBrgRenderBasic.InitRender(samples, m_gameObjectInfos);
  42. }
  43. private void OnDestroy()
  44. {
  45. if (_mBrgRenderBasic != null)
  46. {
  47. _mBrgRenderBasic.Shutdown();
  48. _mBrgRenderBasic = null;
  49. }
  50. }
  51. private void Update()
  52. {
  53. UpdatePos();
  54. }
  55. private void UpdatePos()
  56. {
  57. if (!isUpdate)
  58. {
  59. return;
  60. }
  61. _mBrgRenderBasic.UpdatePos();
  62. }
  63. }