diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-04-06 14:24:57 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-04-06 14:24:57 +0400 |
commit | 080c49d176923eb04f66f8e7f8e919f3b10a2fd4 (patch) | |
tree | adf3effe2ff8702be073825ed567caee070dfefe /source/blender | |
parent | 2275b69ff894c8a7e319d9807da387a2dc4ad169 (diff) |
Fix #21545: geometry node front/back incorrectly depended on camera angle, can
actually be implemented simpler now.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/nodes/intern/SHD_nodes/SHD_geom.c | 11 | ||||
-rw-r--r-- | source/blender/render/extern/include/RE_shader_ext.h | 3 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadeinput.c | 6 |
3 files changed, 2 insertions, 18 deletions
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_geom.c b/source/blender/nodes/intern/SHD_nodes/SHD_geom.c index ab1bec199f3..aefe7d104b5 100644 --- a/source/blender/nodes/intern/SHD_nodes/SHD_geom.c +++ b/source/blender/nodes/intern/SHD_nodes/SHD_geom.c @@ -54,7 +54,6 @@ static void node_shader_exec_geom(void *data, bNode *node, bNodeStack **in, bNod NodeGeometry *ngeo= (NodeGeometry*)node->storage; ShadeInputUV *suv= &shi->uv[shi->actuv]; static float defaultvcol[4] = {1.0f, 1.0f, 1.0f, 1.0f}; - static float front= 0.0; int i; if(ngeo->uvname[0]) { @@ -109,14 +108,8 @@ static void node_shader_exec_geom(void *data, bNode *node, bNodeStack **in, bNod out[GEOM_OUT_NORMAL]->datatype= NS_OSA_VECTORS; } - /* front/back - * check the original un-flipped normals to determine front or back side */ - if (shi->orignor[2] < FLT_EPSILON) { - front= 1.0f; - } else { - front = 0.0f; - } - out[GEOM_OUT_FRONTBACK]->vec[0]= front; + /* front/back, normal flipping was stored */ + out[GEOM_OUT_FRONTBACK]->vec[0]= (shi->flippednor)? 0.0f: 1.0f; } } diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h index f7dfb4d889e..742eb851c50 100644 --- a/source/blender/render/extern/include/RE_shader_ext.h +++ b/source/blender/render/extern/include/RE_shader_ext.h @@ -166,9 +166,6 @@ typedef struct ShadeInput int depth; /* 1 or larger on raytrace shading */ int volume_depth; /* number of intersections through volumes */ - /* stored copy of original face normal (facenor) - * before flipping. Used in Front/back output on geometry node */ - float orignor[3]; /* for strand shading, normal at the surface */ float surfnor[3], surfdist; diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index 17ca087c52e..5938e2ce2e0 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -276,11 +276,6 @@ void shade_input_set_triangle_i(ShadeInput *shi, ObjectInstanceRen *obi, VlakRen /* facenormal copy, can get flipped */ shi->flippednor= RE_vlakren_get_normal(&R, obi, vlr, shi->facenor); - /* copy of original pre-flipped normal, for geometry->front/back node output */ - VECCOPY(shi->orignor, shi->facenor); - if(shi->flippednor) - VECMUL(shi->orignor, -1.0f); - /* calculate vertexnormals */ if(vlr->flag & R_SMOOTH) { VECCOPY(shi->n1, shi->v1->n); @@ -372,7 +367,6 @@ void shade_input_set_strand(ShadeInput *shi, StrandRen *strand, StrandPoint *spo /* facenormal, simply viewco flipped */ VECCOPY(shi->facenor, spoint->nor); - VECCOPY(shi->orignor, shi->facenor); /* shade_input_set_normals equivalent */ if(shi->mat->mode & MA_TANGENT_STR) { |