diff --git a/Sources/arm/render/Uniforms.hx b/Sources/arm/render/Uniforms.hx index 9d9c648a..7596d241 100644 --- a/Sources/arm/render/Uniforms.hx +++ b/Sources/arm/render/Uniforms.hx @@ -28,129 +28,133 @@ class Uniforms { public static function linkFloat(object: Object, mat: MaterialData, link: String): Null { #if arm_painter - if (link == "_brushRadius") { - var val = (Context.brushRadius * Context.brushNodesRadius) / 15.0; - var pen = Input.getPen(); - if (Config.raw.pressure_radius && pen.down()) { - val *= pen.pressure * Config.raw.pressure_sensitivity; + switch (link) { + case "_brushRadius": { + var val = (Context.brushRadius * Context.brushNodesRadius) / 15.0; + var pen = Input.getPen(); + if (Config.raw.pressure_radius && pen.down()) { + val *= pen.pressure * Config.raw.pressure_sensitivity; + } + var scale2d = (900 / App.h()) * Config.raw.window_scale; + var decal = Context.tool == ToolDecal || Context.tool == ToolText; + if (Config.raw.brush_3d && !decal) { + val *= Context.paint2d ? 0.55 * scale2d : 2; + } + else { + val *= scale2d; // Projection ratio + } + return val; } - var scale2d = (900 / App.h()) * Config.raw.window_scale; - var decal = Context.tool == ToolDecal || Context.tool == ToolText; - if (Config.raw.brush_3d && !decal) { - val *= Context.paint2d ? 0.55 * scale2d : 2; + case "_brushScaleX": { + return 1 / Context.brushScaleX; } - else { - val *= scale2d; // Projection ratio + case "_brushOpacity": { + var val = Context.brushOpacity * Context.brushNodesOpacity; + var pen = Input.getPen(); + if (Config.raw.pressure_opacity && pen.down()) { + val *= pen.pressure * Config.raw.pressure_sensitivity; + } + return val; } - return val; - } - if (link == "_brushScaleX") { - return 1 / Context.brushScaleX; - } - if (link == "_brushOpacity") { - var val = Context.brushOpacity * Context.brushNodesOpacity; - var pen = Input.getPen(); - if (Config.raw.pressure_opacity && pen.down()) { - val *= pen.pressure * Config.raw.pressure_sensitivity; + case "_brushHardness": { + if (Context.tool != ToolBrush && Context.tool != ToolEraser) return 1.0; + var val = Context.brushHardness * Context.brushNodesHardness; + var pen = Input.getPen(); + if (Config.raw.pressure_hardness && pen.down()) { + val *= pen.pressure * Config.raw.pressure_sensitivity; + } + if (Config.raw.brush_3d && !Context.paint2d) { + val *= val; + } + return val; } - return val; - } - if (link == "_brushHardness") { - if (Context.tool != ToolBrush && Context.tool != ToolEraser) return 1.0; - var val = Context.brushHardness * Context.brushNodesHardness; - var pen = Input.getPen(); - if (Config.raw.pressure_hardness && pen.down()) { - val *= pen.pressure * Config.raw.pressure_sensitivity; + case "_brushScale": { + var fill = Context.layer.fill_layer != null; + var val = (fill ? Context.layer.scale : Context.brushScale) * Context.brushNodesScale; + return val; } - if (Config.raw.brush_3d && !Context.paint2d) { - val *= val; + case "_objectId": { + return Project.paintObjects.indexOf(Context.paintObject); } - return val; - } - if (link == "_brushScale") { - var fill = Context.layer.fill_layer != null; - var val = (fill ? Context.layer.scale : Context.brushScale) * Context.brushNodesScale; - return val; - } - if (link == "_objectId") { - return Project.paintObjects.indexOf(Context.paintObject); - } - #end - #if arm_world - if (link == "_voxelgiHalfExtentsUni") { - #if arm_painter - return Context.vxaoExt; - #else - return 10.0; #end - } - #end - if (link == "_vignetteStrength") { - #if arm_painter - return Config.raw.rp_vignette; - #else - return 0.4; - #end - } - if (link == "_coneOffset") { - #if arm_painter - return Context.vxaoOffset; - #else - return 1.5; - #end - } - if (link == "_coneAperture") { - #if arm_painter - return Context.vxaoAperture; - #else - return 1.2; - #end - } - if (link == "_dilateRadius") { - #if arm_painter - return Context.dilateRadius; - #else - return 8.0; + #if arm_world + case "_voxelgiHalfExtentsUni": { + #if arm_painter + return Context.vxaoExt; + #else + return 10.0; + #end + } #end + case "_vignetteStrength": { + #if arm_painter + return Config.raw.rp_vignette; + #else + return 0.4; + #end + } + case "_coneOffset": { + #if arm_painter + return Context.vxaoOffset; + #else + return 1.5; + #end + } + case "_coneAperture": { + #if arm_painter + return Context.vxaoAperture; + #else + return 1.2; + #end + } + case "_dilateRadius": { + #if arm_painter + return Context.dilateRadius; + #else + return 8.0; + #end + } } return null; } public static function linkVec2(object: Object, mat: MaterialData, link: String): iron.math.Vec4 { #if arm_painter - if (link == "_sub") { - Context.sub = (Context.sub + 1) % 4; - var eps = Context.brushBias * 0.00022 * Config.getTextureResBias(); - Context.sub == 0 ? vec.set(eps, eps, 0.0) : - Context.sub == 1 ? vec.set(eps, -eps, 0.0) : - Context.sub == 2 ? vec.set(-eps, -eps, 0.0) : - vec.set(-eps, eps, 0.0); - return vec; - } - if (link == "_gbufferSize") { - vec.set(0, 0, 0); - var gbuffer2 = RenderPath.active.renderTargets.get("gbuffer2"); - vec.set(gbuffer2.image.width, gbuffer2.image.height, 0); - return vec; - } - if (link == "_cloneDelta") { - vec.set(Context.cloneDeltaX, Context.cloneDeltaY, 0); - return vec; - } - if (link == "_brushAngle") { - var brushAngle = Context.brushAngle + Context.brushNodesAngle; - var angle = Context.layer.fill_layer != null ? Context.layer.angle : brushAngle; - angle *= (Math.PI / 180); - var pen = Input.getPen(); - if (Config.raw.pressure_angle && pen.down()) { - angle *= pen.pressure * Config.raw.pressure_sensitivity; + switch (link) { + case "_sub": { + Context.sub = (Context.sub + 1) % 4; + var eps = Context.brushBias * 0.00022 * Config.getTextureResBias(); + Context.sub == 0 ? vec.set(eps, eps, 0.0) : + Context.sub == 1 ? vec.set(eps, -eps, 0.0) : + Context.sub == 2 ? vec.set(-eps, -eps, 0.0) : + vec.set(-eps, eps, 0.0); + return vec; + } + case "_gbufferSize": { + vec.set(0, 0, 0); + var gbuffer2 = RenderPath.active.renderTargets.get("gbuffer2"); + vec.set(gbuffer2.image.width, gbuffer2.image.height, 0); + return vec; + } + case "_cloneDelta": { + vec.set(Context.cloneDeltaX, Context.cloneDeltaY, 0); + return vec; + } + case "_brushAngle": { + var brushAngle = Context.brushAngle + Context.brushNodesAngle; + var angle = Context.layer.fill_layer != null ? Context.layer.angle : brushAngle; + angle *= (Math.PI / 180); + var pen = Input.getPen(); + if (Config.raw.pressure_angle && pen.down()) { + angle *= pen.pressure * Config.raw.pressure_sensitivity; + } + vec.set(Math.cos(angle), Math.sin(angle), 0); + return vec; + } + case "_texpaintSize": { + vec.set(Config.getTextureResX(), Config.getTextureResY(), 0); + return vec; } - vec.set(Math.cos(angle), Math.sin(angle), 0); - return vec; - } - if (link == "_texpaintSize") { - vec.set(Config.getTextureResX(), Config.getTextureResY(), 0); - return vec; } #end return null; @@ -158,285 +162,293 @@ class Uniforms { public static function linkVec3(object: Object, mat: MaterialData, link: String): iron.math.Vec4 { var v: Vec4 = null; - #if arm_world - if (link == "_hosekA") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); + switch (link) { + #if arm_world + case "_hosekA": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekA.x; + v.y = arm.data.HosekWilkie.data.hosekA.y; + v.z = arm.data.HosekWilkie.data.hosekA.z; + } + return v; } - if (arm.data.HosekWilkie.data != null) { + case "_hosekB": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekB.x; + v.y = arm.data.HosekWilkie.data.hosekB.y; + v.z = arm.data.HosekWilkie.data.hosekB.z; + } + return v; + } + case "_hosekC": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekC.x; + v.y = arm.data.HosekWilkie.data.hosekC.y; + v.z = arm.data.HosekWilkie.data.hosekC.z; + } + return v; + } + case "_hosekD": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekD.x; + v.y = arm.data.HosekWilkie.data.hosekD.y; + v.z = arm.data.HosekWilkie.data.hosekD.z; + } + return v; + } + case "_hosekE": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekE.x; + v.y = arm.data.HosekWilkie.data.hosekE.y; + v.z = arm.data.HosekWilkie.data.hosekE.z; + } + return v; + } + case "_hosekF": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekF.x; + v.y = arm.data.HosekWilkie.data.hosekF.y; + v.z = arm.data.HosekWilkie.data.hosekF.z; + } + return v; + } + case "_hosekG": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekG.x; + v.y = arm.data.HosekWilkie.data.hosekG.y; + v.z = arm.data.HosekWilkie.data.hosekG.z; + } + return v; + } + case "_hosekH": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekH.x; + v.y = arm.data.HosekWilkie.data.hosekH.y; + v.z = arm.data.HosekWilkie.data.hosekH.z; + } + return v; + } + case "_hosekI": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekI.x; + v.y = arm.data.HosekWilkie.data.hosekI.y; + v.z = arm.data.HosekWilkie.data.hosekI.z; + } + return v; + } + case "_hosekZ": { + if (arm.data.HosekWilkie.data == null) { + arm.data.HosekWilkie.recompute(Scene.active.world); + } + if (arm.data.HosekWilkie.data != null) { + v = iron.object.Uniforms.helpVec; + v.x = arm.data.HosekWilkie.data.hosekZ.x; + v.y = arm.data.HosekWilkie.data.hosekZ.y; + v.z = arm.data.HosekWilkie.data.hosekZ.z; + } + return v; + } + #end + #if arm_painter + case "_brushDirection": { v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekA.x; - v.y = arm.data.HosekWilkie.data.hosekA.y; - v.z = arm.data.HosekWilkie.data.hosekA.z; + // Discard first paint for directional brush + var allowPaint = Context.prevPaintVecX != Context.lastPaintVecX && + Context.prevPaintVecY != Context.lastPaintVecY && + Context.prevPaintVecX > 0 && + Context.prevPaintVecY > 0; + var x = Context.paintVec.x; + var y = Context.paintVec.y; + var lastx = Context.prevPaintVecX; + var lasty = Context.prevPaintVecY; + if (Context.paint2d) { x -= 1.0; lastx -= 1.0; } + var angle = Math.atan2(-y + lasty, x - lastx) - Math.PI / 2; + v.set(Math.cos(angle), Math.sin(angle), allowPaint ? 1 : 0); + Context.prevPaintVecX = Context.lastPaintVecX; + Context.prevPaintVecY = Context.lastPaintVecY; + return v; } - return v; + #end } - if (link == "_hosekB") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekB.x; - v.y = arm.data.HosekWilkie.data.hosekB.y; - v.z = arm.data.HosekWilkie.data.hosekB.z; - } - return v; - } - if (link == "_hosekC") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekC.x; - v.y = arm.data.HosekWilkie.data.hosekC.y; - v.z = arm.data.HosekWilkie.data.hosekC.z; - } - return v; - } - if (link == "_hosekD") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekD.x; - v.y = arm.data.HosekWilkie.data.hosekD.y; - v.z = arm.data.HosekWilkie.data.hosekD.z; - } - return v; - } - if (link == "_hosekE") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekE.x; - v.y = arm.data.HosekWilkie.data.hosekE.y; - v.z = arm.data.HosekWilkie.data.hosekE.z; - } - return v; - } - if (link == "_hosekF") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekF.x; - v.y = arm.data.HosekWilkie.data.hosekF.y; - v.z = arm.data.HosekWilkie.data.hosekF.z; - } - return v; - } - if (link == "_hosekG") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekG.x; - v.y = arm.data.HosekWilkie.data.hosekG.y; - v.z = arm.data.HosekWilkie.data.hosekG.z; - } - return v; - } - if (link == "_hosekH") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekH.x; - v.y = arm.data.HosekWilkie.data.hosekH.y; - v.z = arm.data.HosekWilkie.data.hosekH.z; - } - return v; - } - if (link == "_hosekI") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekI.x; - v.y = arm.data.HosekWilkie.data.hosekI.y; - v.z = arm.data.HosekWilkie.data.hosekI.z; - } - return v; - } - if (link == "_hosekZ") { - if (arm.data.HosekWilkie.data == null) { - arm.data.HosekWilkie.recompute(Scene.active.world); - } - if (arm.data.HosekWilkie.data != null) { - v = iron.object.Uniforms.helpVec; - v.x = arm.data.HosekWilkie.data.hosekZ.x; - v.y = arm.data.HosekWilkie.data.hosekZ.y; - v.z = arm.data.HosekWilkie.data.hosekZ.z; - } - return v; - } - #end - #if arm_painter - if (link == "_brushDirection") { - v = iron.object.Uniforms.helpVec; - // Discard first paint for directional brush - var allowPaint = Context.prevPaintVecX != Context.lastPaintVecX && - Context.prevPaintVecY != Context.lastPaintVecY && - Context.prevPaintVecX > 0 && - Context.prevPaintVecY > 0; - var x = Context.paintVec.x; - var y = Context.paintVec.y; - var lastx = Context.prevPaintVecX; - var lasty = Context.prevPaintVecY; - if (Context.paint2d) { x -= 1.0; lastx -= 1.0; } - var angle = Math.atan2(-y + lasty, x - lastx) - Math.PI / 2; - v.set(Math.cos(angle), Math.sin(angle), allowPaint ? 1 : 0); - Context.prevPaintVecX = Context.lastPaintVecX; - Context.prevPaintVecY = Context.lastPaintVecY; - return v; - } - #end return v; } public static function linkVec4(object: Object, mat: MaterialData, link: String): iron.math.Vec4 { #if arm_painter - if (link == "_inputBrush") { - var down = Input.getMouse().down() || Input.getPen().down(); - vec.set(Context.paintVec.x, Context.paintVec.y, down ? 1.0 : 0.0, 0.0); - if (Context.paint2d) vec.x -= 1.0; - return vec; - } - if (link == "_inputBrushLast") { - var down = Input.getMouse().down() || Input.getPen().down(); - vec.set(Context.lastPaintVecX, Context.lastPaintVecY, down ? 1.0 : 0.0, 0.0); - if (Context.paint2d) vec.x -= 1.0; - return vec; - } - if (link == "_stencilTransform") { - vec.set(Context.brushStencilX, Context.brushStencilY, Context.brushStencilScale, Context.brushStencilAngle); - if (Context.paint2d) vec.x -= 1.0; - return vec; - } - if (link == "_envmapData") { - vec.set(Context.envmapAngle, Math.sin(-Context.envmapAngle), Math.cos(-Context.envmapAngle), Scene.active.world.probe.raw.strength); - return vec; + switch (link) { + case "_inputBrush": { + var down = Input.getMouse().down() || Input.getPen().down(); + vec.set(Context.paintVec.x, Context.paintVec.y, down ? 1.0 : 0.0, 0.0); + if (Context.paint2d) vec.x -= 1.0; + return vec; + } + case "_inputBrushLast": { + var down = Input.getMouse().down() || Input.getPen().down(); + vec.set(Context.lastPaintVecX, Context.lastPaintVecY, down ? 1.0 : 0.0, 0.0); + if (Context.paint2d) vec.x -= 1.0; + return vec; + } + case "_stencilTransform": { + vec.set(Context.brushStencilX, Context.brushStencilY, Context.brushStencilScale, Context.brushStencilAngle); + if (Context.paint2d) vec.x -= 1.0; + return vec; + } + case "_envmapData": { + vec.set(Context.envmapAngle, Math.sin(-Context.envmapAngle), Math.cos(-Context.envmapAngle), Scene.active.world.probe.raw.strength); + return vec; + } } #end return null; } public static function linkMat4(object: Object, mat: MaterialData, link: String): iron.math.Mat4 { - if (link == "_decalLayerMatrix") { // Decal layer - var camera = Scene.active.camera; - var m = iron.object.Uniforms.helpMat; - m.setFrom(Context.layer.decalMat); - m.getInverse(m); - m.multmat(camera.P); - return m; + switch (link) { + case "_decalLayerMatrix": { // Decal layer + var camera = Scene.active.camera; + var m = iron.object.Uniforms.helpMat; + m.setFrom(Context.layer.decalMat); + m.getInverse(m); + m.multmat(camera.P); + return m; + } } return null; } public static function linkTex(object: Object, mat: MaterialData, link: String): kha.Image { #if arm_painter - if (link == "_texcolorid") { - if (Project.assets.length == 0) return RenderPath.active.renderTargets.get("empty_white").image; - else return UISidebar.inst.getImage(Project.assets[Context.colorIdHandle.position]); - } - if (link == "_texuvmap") { - if (!UVUtil.uvmapCached) { - function _render(_) { - UVUtil.cacheUVMap(); - iron.App.removeRender(_render); - } - iron.App.notifyOnRender(_render); + switch (link) { + case "_texcolorid": { + if (Project.assets.length == 0) return RenderPath.active.renderTargets.get("empty_white").image; + else return UISidebar.inst.getImage(Project.assets[Context.colorIdHandle.position]); } - return UVUtil.uvmap; - } - if (link == "_textrianglemap") { - if (!UVUtil.trianglemapCached) { - function _render(_) { - UVUtil.cacheTriangleMap(); - iron.App.removeRender(_render); + case "_texuvmap": { + if (!UVUtil.uvmapCached) { + function _render(_) { + UVUtil.cacheUVMap(); + iron.App.removeRender(_render); + } + iron.App.notifyOnRender(_render); } - iron.App.notifyOnRender(_render); + return UVUtil.uvmap; + } + case "_textrianglemap": { + if (!UVUtil.trianglemapCached) { + function _render(_) { + UVUtil.cacheTriangleMap(); + iron.App.removeRender(_render); + } + iron.App.notifyOnRender(_render); + } + return UVUtil.trianglemap; + } + case "_textexttool": { // Opacity map for text + return Context.textToolImage; + } + case "_texbrushmask": { + return Context.brushMaskImage; + } + case "_texbrushstencil": { + return Context.brushStencilImage; + } + case "_texpaint_undo": { + var i = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1; + return RenderPath.active.renderTargets.get("texpaint_undo" + i).image; + } + case "_texpaint_nor_undo": { + var i = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1; + return RenderPath.active.renderTargets.get("texpaint_nor_undo" + i).image; + } + case "_texpaint_pack_undo": { + var i = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1; + return RenderPath.active.renderTargets.get("texpaint_pack_undo" + i).image; + } + if (link.startsWith("_texpaint_pack_vert")) { + var tid = link.substr(link.length - 1); + return RenderPath.active.renderTargets.get("texpaint_pack" + tid).image; + } + if (link.startsWith("_texpaint_mask_vert")) { + var tid = Std.parseInt(link.substr(link.length - 1)); + return Project.layers[tid].texpaint_mask; } - return UVUtil.trianglemap; - } - if (link == "_textexttool") { // Opacity map for text - return Context.textToolImage; - } - if (link == "_texbrushmask") { - return Context.brushMaskImage; - } - if (link == "_texbrushstencil") { - return Context.brushStencilImage; - } - if (link == "_texpaint_undo") { - var i = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1; - return RenderPath.active.renderTargets.get("texpaint_undo" + i).image; - } - if (link == "_texpaint_nor_undo") { - var i = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1; - return RenderPath.active.renderTargets.get("texpaint_nor_undo" + i).image; - } - if (link == "_texpaint_pack_undo") { - var i = History.undoI - 1 < 0 ? Config.raw.undo_steps - 1 : History.undoI - 1; - return RenderPath.active.renderTargets.get("texpaint_pack_undo" + i).image; - } - if (link.startsWith("_texpaint_pack_vert")) { - var tid = link.substr(link.length - 1); - return RenderPath.active.renderTargets.get("texpaint_pack" + tid).image; - } - if (link.startsWith("_texpaint_mask_vert")) { - var tid = Std.parseInt(link.substr(link.length - 1)); - return Project.layers[tid].texpaint_mask; - } - if (link == "_texpaint_mask") { - return Context.layer.texpaint_mask; - } - if (link.startsWith("_texpaint_mask")) { - var tid = Std.parseInt(link.substr(link.length - 1)); - return tid < Project.layers.length ? Project.layers[tid].texpaint_mask : null; - } - if (link.startsWith("_texpaint_nor")) { - var tid = Std.parseInt(link.substr(link.length - 1)); - return tid < Project.layers.length ? Project.layers[tid].texpaint_nor : null; - } - if (link.startsWith("_texpaint_pack")) { - var tid = Std.parseInt(link.substr(link.length - 1)); - return tid < Project.layers.length ? Project.layers[tid].texpaint_pack : null; - } - if (link.startsWith("_texpaint")) { - var tid = Std.parseInt(link.substr(link.length - 1)); - return tid < Project.layers.length ? Project.layers[tid].texpaint : null; - } + case "_texpaint_mask": { + return Context.layer.texpaint_mask; + } + if (link.startsWith("_texpaint_mask")) { + var tid = Std.parseInt(link.substr(link.length - 1)); + return tid < Project.layers.length ? Project.layers[tid].texpaint_mask : null; + } + if (link.startsWith("_texpaint_nor")) { + var tid = Std.parseInt(link.substr(link.length - 1)); + return tid < Project.layers.length ? Project.layers[tid].texpaint_nor : null; + } + if (link.startsWith("_texpaint_pack")) { + var tid = Std.parseInt(link.substr(link.length - 1)); + return tid < Project.layers.length ? Project.layers[tid].texpaint_pack : null; + } + if (link.startsWith("_texpaint")) { + var tid = Std.parseInt(link.substr(link.length - 1)); + return tid < Project.layers.length ? Project.layers[tid].texpaint : null; + } - if (link.startsWith("_texblur_")) { - var id = link.substr(9); - return Context.nodePreviewsBlur != null ? Context.nodePreviewsBlur.get(id) : RenderPath.active.renderTargets.get("empty_black").image; + if (link.startsWith("_texblur_")) { + var id = link.substr(9); + return Context.nodePreviewsBlur != null ? Context.nodePreviewsBlur.get(id) : RenderPath.active.renderTargets.get("empty_black").image; + } + case "_texparticle": { + return RenderPath.active.renderTargets.get("texparticle").image; + } + #end + #if arm_ltc + case "_ltcMat": { + if (arm.data.ConstData.ltcMatTex == null) arm.data.ConstData.initLTC(); + return arm.data.ConstData.ltcMatTex; + } + case "_ltcMag": { + if (arm.data.ConstData.ltcMagTex == null) arm.data.ConstData.initLTC(); + return arm.data.ConstData.ltcMagTex; + } + #end } - if (link == "_texparticle") { - return RenderPath.active.renderTargets.get("texparticle").image; - } - #end - #if arm_ltc - if (link == "_ltcMat") { - if (arm.data.ConstData.ltcMatTex == null) arm.data.ConstData.initLTC(); - return arm.data.ConstData.ltcMatTex; - } - if (link == "_ltcMag") { - if (arm.data.ConstData.ltcMagTex == null) arm.data.ConstData.initLTC(); - return arm.data.ConstData.ltcMagTex; - } - #end return null; } } diff --git a/Sources/arm/ui/UINodes.hx b/Sources/arm/ui/UINodes.hx index 1097d8a3..62b77ce1 100644 --- a/Sources/arm/ui/UINodes.hx +++ b/Sources/arm/ui/UINodes.hx @@ -318,8 +318,6 @@ class UINodes { Context.nodePreviewSocket = 0; } - if (Config.raw.node_preview && Context.nodePreviewDirty) makeNodePreview(); - if (!show) return; if (System.windowWidth() == 0 || System.windowHeight() == 0) return; @@ -334,6 +332,8 @@ class UINodes { if (grid == null) drawGrid(); + if (Config.raw.node_preview && Context.nodePreviewDirty) makeNodePreview(); + // Start with UI ui.begin(g);