diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/makesdna/DNA_material_types.h | 5 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadeoutput.c | 5 | ||||
-rw-r--r-- | source/blender/src/buttons_shading.c | 3 |
3 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/makesdna/DNA_material_types.h b/source/blender/makesdna/DNA_material_types.h index f0b06585f27..dd6b2692de6 100644 --- a/source/blender/makesdna/DNA_material_types.h +++ b/source/blender/makesdna/DNA_material_types.h @@ -79,7 +79,7 @@ typedef struct Material { float aniso_gloss_mir; float dist_mir; short fadeto_mir; - short pad1; + short shade_flag; /* like Cubic interpolation */ int mode, mode_l; /* mode_l is the or-ed result of all layer modes */ short flarec, starc, linec, ringc; @@ -201,6 +201,9 @@ typedef struct Material { #define MA_RAYMIR_FADETOSKY 0 #define MA_RAYMIR_FADETOMAT 1 +/* shade_flag */ +#define MA_CUBIC 1 + /* diff_shader */ #define MA_DIFF_LAMBERT 0 #define MA_DIFF_ORENNAYAR 1 diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index a08046da0da..0823ae146f7 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1297,7 +1297,10 @@ static void shade_one_light(LampRen *lar, ShadeInput *shi, ShadeResult *shr, int else is= inp; // Lambert } - /* i is diffuse */ + /* 'is' is diffuse */ + if((ma->shade_flag & MA_CUBIC) && is>0.0f) + is= 3.0*is*is - 2.0*is*is*is; // nicer termination of shades + i= is*phongcorr; if(i>0.0f) { diff --git a/source/blender/src/buttons_shading.c b/source/blender/src/buttons_shading.c index ad1afcc0608..3b597e47fa5 100644 --- a/source/blender/src/buttons_shading.c +++ b/source/blender/src/buttons_shading.c @@ -3791,7 +3791,8 @@ static void material_panel_shading(Material *ma) uiDefButBitI(block, TOG, MA_SHADOW, B_MATPRV, "Shadow", 245,140,65,19, &(ma->mode), 0, 0, 0, 0, "Makes material receive shadows"); uiDefButBitI(block, TOG, MA_SHADOW_TRA, B_MATPRV, "TraShadow", 245,120,65,19, &(ma->mode), 0, 0, 0, 0, "Receives transparent shadows based at material color and alpha"); uiDefButBitI(block, TOG, MA_ONLYSHADOW, B_MATPRV, "OnlyShad", 245,100,65,20, &(ma->mode), 0, 0, 0, 0, "Renders shadows on material as Alpha value"); - uiDefButBitI(block, TOG, MA_RAYBIAS, B_MATPRV, "Bias", 245,80,65,19, &(ma->mode), 0, 0, 0, 0, "Prevents ray traced shadow errors with phong interpolated normals (terminator problem)"); + uiDefButBitS(block, TOG, MA_CUBIC, B_MATPRV, "Cubic", 245,80,65,19, &(ma->shade_flag), 0, 0, 0, 0, "Use Cubic interpolation of diffuse values, for smoother transitions)"); + uiDefButBitI(block, TOG, MA_RAYBIAS, B_MATPRV, "Bias", 245,60,65,19, &(ma->mode), 0, 0, 0, 0, "Prevents ray traced shadow errors with phong interpolated normals (terminator problem)"); uiBlockBeginAlign(block); uiDefIDPoinBut(block, test_grouppoin_but, ID_GR, B_MATPRV, "GR:", 9, 55, 150, 19, &ma->group, "Limit Lighting to Lamps in this Group"); |