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); }
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 } } } }