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:
authorTon Roosendaal <ton@blender.org>2003-07-23 01:50:21 +0400
committerTon Roosendaal <ton@blender.org>2003-07-23 01:50:21 +0400
commit46cbeb28a0a375b59c0c6fa0be915c2dea7b8c87 (patch)
tree9afb7698107b4fe240eb1142604711d1161d75a4
parentae848a97c4312da3ecf2417f72a1e0d55a4c4630 (diff)
bugreport from intrr:
- spec was at wrong location in shaded view - shaded view didnt do 'nospec' and 'nodiffuse' options Both fixed!
-rw-r--r--source/blender/blenkernel/intern/displist.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index f3beea7c389..84b55ca8fb5 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -385,9 +385,11 @@ static void fastshade(float *co, float *nor, float *orco, Material *ma, char *co
inpr= inpg= inpb= inpr1= inpg1= inpb1= ma->emit;
}
- /* col[0]= (255.0*ma->r); */
- /* col[1]= (255.0*ma->g); */
- /* col[2]= (255.0*ma->b); */
+ view[0]= 0.0;
+ view[1]= 0.0;
+ view[2]= 1.0;
+
+ Normalise(view);
for (fl= fastlamplist; fl; fl= fl->next) {
/* if(fl->mode & LA_LAYER) if((fl->lay & ma->lay)==0) continue; */
@@ -446,11 +448,14 @@ static void fastshade(float *co, float *nor, float *orco, Material *ma, char *co
}
}
- inp= nor[0]*lv[0]+ nor[1]*lv[1]+ nor[2]*lv[2];
-
- if(ma->diff_shader==MA_DIFF_ORENNAYAR) inp= OrenNayar_Diff(nor, lv, view, ma->roughness);
- else if(ma->diff_shader==MA_DIFF_TOON) inp= Toon_Diff(nor, lv, view, ma->param[0], ma->param[1]);
-
+ if(fl->mode & LA_NO_DIFF) inp= 0.0;
+ else {
+ inp= nor[0]*lv[0]+ nor[1]*lv[1]+ nor[2]*lv[2];
+
+ if(ma->diff_shader==MA_DIFF_ORENNAYAR) inp= OrenNayar_Diff(nor, lv, view, ma->roughness);
+ else if(ma->diff_shader==MA_DIFF_TOON) inp= Toon_Diff(nor, lv, view, ma->param[0], ma->param[1]);
+ }
+
back= 0;
if(inp<0.0) {
back= 1;
@@ -467,10 +472,7 @@ static void fastshade(float *co, float *nor, float *orco, Material *ma, char *co
inpg1+= inp*fl->g;
inpb1+= inp*fl->b;
}
- if(ma->spec) {
-
- VECCOPY(view, fl->co);
- Normalise(view);
+ if(ma->spec && (fl->mode & LA_NO_SPEC)==0) {
if(ma->spec_shader==MA_SPEC_PHONG)
t= Phong_Spec(nor, lv, view, ma->har);