BRG_backgrond.cs 2.3 KB

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