Differential D6296 Diff 20013 source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/shaders/material/gpu_shader_material_normal_map.glsl
| void node_normal_map(vec4 info, vec4 tangent, vec3 normal, vec3 texnormal, out vec3 outnormal) | void node_normal_map(vec4 info, vec4 tangent, vec3 normal, vec3 texnormal, out vec3 outnormal) | ||||
| { | { | ||||
| if (all(equal(tangent, vec4(0.0, 0.0, 0.0, 1.0)))) { | if (all(equal(tangent, vec4(0.0, 0.0, 0.0, 1.0)))) { | ||||
| outnormal = normal; | outnormal = normal; | ||||
| return; | return; | ||||
| } | } | ||||
| tangent *= (gl_FrontFacing ? 1.0 : -1.0); | tangent *= (gl_FrontFacing ? 1.0 : -1.0); | ||||
| vec3 B = tangent.w * cross(normal, tangent.xyz) * info.w; | vec3 B = tangent.w * cross(normal, tangent.xyz) * sign(info.w); | ||||
| outnormal = texnormal.x * tangent.xyz + texnormal.y * B + texnormal.z * normal; | outnormal = texnormal.x * tangent.xyz + texnormal.y * B + texnormal.z * normal; | ||||
| outnormal = normalize(outnormal); | outnormal = normalize(outnormal); | ||||
| } | } | ||||
| void color_to_normal_new_shading(vec3 color, out vec3 normal) | void color_to_normal_new_shading(vec3 color, out vec3 normal) | ||||
| { | { | ||||
| normal = vec3(2.0) * color - vec3(1.0); | normal = vec3(2.0) * color - vec3(1.0); | ||||
| } | } | ||||
| void color_to_blender_normal_new_shading(vec3 color, out vec3 normal) | void color_to_blender_normal_new_shading(vec3 color, out vec3 normal) | ||||
| { | { | ||||
| normal = vec3(2.0, -2.0, -2.0) * color - vec3(1.0); | normal = vec3(2.0, -2.0, -2.0) * color - vec3(1.0); | ||||
| } | } | ||||