Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2010-04-06 14:24:57 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2010-04-06 14:24:57 +0400
commit080c49d176923eb04f66f8e7f8e919f3b10a2fd4 (patch)
treeadf3effe2ff8702be073825ed567caee070dfefe /source/blender
parent2275b69ff894c8a7e319d9807da387a2dc4ad169 (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.c11
-rw-r--r--source/blender/render/extern/include/RE_shader_ext.h3
-rw-r--r--source/blender/render/intern/source/shadeinput.c6
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) {