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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
    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();
    }