public void Blit(Texture tex, ImageData id) { if (tex == null || id == null) { return; } brushRendy.Set(Data.pixPerfectCopy); Graphics.Blit(tex, id.CurrentRenderTexture(), brushRendy.meshRendy.sharedMaterial); AfterRenderBlit(id.CurrentRenderTexture()); }
public void Set(ImageData from, int globalOrder) { PainterCamera.Inst.Blit(from.CurrentRenderTexture(), rt); SetB(from, globalOrder); exclusive = from.renderTexture != null; }
public RenderTextureBackup(ImageData from, int globalOrder) { RenderTexture frt = from.CurrentRenderTexture(); rt = new RenderTexture(from.width, from.height, 0, RenderTextureFormat.ARGB32, frt.sRGB ? RenderTextureReadWrite.sRGB : RenderTextureReadWrite.Linear); rt.filterMode = frt.filterMode; Set(from, globalOrder); }
public void ShaderPrepareStroke(BrushConfig bc, float brushAlpha, ImageData id, StrokeVector stroke, PlaytimePainter pntr) { if (BigRT_pair == null) { UpdateBuffersState(); } bool isDoubleBuffer = (id.renderTexture == null); bool useSingle = (!isDoubleBuffer) || bc.IsSingleBufferBrush(); if ((!useSingle) && (!secondBufferUpdated)) { UpdateBufferTwo(); } if (stroke.firstStroke) { Shader_BrushCFG_Update(bc, brushAlpha, id.width, id.TargetIsRenderTexture(), stroke.useTexcoord2, pntr); } rtcam.targetTexture = id.CurrentRenderTexture(); if (isDoubleBuffer) { Shader.SetGlobalTexture(PainterDataAndConfig.DESTINATION_BUFFER, BigRT_pair[1]); } Shader shd = null; if (pntr != null) { foreach (var pl in Plugins) { Shader bs = useSingle ? pl.GetBrushShaderSingleBuffer(pntr) : pl.GetBrushShaderDoubleBuffer(pntr); if (bs != null) { shd = bs; break; } } } if (shd == null) { shd = useSingle ? bc.BlitMode.ShaderForSingleBuffer : bc.BlitMode.ShaderForDoubleBuffer; } brushRendy.Set(shd); }
public RenderTexture Render(Texture from, ImageData to) => Render(from, to.CurrentRenderTexture(), Data.brushRendy_bufferCopy);