paint: add decal_camera_align shortcut

This commit is contained in:
luboslenco
2026-05-28 21:43:39 +02:00
parent 5d93d4c86a
commit 2fd703cb18
8 changed files with 57 additions and 10 deletions
+14 -4
View File
@@ -10,6 +10,8 @@ const constants: {
opacity: float;
angle: float2;
scale_x: float;
camera_up: float3;
camera_align: float;
};
#[set(everything)]
@@ -89,10 +91,18 @@ fun cursor_decal_vert(input: vert_in): vert_out {
var uv2: float2 = constants.mouse - constants.tex_step * float2(4.0, 4.0);
var n: float3 = normalize(get_normal(constants.mouse) + get_normal(uv1) + get_normal(uv2));
var cam_right: float3 = constants.camera_right;
if (abs(dot(n, cam_right)) > 0.999) { cam_right = float3(0.0, 0.0, 1.0); }
var n_tan: float3 = normalize(cam_right - n * dot(cam_right, n));
var n_bin: float3 = cross(n_tan, n);
var n_tan: float3;
var n_bin: float3;
if (constants.camera_align > 0.0) {
n_tan = constants.camera_right;
n_bin = constants.camera_up;
}
else {
var cam_right: float3 = constants.camera_right;
if (abs(dot(n, cam_right)) > 0.999) { cam_right = float3(0.0, 0.0, 1.0); }
n_tan = normalize(cam_right - n * dot(cam_right, n));
n_bin = cross(n_tan, n);
}
// Rotate tangent basis by brush angle
var r_tan: float3 = constants.angle.x * n_tan + constants.angle.y * n_bin;