Files
beyond/Assets/ThirdParty/SDF Baker/Experiments/VolumeComputeMethods.cs
2024-11-20 15:21:28 +01:00

30 lines
884 B
C#

using UnityEngine;
public class VolumeComputeMethods
{
// static ComputeShader volumeComputeMethodsShader;
// static void LoadResources() { volumeComputeMethodsShader = Resources.Load() }
public static float[] ExtractVolumeFloatData( Texture3D volume, ComputeShader shader )
{
float[] values = new float[volume.width * volume.height * volume.depth];
int[] dim = new int[]{ volume.width, volume.height, volume.depth };
ComputeBuffer valuesBuffer = new ComputeBuffer(values.Length, 4);
valuesBuffer.SetData(values);
int kernel = shader.FindKernel("ExtractVolumeData");
shader.SetInts("dimensions", dim);
shader.SetTexture(kernel, "volume", volume);
shader.SetBuffer(kernel, "values", valuesBuffer);
shader.Dispatch(kernel, volume.width, volume.height, volume.depth);
valuesBuffer.GetData(values);
valuesBuffer.Dispose();
return values;
}
}