예제 #1
0
        public void Next(ComputeBuffer u1, ComputeBuffer u0, ComputeBuffer v, int count, float dt)
        {
            var cap = cs.DispatchSize(K_NEXT, new Vector3Int(count, 1, 1));

            cs.SetInt(P_COUNT, count);
            cs.SetVector(P_Params, Params(dt));
            cs.SetBuffer(K_NEXT, P_V, v);
            cs.SetBuffer(K_NEXT, P_U0, u0);
            cs.SetBuffer(K_NEXT, P_U1, u1);
            cs.Dispatch(K_NEXT, cap.x, cap.y, cap.z);
        }
예제 #2
0
        public void Next(RenderTexture u1, Texture u0, RenderTexture v, RenderTexture b)
        {
            cs.SetInt(P_COUNT, u1.width);
            cs.SetVector(P_Params, Params());
            cs.SetTexture(K_NEXT, P_B, b);
            cs.SetTexture(K_NEXT, P_V, v);
            cs.SetTexture(K_NEXT, P_U0, u0);
            cs.SetTexture(K_NEXT, P_U1, u1);

            var cap = cs.DispatchSize(K_NEXT, new Vector3Int(u1.width, 1, 1));

            cs.Dispatch(K_NEXT, cap.x, cap.y, cap.z);
        }
예제 #3
0
        public static void DispatchThread(this ComputeShader cs, int kernel, params int[] totalThreads)
        {
            var vThreads = Vector3Int.one;
            var i        = 0;

            foreach (var t in totalThreads)
            {
                vThreads[i++] = t;
            }

            var disp = cs.DispatchSize(kernel, vThreads);

            cs.Dispatch(kernel, disp.x, disp.y, disp.z);
        }
예제 #4
0
 public static Vector3Int DispatchSize(this ComputeShader cs, int kernel, int x, int y = 1, int z = 1)
 {
     return(cs.DispatchSize(kernel, new Vector3Int(x, y, z)));
 }