Exemplo n.º 1
0
        private ComputeShaderCreatedParametersContainer CreateParameters(
            ComputeShaderParametersContainer parametersContainer)
        {
            var createdParameters = new ComputeShaderCreatedParametersContainer();

            foreach (var pair in parametersContainer.ArleadyCreatedTextures)
            {
                createdParameters.AddTexture(pair.Key, pair.Value);
            }

            foreach (var pair in parametersContainer.ComputeShaderTextureTemplates)
            {
                createdParameters.AddTexture(pair.Key, CreateTexture(pair.Value));
            }

            foreach (var pair in parametersContainer.ArleadyCreatedComputeBufferTemplates)
            {
                createdParameters.AddBuffer(pair.Key, pair.Value);
            }

            foreach (var pair in parametersContainer.ComputeBufferTemplates)
            {
                var createdBuffer = CreateBuffer(pair.Value);
                if (pair.Value.BufferData != null)
                {
                    createdBuffer.SetData(pair.Value.BufferData);
                }
                createdParameters.AddBuffer(pair.Key, createdBuffer);
            }
            return(createdParameters);
        }
Exemplo n.º 2
0
 private static void FinalizeParameters(
     ComputeShaderParametersContainer parametersContainer,
     ComputeShaderCreatedParametersContainer createdParameters,
     ComputeBufferRequestedOutParameters outParameters)
 {
     foreach (var pair in createdParameters.Textures)
     {
         if (outParameters.IsRequestedTextureId(pair.Key))
         {
             outParameters.AddTexture(pair.Key, pair.Value);
         }
         else
         {
             if (!parametersContainer.ArleadyCreatedTextures.ContainsKey(pair.Key))
             {
                 (pair.Value as RenderTexture)?.Release();
             }
         }
     }
     foreach (var pair in createdParameters.Buffers)
     {
         if (outParameters.IsRequestedBufferId(pair.Key))
         {
             outParameters.AddBuffer(pair.Key, pair.Value);
         }
         else
         {
             if (!parametersContainer.ArleadyCreatedComputeBufferTemplates.ContainsKey(pair.Key))
             {
                 //pair.Value.Dispose();//todo repair
             }
         }
     }
 }