Ejemplo n.º 1
0
    private void Dispatch()
    {
        AssignStructs.AssignTransBuffer(transform, transValues, _transBuffer);

        // Setting up hand buffers
        int index = 0;

        AssignStructs.AssignHandStruct(handValues, index, out index, hand1, trigger1);
        AssignStructs.AssignHandStruct(handValues, index, out index, hand2, trigger2);
        AssignStructs.AssignHandStruct(handValues, index, out index, hand3, trigger3);
        AssignStructs.AssignHandStruct(handValues, index, out index, hand4, trigger4);
        _handBuffer.SetData(handValues);


        computeShader.SetInt("_NumberHands", 4);

        computeShader.SetFloat("_DeltaTime", Time.deltaTime);
        computeShader.SetFloat("_Time", Time.time);

        computeShader.SetInt("_RibbonWidth", ribbonWidth);
        computeShader.SetInt("_RibbonLength", ribbonLength);


        computeShader.SetBuffer(_kernel, "transBuffer", _transBuffer);
        computeShader.SetBuffer(_kernel, "vertBuffer", _vertBuffer);
        computeShader.SetBuffer(_kernel, "ogBuffer", _ogBuffer);
        computeShader.SetBuffer(_kernel, "handBuffer", _handBuffer);

        computeShader.Dispatch(_kernel, strideX, strideY, strideZ);
    }
Ejemplo n.º 2
0
    private void Dispatch()
    {
        AssignStructs.AssignTransBuffer(transform, transValues, _transBuffer);
        AssignStructs.AssignDisformerBuffer(Disformers, disformValues, _disformBuffer);
        AssignStructs.AssignHandBuffer(Hands, handValues, _handBuffer);

        computeShader.SetInt("_NumDisformers", numDisformers);
        computeShader.SetInt("_NumberHands", Hands.Length);

        computeShader.SetFloat("_DeltaTime", Time.deltaTime);
        computeShader.SetFloat("_Time", Time.time);
        computeShader.SetInt("_RibbonWidth", ribbonWidth);
        computeShader.SetInt("_RibbonLength", ribbonLength);

        audioTexture = audioObj.GetComponent <audioSourceTexture>().AudioTexture;

        computeShader.SetTexture(_kernel, "_Audio", audioTexture);

        computeShader.SetBuffer(_kernel, "transBuffer", _transBuffer);
        computeShader.SetBuffer(_kernel, "vertBuffer", _vertBuffer);
        computeShader.SetBuffer(_kernel, "ogBuffer", _ogBuffer);
        computeShader.SetBuffer(_kernel, "disformBuffer", _disformBuffer);
        computeShader.SetBuffer(_kernel, "handBuffer", _handBuffer);

        computeShader.Dispatch(_kernel, strideX, strideY, strideZ);
    }
Ejemplo n.º 3
0
    private void Dispatch()
    {
        //audioTexture = pedestal.GetComponent<audioSourceTexture>().AudioTexture;

        AssignStructs.AssignTransBuffer(transform, transValues, _transBuffer);
        //AssignStructs.AssignDisformerBuffer( Disformers , disformValues , _disformBuffer );


        physics.SetInt("_NumberHands", handBufferInfo.GetComponent <HandBuffer>().numberHands);

        physics.SetFloat("_DeltaTime", Time.deltaTime);
        physics.SetFloat("_Time", Time.time);



        //physics.SetTexture(_kernel,"_Audio", audioTexture);

        physics.SetBuffer(_kernel, "transBuffer", _transBuffer);
        physics.SetBuffer(_kernel, "vertBuffer", _vertBuffer);
        //physics.SetBuffer( _kernel , "disformBuffer", _disformBuffer  );
        physics.SetBuffer(_kernel, "handBuffer", handBufferInfo.GetComponent <HandBuffer>()._handBuffer);

        physics.Dispatch(_kernel, strideX, strideY, strideZ);
    }
Ejemplo n.º 4
0
    private void createBuffers()
    {
        _vertBuffer  = new ComputeBuffer(vertexCount, AssignStructs.VertC4StructSize * sizeof(float));
        _ogBuffer    = new ComputeBuffer(vertexCount, 3 * sizeof(float));
        _transBuffer = new ComputeBuffer(32, sizeof(float));
        _handBuffer  = new ComputeBuffer(4, AssignStructs.HandStructSize * sizeof(float));

        inValues = new float[AssignStructs.VertC4StructSize * vertexCount];
        float[] ogValues = new float[3 * vertexCount];

        // Used for assigning to our buffer;
        int index   = 0;
        int indexOG = 0;


        for (int z = 0; z < gridZ; z++)
        {
            for (int y = 0; y < gridY; y++)
            {
                for (int x = 0; x < gridX; x++)
                {
                    int id = x + y * gridX + z * gridX * gridY;

                    float col = (float)(id % ribbonWidth);
                    float row = Mathf.Floor(((float)id + .01f) / ribbonWidth);


                    float uvX = col / ribbonWidth;
                    float uvY = row / ribbonLength;

                    Vector3 fVec = getVertPosition(uvX, uvY);


                    //pos
                    ogValues[indexOG++] = fVec.x;
                    ogValues[indexOG++] = fVec.y;
                    ogValues[indexOG++] = fVec.z;

                    AssignStructs.VertC4 vert = new AssignStructs.VertC4();


                    vert.pos      = fVec * .9f;
                    vert.vel      = new Vector3(0, 0, 0);
                    vert.nor      = new Vector3(0, 1, 0);
                    vert.uv       = new Vector2(uvX, uvY);
                    vert.ribbonID = 0;
                    vert.life     = -1;
                    vert.debug    = new Vector3(0, 1, 0);
                    vert.row      = row;
                    vert.col      = col;

                    vert.lID = convertToID(col - 1, row + 0);
                    vert.rID = convertToID(col + 1, row + 0);
                    vert.uID = convertToID(col + 0, row + 1);
                    vert.dID = convertToID(col + 0, row - 1);

                    AssignStructs.AssignVertC4Struct(inValues, index, out index, vert);
                }
            }
        }

        _vertBuffer.SetData(inValues);
        _ogBuffer.SetData(ogValues);
    }
Ejemplo n.º 5
0
 void Update()
 {
     AssignStructs.AssignHandBuffer(Hands, handValues, _handBuffer);
 }