[lab] Improve uv scaling
This commit is contained in:
@@ -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);');
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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: [
|
||||
|
||||
Reference in New Issue
Block a user