[lab] Improve uv scaling

This commit is contained in:
luboslenco
2023-09-20 19:13:24 +02:00
parent 17be988fc6
commit e3a96f41c0
5 changed files with 15 additions and 7 deletions
+2 -1
View File
@@ -42,7 +42,8 @@ class MakeMesh {
vert.write('gl_Position = mul(vec4(wposition.xyz, 1.0), VP);');
var brushScale = Context.raw.brushScale;
vert.write('texCoord = tex * $brushScale;');
vert.add_uniform('float texScale', '_texUnpack');
vert.write('texCoord = tex * $brushScale * texScale;');
if (MakeMaterial.heightUsed && displaceStrength > 0) {
vert.add_uniform('mat4 invW', '_inverseWorldMatrix');
vert.write('prevwvpposition = mul(mul(vec4(wposition, 1.0), invW), prevWVP);');
+5 -3
View File
@@ -63,6 +63,7 @@ class MakePaint {
#if (kha_direct3d11 || kha_direct3d12 || kha_metal || kha_vulkan)
vert.write('vec2 tpos = vec2(tex.x * 2.0 - 1.0, (1.0 - tex.y) * 2.0 - 1.0);');
// vert.write('vec2 tpos = vec2(frac(tex.x * texScale) * 2.0 - 1.0, (1.0 - frac(tex.y * texScale)) * 2.0 - 1.0);'); // 3D View
#else
vert.write('vec2 tpos = vec2(tex.xy * 2.0 - 1.0);');
#end
@@ -134,9 +135,10 @@ class MakePaint {
frag.write('if (dist > brushRadius) discard;');
}
vert.add_uniform('float brushScale', '_brushScale');
vert.add_out('vec2 texCoord');
vert.write('texCoord = tex * brushScale;');
// vert.add_uniform('float brushScale', '_brushScale');
// vert.add_uniform('float texScale', '_texUnpack');
// vert.add_out('vec2 texCoord');
// vert.write('texCoord = tex * brushScale * texScale;');
if (Context.raw.tool == ToolClone || Context.raw.tool == ToolBlur || Context.raw.tool == ToolSmudge) {
frag.add_uniform('sampler2D gbuffer2');
+2 -1
View File
@@ -111,7 +111,8 @@ class UINodesExt {
arm.App.notifyOnNextFrame(function() {
Console.progress(tr("Apply Displacement"));
arm.App.notifyOnNextFrame(function() {
arm.util.MeshUtil.applyDisplacement(texpaint_pack, 0.05 * Config.raw.displace_strength, Context.raw.brushScale);
var uv_scale = iron.Scene.active.meshes[0].data.scaleTex * Context.raw.brushScale;
arm.util.MeshUtil.applyDisplacement(texpaint_pack, 0.05 * Config.raw.displace_strength, uv_scale);
arm.util.MeshUtil.calcNormals();
taskDone();
});
@@ -119,6 +119,9 @@ class RenderPathRaytrace {
if (!Context.raw.showEnvmap) f32[20] = -f32[20];
f32[21] = Context.raw.envmapAngle;
f32[22] = uvScale;
#if is_lab
f32[22] *= Scene.active.meshes[0].data.scaleTex;
#end
var framebuffer = path.renderTargets.get("buf").image;
Krom.raytraceDispatchRays(framebuffer.renderTarget_, f32.buffer);
+3 -2
View File
@@ -80,7 +80,8 @@ class TabMeshes {
#end
#if is_lab
var displace_strength = Config.raw.displace_strength > 0 ? Config.raw.displace_strength : 1.0;
MeshUtil.applyDisplacement(arm.logic.BrushOutputNode.inst.texpaint_pack, 0.05 * displace_strength, Context.raw.brushScale);
var uv_scale = iron.Scene.active.meshes[0].data.scaleTex * Context.raw.brushScale;
MeshUtil.applyDisplacement(arm.logic.BrushOutputNode.inst.texpaint_pack, 0.05 * displace_strength, uv_scale);
#end
MeshUtil.calcNormals();
@@ -154,7 +155,7 @@ class TabMeshes {
static function setDefaultMesh(name: String) {
var mo: MeshObject = null;
if (name == ".Plane" || name == ".Sphere") {
var mesh: Dynamic = name == ".Plane" ? new arm.geom.Plane(1, 1, 2048, 2048) : new arm.geom.Sphere(0.9, 2048, 1024, false, 3.0);
var mesh: Dynamic = name == ".Plane" ? new arm.geom.Plane(1, 1, 2048, 2048) : new arm.geom.UVSphere(1.0, 2048, 1024, false, 2.0);
var raw = {
name: "Tessellated",
vertex_arrays: [