示例#1
0
 void Start()
 {
     currentCamera = 0;
     cameraList = new List<Camera>();
     Camera[] cameraArray = FindObjectsOfType<Camera>();
     foreach (Camera camera in cameraArray) {
         if (camera.tag != "MainCamera") {
             cameraList.Add(camera);
         }
     }
     bufferTexture = FindObjectOfType<BufferTexture>();
 }
示例#2
0
 void Start()
 {
     currentCamera = 0;
     cameraList    = new List <Camera>();
     Camera[] cameraArray = FindObjectsOfType <Camera>();
     foreach (Camera camera in cameraArray)
     {
         if (camera.tag != "MainCamera")
         {
             cameraList.Add(camera);
         }
     }
     bufferTexture = FindObjectOfType <BufferTexture>();
 }
        public void UpdateBuffers()
        {
            if (mappingData == null | ColorData == null)
            {
                mappingData = new GPUBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.TextureBuffer);
                ColorData   = new BufferTexture();
            }

            Vector4[] cols = new Vector4[Voxels.Count];
            for (int i = 0; i < cols.Length; i++)
            {
                cols[i] = Voxels[i].Color;
            }

            mappingData.BufferData(0, cols, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);
            ColorData.SetStorage(mappingData, OpenTK.Graphics.OpenGL4.SizedInternalFormat.Rgba32f);
        }
    void OnEnable()
    {
        kernelMat = CreateMaterial(kernel);
        shaderMat = CreateMaterial(shader);

        var height = numberOfDraw / 4096 + 1;
        var width  = 4096;

        if (height == 1)
        {
            width = numberOfDraw % 4096;
        }
        translateBuff = new BufferTexture(width, height, kernelMat);
        rotationBuff  = new BufferTexture(width, height, kernelMat);
        scaleBuff     = new BufferTexture(width, height, kernelMat);
        velocityBuff  = new BufferTexture(width, height, kernelMat);
        initBuff      = new BufferTexture(width, height, kernelMat);

        shaderMat.SetVector("_Offset", translateBuff.Texture.texelSize);

        shaderMat.SetTexture("_TranslateBuff", translateBuff.Texture);
        shaderMat.SetTexture("_RotationBuff", rotationBuff.Texture);
        shaderMat.SetTexture("_ScaleBuff", scaleBuff.Texture);

        kernelMat.SetTexture("_TranslateBuff", translateBuff.Texture);
        kernelMat.SetTexture("_RotationBuff", rotationBuff.Texture);
        kernelMat.SetTexture("_ScaleBuff", scaleBuff.Texture);
        kernelMat.SetTexture("_VelocityBuff", velocityBuff.Texture);
        kernelMat.SetTexture("_InitBuff", initBuff.Texture);

        kernelMat.SetFloat("_DeltaTime", Time.deltaTime);
        kernelMat.SetVector("_Bounds", bounds);
        kernelMat.SetVector("_Offset", translateBuff.Texture.texelSize);

        initBuff.Blit(0);
        translateBuff.Blit(1);
        rotationBuff.Blit(2);
        scaleBuff.Blit(3);
        velocityBuff.Blit(4);
        initBuff.Blit(5);
    }