|
@@ -954,33 +954,30 @@ class MaterialParser {
|
|
|
|
|
|
return '(0.5 * ${store}_texn + 0.5)';
|
|
return '(0.5 * ${store}_texn + 0.5)';
|
|
}
|
|
}
|
|
- else if (node.type == "BLEND_NORMAL_MAPS") {
|
|
|
|
|
|
+ else if (node.type == "MIX_NORMAL_MAP") {
|
|
var nm1 = parse_vector_input(node.inputs[0]);
|
|
var nm1 = parse_vector_input(node.inputs[0]);
|
|
var nm2 = parse_vector_input(node.inputs[1]);
|
|
var nm2 = parse_vector_input(node.inputs[1]);
|
|
var but = node.buttons[0];
|
|
var but = node.buttons[0];
|
|
- var blend: String = but.data[but.default_value].toUpperCase(); //blend type
|
|
|
|
|
|
+ var blend: String = but.data[but.default_value].toUpperCase(); // blend_type
|
|
blend = blend.replace(" ", "_");
|
|
blend = blend.replace(" ", "_");
|
|
-
|
|
|
|
var store = store_var_name(node);
|
|
var store = store_var_name(node);
|
|
-
|
|
|
|
- /* The blending algorithms are based on the paper 'Blending in Detail' by Colin Barré-Brisebois and Stephen Hill 2012
|
|
|
|
- https://blog.selfshadow.com/publications/blending-in-detail/
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
- if( blend == "PARTIAL_DERIVATIVE") { //partial derivate blending
|
|
|
|
|
|
+
|
|
|
|
+ // The blending algorithms are based on the paper 'Blending in Detail' by Colin Barré-Brisebois and Stephen Hill 2012
|
|
|
|
+ // https://blog.selfshadow.com/publications/blending-in-detail/
|
|
|
|
+ if (blend == "PARTIAL_DERIVATIVE") { //partial derivate blending
|
|
curshader.write('vec3 ${store}_n1 = $nm1 * 2.0 - 1.0;');
|
|
curshader.write('vec3 ${store}_n1 = $nm1 * 2.0 - 1.0;');
|
|
curshader.write('vec3 ${store}_n2 = $nm2 * 2.0 - 1.0;');
|
|
curshader.write('vec3 ${store}_n2 = $nm2 * 2.0 - 1.0;');
|
|
- return '0.5*normalize(vec3(${store}_n1.xy*${store}_n2.z + ${store}_n2.xy*${store}_n1.z, ${store}_n1.z*${store}_n2.z))+0.5;';
|
|
|
|
|
|
+ return '0.5 * normalize(vec3(${store}_n1.xy * ${store}_n2.z + ${store}_n2.xy * ${store}_n1.z, ${store}_n1.z * ${store}_n2.z)) + 0.5;';
|
|
}
|
|
}
|
|
else if (blend == "WHITEOUT") { //whiteout blending
|
|
else if (blend == "WHITEOUT") { //whiteout blending
|
|
curshader.write('vec3 ${store}_n1 = $nm1 * 2.0 - 1.0;');
|
|
curshader.write('vec3 ${store}_n1 = $nm1 * 2.0 - 1.0;');
|
|
curshader.write('vec3 ${store}_n2 = $nm2 * 2.0 - 1.0;');
|
|
curshader.write('vec3 ${store}_n2 = $nm2 * 2.0 - 1.0;');
|
|
- return '0.5*normalize(vec3(${store}_n1.xy + ${store}_n2.xy, ${store}_n1.z*${store}_n2.z))+0.5;';
|
|
|
|
|
|
+ return '0.5 * normalize(vec3(${store}_n1.xy + ${store}_n2.xy, ${store}_n1.z * ${store}_n2.z)) + 0.5;';
|
|
}
|
|
}
|
|
else if (blend == "REORIENTED") { //reoriented normal mapping
|
|
else if (blend == "REORIENTED") { //reoriented normal mapping
|
|
- curshader.write('vec3 ${store}_n1 = $nm1 * 2.0 - vec3(1.0,1.0,0.0);');
|
|
|
|
- curshader.write('vec3 ${store}_n2 = $nm2 * vec3(-2.0,-2.0,2.0) - vec3(-1.0,-1.0,1.0);');
|
|
|
|
- return '0.5*normalize(${store}_n1*dot(${store}_n1, ${store}_n2) - ${store}_n2*${store}_n1.z)+0.5';
|
|
|
|
|
|
+ curshader.write('vec3 ${store}_n1 = $nm1 * 2.0 - vec3(1.0, 1.0, 0.0);');
|
|
|
|
+ curshader.write('vec3 ${store}_n2 = $nm2 * vec3(-2.0, -2.0, 2.0) - vec3(-1.0, -1.0, 1.0);');
|
|
|
|
+ return '0.5 * normalize(${store}_n1 * dot(${store}_n1, ${store}_n2) - ${store}_n2 * ${store}_n1.z) + 0.5';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (node.type == "VECT_TRANSFORM") {
|
|
else if (node.type == "VECT_TRANSFORM") {
|