예제 #1
0
        void ApplyCompute(
            ComputeShader compute, int trianglePerThread, float amplitude,
            ComputeBuffer inputBuffer, ComputeBuffer outputBuffer)
        {
            var kernel = compute.FindKernel("Main");

            compute.SetBuffer(kernel, "PositionSource", _positionSource);
            compute.SetBuffer(kernel, "NormalSource", _normalSource);
            compute.SetBuffer(kernel, "TangentSource", _tangentSource);

            compute.SetBuffer(kernel, "PositionInput", inputBuffer);
            compute.SetBuffer(kernel, "PositionOutput", outputBuffer);

            compute.SetInt("TriangleCount", _data.triangleCount);
            compute.SetFloat("Amplitude", amplitude);
            compute.SetFloat("RandomSeed", _randomSeed);
            compute.SetFloat("Time", globalTime);

            var c = compute.GetKernelThreadGroupSizeX(kernel) * trianglePerThread;

            compute.Dispatch(kernel, (_data.triangleCount + c - 1) / c, 1, 1);
        }