Exemplo n.º 1
0
 public static void InitLodBuffers(ref LodBuffers buffers, int size)
 {
     buffers.calculateKernel = buffers.lodShader.FindKernel("Calculate");
     buffers.moveKernel      = buffers.lodShader.FindKernel("Move");
     buffers.sizeBuffer      = new ComputeBuffer(1, 4);
     buffers.lodGroupBuffer  = new ComputeBuffer(size, TransformInfo.SIZE);
     buffers.changedBuffer   = new ComputeBuffer(size, uint2.SIZE);
 }
Exemplo n.º 2
0
 public static void DispatchLodCalculate(ref LodBuffers buffers, Vector3 cameraPosition)
 {
     buffers.sizeBuffer.SetData(ComputeShaderUtility.zero);
     buffers.lodShader.SetVector(ShaderIDs._CameraPos, cameraPosition);
     buffers.lodShader.SetBuffer(buffers.calculateKernel, ShaderIDs.lodGroupBuffer, buffers.lodGroupBuffer);
     buffers.lodShader.SetBuffer(buffers.calculateKernel, ShaderIDs.sizeBuffer, buffers.sizeBuffer);
     buffers.lodShader.SetBuffer(buffers.calculateKernel, ShaderIDs.changedBuffer, buffers.changedBuffer);
     ComputeShaderUtility.Dispatch(buffers.lodShader, buffers.calculateKernel, buffers.lodGroupBuffer.count, LodBuffers.CALCULATETHREADGROUP);
 }
Exemplo n.º 3
0
 public static void DisposeLodBuffers(ref LodBuffers buffers)
 {
     buffers.changedBuffer.Dispose();
     buffers.lodGroupBuffer.Dispose();
     buffers.sizeBuffer.Dispose();
 }