void Initialize() { computeShaderInstance = computeShader; //computeShaderInstance = (ComputeShader)Resources.Load("Instancing"); render = GetComponent <Renderer>(); uint threadX, threadY, threadZ; kernelMap = System.Enum.GetValues(typeof(ComputeKernels)) .Cast <ComputeKernels>() .ToDictionary(t => t, t => computeShaderInstance.FindKernel(t.ToString())); //kernel sizeを取得 computeShaderInstance.GetKernelThreadGroupSizes(kernelMap[ComputeKernels.Emit], out threadX, out threadY, out threadZ); gpuThreads = new GPUThreads(threadX, threadY, threadZ); /*--express * //-https://docs.unity3d.com/ja/current/ScriptReference/ComputeBufferType.html * //ComputeBuffer (int count, int stride, ComputeBufferType type); * //strudeはバッファ一つ値の型 * //args = new uint[5] { 0, 0, 0, 0, 0 }; * -----*/ argsBuffer = new ComputeBuffer(1, args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); bufferPropId = Shader.PropertyToID("buf"); timesPropId = Shader.PropertyToID("times"); convergencePropId = Shader.PropertyToID("convergence"); viscosityPropId = Shader.PropertyToID("viscosity"); additionalVectorPropId = Shader.PropertyToID("additionalVector"); modelMatrixPropId = Shader.PropertyToID("modelMatrix"); valPropId = Shader.PropertyToID("val"); InitialCheck(); UpdateBuffers(); }
private void Initialize() { bounds = new Bounds(Vector3.zero, new Vector3(100, 100, 100)); computeShaderInstance = computeShader; render = GetComponent <Renderer>(); uint threadX, threadY, threadZ; //FindKernel:Emit,Iterator kernelMap = System.Enum.GetValues(typeof(ComputeKernels)) .Cast <ComputeKernels>() .ToDictionary(t => t, t => computeShaderInstance.FindKernel(t.ToString())); computeShaderInstance.GetKernelThreadGroupSizes(kernelMap[ComputeKernels.Emit], out threadX, out threadY, out threadZ); gpuThreads = new GPUThreads(threadX, threadY, threadZ); argsBuffer = new ComputeBuffer(1, args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); //---Vertex,FragmentShader bufferPropId = Shader.PropertyToID("buf"); timesPropId = Shader.PropertyToID("timer"); lifePropId = Shader.PropertyToID("lifeTime"); modelMatrixPropId = Shader.PropertyToID("modelMatrix"); //--- UpdateBuffers(); }
protected virtual void Initialize() { computeShaderInstance = computeShader; uint threadX, threadY, threadZ; kernelMap = System.Enum.GetValues(typeof(ComputeKernels)) .Cast <ComputeKernels>() .ToDictionary(t => t, t => computeShaderInstance.FindKernel(t.ToString())); computeShaderInstance.GetKernelThreadGroupSizes(kernelMap[ComputeKernels.Emit], out threadX, out threadY, out threadZ); gpuThreads = new GPUThreads(threadX, threadY, threadZ); argsBuffer = new ComputeBuffer(1, args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); bufferPropId = Shader.PropertyToID("buf"); modelMatrixPropId = Shader.PropertyToID("modelMatrix"); timesPropId = Shader.PropertyToID("times"); InitializeShaderUniforms(); InitialCheck(); InitializeBuffers(); }
void Initialize() { computeShaderInstance = computeShader; uint threadX, threadY, threadZ; kernelMap = System.Enum.GetValues(typeof(ComputeKernels)) .Cast <ComputeKernels>() .ToDictionary(t => t, t => computeShaderInstance.FindKernel(t.ToString())); computeShaderInstance.GetKernelThreadGroupSizes(kernelMap[ComputeKernels.Emit], out threadX, out threadY, out threadZ); gpuThreads = new GPUThreads(threadX, threadY, threadZ); fireBufferPropId = Shader.PropertyToID("buf"); timesPropId = Shader.PropertyToID("times"); convergencePropId = Shader.PropertyToID("convergence"); viscosityPropId = Shader.PropertyToID("viscosity"); additionalVectorPropId = Shader.PropertyToID("additionalVector"); modelMatrixPropId = Shader.PropertyToID("modelMatrix"); InitialCheck(); UpdateBuffers(); }
private void Initialize() { times = new Vector2(0, 0); bounds = new Bounds(Vector3.zero, new Vector3(100, 100, 100)); computeShaderInstance = computeShader; render = GetComponent <Renderer>(); uint threadX, threadY, threadZ; //castでarray->ComputeKernels型へ kernelMap = Enum.GetValues(typeof(ComputeKernels)) .Cast <ComputeKernels>() .ToDictionary(t => t, t => computeShaderInstance.FindKernel(t.ToString())); //emit kernelのグループスレッドサイズを取得 computeShaderInstance.GetKernelThreadGroupSizes(kernelMap[ComputeKernels.Emit], out threadX, out threadY, out threadZ); gpuThreads = new GPUThreads(threadX, threadY, threadZ); argsBuffer = new ComputeBuffer(1, args.Length * sizeof(uint), ComputeBufferType.IndirectArguments); //---Vertex,FragmentShader bufferPropId = Shader.PropertyToID("buf"); timesPropId = Shader.PropertyToID("timer"); lifePropId = Shader.PropertyToID("lifeTime"); modelMatrixPropId = Shader.PropertyToID("modelMatrix"); mousePropId = Shader.PropertyToID("mousePos"); convergencePropId = Shader.PropertyToID("convergence"); viscosityPropId = Shader.PropertyToID("viscosity"); additionalVectorPropId = Shader.PropertyToID("additionalVector"); //--- UpdateBuffers(); }