public void AddMultistepOrder(MultistepRenderingProcessOrder <Texture, TextureRenderingTemplate> processOrder) { var template = processOrder.Order; Preconditions.Assert(template.RenderingRectangle == null, "E781: Cannot render multistep when filling RenderTexture!"); var outTextureInfo = template.OutTextureInfo; var shaderName = template.ShaderName; var pack = template.UniformPack; var material = new Material(Shader.Find(shaderName)); template.Keywords.EnableInMaterial(material); pack.SetUniformsToMaterial(material); var renderTextureFormat = template.RenderTextureFormat; MultistepTextureRenderingInput input = new MultistepTextureRenderingInput() { MultistepCoordUniform = new MultistepRenderingCoordUniform( new Vector4( template.Coords.X, template.Coords.Y, template.Coords.Width, template.Coords.Height ), "_Coords"), OutTextureinfo = outTextureInfo, RenderTextureInfoFormat = renderTextureFormat, RenderMaterial = material, StepSize = _configuration.StepSize, CreateTexture2D = template.CreateTexture2D }; _multistepTextureRenderer.StartRendering(input); _multistepProcessOrder = processOrder; }
public void Update() { if (_multistepTextureRenderer.IsActive) { if (_multistepTextureRenderer.RenderingCompleted()) { var texture = _multistepTextureRenderer.RetriveRenderedTexture(); _multistepProcessOrder.Tcs.SetResult(texture); _multistepProcessOrder = null; } else { _multistepTextureRenderer.Update(); } } }