Merge pull request #43746 from CaptainProton42/master
Vulkan: Implement triplanar mapping in world space
This commit is contained in:
@ -829,16 +829,26 @@ void BaseMaterial3D::_update_shader() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (flags[FLAG_UV1_USE_TRIPLANAR]) {
|
if (flags[FLAG_UV1_USE_TRIPLANAR]) {
|
||||||
code += "\tuv1_power_normal=pow(abs(NORMAL),vec3(uv1_blend_sharpness));\n";
|
if (flags[FLAG_UV1_USE_WORLD_TRIPLANAR]) {
|
||||||
|
code += "\tuv1_power_normal=pow(abs(mat3(WORLD_MATRIX) * NORMAL),vec3(uv1_blend_sharpness));\n";
|
||||||
|
code += "\tuv1_triplanar_pos = (WORLD_MATRIX * vec4(VERTEX, 1.0f)).xyz * uv1_scale + uv1_offset;\n";
|
||||||
|
} else {
|
||||||
|
code += "\tuv1_power_normal=pow(abs(NORMAL),vec3(uv1_blend_sharpness));\n";
|
||||||
|
code += "\tuv1_triplanar_pos = VERTEX * uv1_scale + uv1_offset;\n";
|
||||||
|
}
|
||||||
code += "\tuv1_power_normal/=dot(uv1_power_normal,vec3(1.0));\n";
|
code += "\tuv1_power_normal/=dot(uv1_power_normal,vec3(1.0));\n";
|
||||||
code += "\tuv1_triplanar_pos = VERTEX * uv1_scale + uv1_offset;\n";
|
|
||||||
code += "\tuv1_triplanar_pos *= vec3(1.0,-1.0, 1.0);\n";
|
code += "\tuv1_triplanar_pos *= vec3(1.0,-1.0, 1.0);\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags[FLAG_UV2_USE_TRIPLANAR]) {
|
if (flags[FLAG_UV2_USE_TRIPLANAR]) {
|
||||||
code += "\tuv2_power_normal=pow(abs(NORMAL), vec3(uv2_blend_sharpness));\n";
|
if (flags[FLAG_UV2_USE_WORLD_TRIPLANAR]) {
|
||||||
|
code += "\tuv2_power_normal=pow(abs(mat3(WORLD_MATRIX) * NORMAL), vec3(uv2_blend_sharpness));\n";
|
||||||
|
code += "\tuv2_triplanar_pos = (WORLD_MATRIX * vec4(VERTEX, 1.0f)).xyz * uv2_scale + uv2_offset;\n";
|
||||||
|
} else {
|
||||||
|
code += "\tuv2_power_normal=pow(abs(NORMAL), vec3(uv2_blend_sharpness));\n";
|
||||||
|
code += "\tuv2_triplanar_pos = VERTEX * uv2_scale + uv2_offset;\n";
|
||||||
|
}
|
||||||
code += "\tuv2_power_normal/=dot(uv2_power_normal,vec3(1.0));\n";
|
code += "\tuv2_power_normal/=dot(uv2_power_normal,vec3(1.0));\n";
|
||||||
code += "\tuv2_triplanar_pos = VERTEX * uv2_scale + uv2_offset;\n";
|
|
||||||
code += "\tuv2_triplanar_pos *= vec3(1.0,-1.0, 1.0);\n";
|
code += "\tuv2_triplanar_pos *= vec3(1.0,-1.0, 1.0);\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user