Ejemplo n.º 1
0
        public override bool PaintRenderTexture(StrokeVector stroke, ImageData image, BrushConfig bc, PlaytimePainter pntr)
        {
            var vt = pntr.GetVolumeTexture();

            if (vt != null)
            {
                BrushTypeSphere.Inst.BeforeStroke(pntr, bc, stroke);

                Shader.SetGlobalVector(VOLUME_POSITION_N_SIZE + "_BRUSH", vt.PosNsize4Shader);
                Shader.SetGlobalVector(VOLUME_H_SLICES + "_BRUSH", vt.Slices4Shader);
                if (stroke.mouseDwn)
                {
                    stroke.posFrom = stroke.posTo;
                }

                stroke.useTexcoord2 = false;

                TexMGMT.ShaderPrepareStroke(bc, bc.speed * 0.05f, image, stroke, pntr);
                stroke.SetWorldPosInShader();

                TexMGMT.brushRendy.FullScreenQuad();

                TexMGMT.Render();

                BrushTypeSphere.Inst.AfterStroke(pntr, bc, stroke);

                return(true);
            }
            return(false);
        }
Ejemplo n.º 2
0
            public void PaintRenderTexture(StrokeVector stroke, TextureMeta image, BrushConfig bc,
                                           PlaytimePainter painter)
            {
                var vt = painter.GetVolumeTexture();

                if (!vt)
                {
                    Debug.LogError("Painted volume was not found");
                    return;
                }

                if (_enableRayTracing)
                {
                    rayTraceCameraConfiguration.From(stroke);

                    bc.useAlphaBuffer = false;

                    delayedPaintingConfiguration = new BrushStrokePainterImage(stroke, image, bc, painter);

                    PainterCamera.GetProjectorCamera().RenderRightNow(this);
                }
                else
                {
                    PaintRenderTexture(new BrushStrokePainterImage(stroke, image, bc, painter));
                }
            }
Ejemplo n.º 3
0
 public override Shader GetBrushShaderDoubleBuffer(PlaytimePainter p)
 {
     if (p.GetVolumeTexture() != null)
     {
         return(brush);
     }
     return(null);
 }
Ejemplo n.º 4
0
 public override Shader GetPreviewShader(PlaytimePainter p)
 {
     if (p.GetVolumeTexture() != null)
     {
         return(preview);
     }
     return(null);
 }
Ejemplo n.º 5
0
 public override bool IsA3Dbrush(PlaytimePainter pntr, BrushConfig bc, ref bool overrideOther)
 {
     if (pntr.GetVolumeTexture() != null)
     {
         overrideOther = true;
         return(true);
     }
     return(false);
 }
Ejemplo n.º 6
0
 public bool IsA3DBrush(PlaytimePainter painter, BrushConfig bc, ref bool overrideOther)
 {
     if (!painter.GetVolumeTexture())
     {
         return(false);
     }
     overrideOther = true;
     return(true);
 }
Ejemplo n.º 7
0
 public bool NeedsGrid(PlaytimePainter p)
 {
     return(useGrid && p.GetVolumeTexture() != null);
 }
Ejemplo n.º 8
0
        public bool BrushConfigPEGI(ref bool overrideBlitMode, BrushConfig br)
        {
            bool changed = false;

            PlaytimePainter p = InspectedPainter;

            var volTex = p.GetVolumeTexture();

            if (volTex != null)
            {
                overrideBlitMode = true;

                var id = p.ImgData;

                "Grid".toggle(50, ref useGrid).nl();

                if ((volTex.name + " " + id.texture2D.VolumeSize(volTex.h_slices).ToString()).foldout(ref exploreVolumeData).nl())
                {
                    changed |= volTex.Nested_Inspect();
                }

                if (volTex.NeedsToManageMaterials)
                {
                    var pmat = InspectedPainter.Material;
                    if (pmat != null)
                    {
                        if (!volTex.materials.Contains(pmat))
                        {
                            if ("Add This Material".Click().nl())
                            {
                                volTex.AddIfNew(p);
                            }
                        }
                    }
                }

                bool cpuBlit = id.TargetIsTexture2D();

                pegi.newLine();

                if (!cpuBlit)
                {
                    changed |= "Hardness:".edit("Makes edges more rough.", 70, ref br.Hardness, 1f, 512f).nl();
                }

                changed |= "Speed".edit(40, ref br.speed, 0.01f, 20).nl();

                float maxScale = volTex.size * volTex.Width * 0.25f;

                changed |= "Scale:".edit(40, ref br.Brush3D_Radius, 0.001f * maxScale, maxScale * 0.5f).nl();

                if ((br.BlitMode.UsingSourceTexture) && (id == null || id.TargetIsRenderTexture()))
                {
                    if (TexMGMTdata.sourceTextures.Count > 0)
                    {
                        pegi.write("Copy From:", 70);
                        changed |= pegi.selectOrAdd(ref br.selectedSourceTexture, ref TexMGMTdata.sourceTextures);
                    }
                    else
                    {
                        "Add Textures to Render Camera to copy from".nl();
                    }
                }
            }
            if (changed)
            {
                this.SetToDirty();
            }

            return(changed);
        }
Ejemplo n.º 9
0
 public Shader GetBrushShaderDoubleBuffer(PlaytimePainter p) =>
 p.GetVolumeTexture() ? (_enableRayTracing ? _brushShaderFroRayTrace : _brush) : null;
Ejemplo n.º 10
0
 public Shader GetPreviewShader(PlaytimePainter p) => p.GetVolumeTexture() ? _preview : null;