30 lines
884 B
C#
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;
|
|
}
|
|
|
|
}
|