[Bf-blender-cvs] [1a4e7b16b26] master: Collada import: respect zero-specularity
Scurest
noreply at git.blender.org
Mon May 17 19:57:07 CEST 2021
Commit: 1a4e7b16b2640750f6dfe380218aba028f998ae1
Author: Scurest
Date: Mon May 17 19:49:15 2021 +0200
Branches: master
https://developer.blender.org/rB1a4e7b16b2640750f6dfe380218aba028f998ae1
Collada import: respect zero-specularity
Collada shaders with black <specular> should import with Specular=0.
(A missing <specular> is the same as black.)
The general specular conversion is hard, but this case is common and easy.
Fixes the specular for all <constant>/<lambert> shaders, and <blinn>/<phong>
shaders with black/omitted <specular>. Before this they all looked too "shiny".
Reviewed By: gaiaclary
Differential Revision: https://developer.blender.org/D10939
===================================================================
M release/scripts/addons
M source/blender/io/collada/Materials.cpp
===================================================================
diff --git a/release/scripts/addons b/release/scripts/addons
index bb16aba5bd3..4fcdbfe7c20 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit bb16aba5bd3873794eefe167497118b6063b9a85
+Subproject commit 4fcdbfe7c20edfc1204c0aa46c98ea25354abcd9
diff --git a/source/blender/io/collada/Materials.cpp b/source/blender/io/collada/Materials.cpp
index c7244575752..508844de042 100644
--- a/source/blender/io/collada/Materials.cpp
+++ b/source/blender/io/collada/Materials.cpp
@@ -376,18 +376,34 @@ void MaterialNode::set_opacity(COLLADAFW::ColorOrTexture &cot)
void MaterialNode::set_specular(COLLADAFW::ColorOrTexture &cot)
{
+ bool is_zero = false;
int locy = -300 * (node_map.size() - 2);
if (cot.isColor()) {
COLLADAFW::Color col = cot.getColor();
- bNode *node = add_node(SH_NODE_RGB, -300, locy, "Specular");
- set_color(node, col);
- /* TODO: Connect node */
+
+ if (col.getRed() == 0 && col.getGreen() == 0 && col.getBlue() == 0) {
+ is_zero = true;
+ }
+ else {
+ bNode *node = add_node(SH_NODE_RGB, -300, locy, "Specular");
+ set_color(node, col);
+ /* TODO: Connect node */
+ }
}
/* texture */
else if (cot.isTexture()) {
add_texture_node(cot, -300, locy, "Specular");
/* TODO: Connect node */
}
+ /* not specified (no specular term) */
+ else {
+ is_zero = true;
+ }
+
+ if (is_zero) {
+ bNodeSocket *socket = nodeFindSocket(shader_node, SOCK_IN, "Specular");
+ ((bNodeSocketValueFloat *)socket->default_value)->value = 0.0f;
+ }
}
bNode *MaterialNode::add_texture_node(COLLADAFW::ColorOrTexture &cot,
More information about the Bf-blender-cvs
mailing list