? blender ? blenderplayer ? config.opts ? obj/linux-glibc2.3.5-x86_64 ? tools/__init__.pyc ? tools/scons/__init__.pyc ? tools/scons/bs/__init__.pyc ? tools/scons/bs/bs_arc.pyc ? tools/scons/bs/bs_bincopy.pyc ? tools/scons/bs/bs_clean.pyc ? tools/scons/bs/bs_config.pyc ? tools/scons/bs/bs_default.pyc ? tools/scons/bs/bs_dirs.pyc ? tools/scons/bs/bs_globals.pyc ? tools/scons/bs/bs_libs.pyc ? tools/scons/bs/bs_nsis.pyc Index: source/blender/blenkernel/bad_level_call_stubs/stubs.c =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c,v retrieving revision 1.35 diff -u -r1.35 stubs.c --- source/blender/blenkernel/bad_level_call_stubs/stubs.c 23 Nov 2005 14:42:17 -0000 1.35 +++ source/blender/blenkernel/bad_level_call_stubs/stubs.c 9 Dec 2005 22:40:06 -0000 @@ -116,6 +116,7 @@ float Toon_Diff(float *n, float *l, float *v, float a, float b){return 0;} float OrenNayar_Diff(float *n, float *l, float *v, float rough){return 0;} float Minnaert_Diff(float nl, float *n, float *v, float a){return 0;} +float Cell_Diff(float nl, float *n, float *v, float a,float b){return 0;} void add_to_diffuse(float *diff, ShadeInput *shi, float is, float r, float g, float b){} void ramp_diffuse_result(float *diff, ShadeInput *shi){} Index: source/blender/blenkernel/intern/displist.c =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/blenkernel/intern/displist.c,v retrieving revision 1.125 diff -u -r1.125 displist.c --- source/blender/blenkernel/intern/displist.c 30 Nov 2005 18:58:10 -0000 1.125 +++ source/blender/blenkernel/intern/displist.c 9 Dec 2005 22:40:25 -0000 @@ -537,6 +537,7 @@ if(ma->diff_shader==MA_DIFF_ORENNAYAR) is= OrenNayar_Diff(nor, lv, shi.view, ma->roughness); else if(ma->diff_shader==MA_DIFF_TOON) is= Toon_Diff(nor, lv, shi.view, ma->param[0], ma->param[1]); else if(ma->diff_shader==MA_DIFF_MINNAERT) is= Minnaert_Diff(is, nor, shi.view, ma->darkness); + else if(ma->diff_shader==MA_DIFF_CELL) is= Cell_Diff(is, nor, shi.view, ma->param[0], ma->param[1]); } back= 0; Index: source/blender/makesdna/DNA_material_types.h =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/makesdna/DNA_material_types.h,v retrieving revision 1.31 diff -u -r1.31 DNA_material_types.h --- source/blender/makesdna/DNA_material_types.h 27 Nov 2005 12:19:12 -0000 1.31 +++ source/blender/makesdna/DNA_material_types.h 9 Dec 2005 22:42:01 -0000 @@ -162,6 +162,7 @@ #define MA_DIFF_ORENNAYAR 1 #define MA_DIFF_TOON 2 #define MA_DIFF_MINNAERT 3 +#define MA_DIFF_CELL 4 /* spec_shader */ #define MA_SPEC_COOKTORR 0 Index: source/blender/render/extern/include/render.h =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/render/extern/include/render.h,v retrieving revision 1.18 diff -u -r1.18 render.h --- source/blender/render/extern/include/render.h 29 Sep 2005 13:19:06 -0000 1.18 +++ source/blender/render/extern/include/render.h 9 Dec 2005 22:44:16 -0000 @@ -182,6 +182,7 @@ float OrenNayar_Diff(float *n, float *l, float *v, float rough); float Toon_Diff( float *n, float *l, float *v, float size, float smooth); float Minnaert_Diff( float nl, float *n, float *v, float darkness); +float Cell_Diff( float nl, float *n, float *v, float steps, float smooth); void add_to_diffuse(float *diff, ShadeInput *shi, float is, float r, float g, float b); void ramp_diffuse_result(float *diff, ShadeInput *shi); Index: source/blender/render/intern/source/rendercore.c =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/render/intern/source/rendercore.c,v retrieving revision 1.127 diff -u -r1.127 rendercore.c --- source/blender/render/intern/source/rendercore.c 29 Nov 2005 21:44:47 -0000 1.127 +++ source/blender/render/intern/source/rendercore.c 9 Dec 2005 22:44:32 -0000 @@ -938,6 +938,29 @@ return i; } +/* Cell diffuse */ +float Cell_Diff(float nl, float *n, float *v, float steps,float smooth) +{ + float i,step,delta; + /* nl = dot product between surface normal and light vector */ + /* nv = dot product between surface normal and view vector */ + //nv = n[0]*v[0]+n[1]*v[1]+n[2]*v[2]; + + if(nl>0){ + step=1.0/steps; + for(i=0;i0){ + delta=i-nl; + if(delta>(step-smooth*step)) i=i-step/2.0+(step-delta)/smooth/2.0; + if(deltadiff_shader==MA_DIFF_ORENNAYAR) is= OrenNayar_Diff_i(inp, vn, lv, view, ma->roughness); else if(ma->diff_shader==MA_DIFF_TOON) is= Toon_Diff(vn, lv, view, ma->param[0], ma->param[1]); else if(ma->diff_shader==MA_DIFF_MINNAERT) is= Minnaert_Diff(inp, vn, view, ma->darkness); + else if(ma->diff_shader==MA_DIFF_CELL) is= Cell_Diff(inp, vn, view, ma->param[0], ma->param[1]); else is= inp; // Lambert } Index: source/blender/src/buttons_shading.c =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/src/buttons_shading.c,v retrieving revision 1.158 diff -u -r1.158 buttons_shading.c --- source/blender/src/buttons_shading.c 27 Nov 2005 12:19:12 -0000 1.158 +++ source/blender/src/buttons_shading.c 9 Dec 2005 22:45:52 -0000 @@ -3023,7 +3023,7 @@ uiBlockEndAlign(block); } else { - char *str1= "Diffuse Shader%t|Lambert %x0|Oren-Nayar %x1|Toon %x2|Minnaert %x3"; + char *str1= "Diffuse Shader%t|Lambert %x0|Oren-Nayar %x1|Toon %x2|Minnaert %x3|Cell %x4"; char *str2= "Specular Shader%t|CookTorr %x0|Phong %x1|Blinn %x2|Toon %x3|WardIso %x4"; /* diff shader buttons */ @@ -3037,8 +3037,13 @@ uiDefButF(block, NUMSLI, B_MATPRV, "Size:", 90, 160,150,19, &(ma->param[0]), 0.0, 3.14, 0, 0, "Sets size of diffuse toon area"); uiDefButF(block, NUMSLI, B_MATPRV, "Smooth:",90,140,150,19, &(ma->param[1]), 0.0, 1.0, 0, 0, "Sets smoothness of diffuse toon area"); } - else if(ma->diff_shader==MA_DIFF_MINNAERT) + else if(ma->diff_shader==MA_DIFF_MINNAERT){ uiDefButF(block, NUMSLI, B_MATPRV, "Dark:",90,160, 150,19, &(ma->darkness), 0.0, 2.0, 0, 0, "Sets Minnaert darkness"); + } + else if(ma->diff_shader==MA_DIFF_CELL){ + uiDefButF(block, NUMSLI, B_MATPRV, "Steps:",90,160, 150,19, &(ma->param[0]), 1, 16, 0, 0, "Sets Amount of Steps"); + uiDefButF(block, NUMSLI, B_MATPRV, "Smooth:",90,140, 150,19, &(ma->param[1]), 0.0, 1.0, 0, 0, "Set Smoothnes of transision"); + } uiBlockEndAlign(block); /* spec shader buttons */ Index: source/blender/src/previewrender.c =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/src/previewrender.c,v retrieving revision 1.61 diff -u -r1.61 previewrender.c --- source/blender/src/previewrender.c 29 Sep 2005 13:19:07 -0000 1.61 +++ source/blender/src/previewrender.c 9 Dec 2005 22:48:03 -0000 @@ -916,6 +916,7 @@ if(mat->diff_shader==MA_DIFF_ORENNAYAR) is= OrenNayar_Diff(shi->vn, lv, shi->view, mat->roughness); else if(mat->diff_shader==MA_DIFF_TOON) is= Toon_Diff(shi->vn, lv, shi->view, mat->param[0], mat->param[1]); else if(mat->diff_shader==MA_DIFF_MINNAERT) is= Minnaert_Diff(is, shi->vn, shi->view, mat->darkness); + else if(mat->diff_shader==MA_DIFF_CELL) is= Cell_Diff(is, shi->vn, shi->view, mat->param[0], mat->param[1]); // else Lambert inp= (shi->refl*is + shi->emit);