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); }
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)); } }
public override Shader GetBrushShaderDoubleBuffer(PlaytimePainter p) { if (p.GetVolumeTexture() != null) { return(brush); } return(null); }
public override Shader GetPreviewShader(PlaytimePainter p) { if (p.GetVolumeTexture() != null) { return(preview); } return(null); }
public override bool IsA3Dbrush(PlaytimePainter pntr, BrushConfig bc, ref bool overrideOther) { if (pntr.GetVolumeTexture() != null) { overrideOther = true; return(true); } return(false); }
public bool IsA3DBrush(PlaytimePainter painter, BrushConfig bc, ref bool overrideOther) { if (!painter.GetVolumeTexture()) { return(false); } overrideOther = true; return(true); }
public bool NeedsGrid(PlaytimePainter p) { return(useGrid && p.GetVolumeTexture() != null); }
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); }
public Shader GetBrushShaderDoubleBuffer(PlaytimePainter p) => p.GetVolumeTexture() ? (_enableRayTracing ? _brushShaderFroRayTrace : _brush) : null;
public Shader GetPreviewShader(PlaytimePainter p) => p.GetVolumeTexture() ? _preview : null;