Exemple #1
0
        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());
        }
Exemple #2
0
        public void Set(ImageData from, int globalOrder)
        {
            PainterCamera.Inst.Blit(from.CurrentRenderTexture(), rt);

            SetB(from, globalOrder);

            exclusive = from.renderTexture != null;
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public RenderTexture Render(Texture from, ImageData to) => Render(from, to.CurrentRenderTexture(), Data.brushRendy_bufferCopy);