diff options
Diffstat (limited to 'source/blender/gpu/shaders')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_basic_frag.glsl | 9 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_basic_vert.glsl | 10 |
2 files changed, 18 insertions, 1 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_basic_frag.glsl b/source/blender/gpu/shaders/gpu_shader_basic_frag.glsl index ea5f6aef005..01a335af048 100644 --- a/source/blender/gpu/shaders/gpu_shader_basic_frag.glsl +++ b/source/blender/gpu/shaders/gpu_shader_basic_frag.glsl @@ -28,8 +28,11 @@ #define STIPPLE_S3D_INTERLACE_CHECKERBOARD_SWAP 11 #if defined(USE_SOLID_LIGHTING) || defined(USE_SCENE_LIGHTING) +#if defined(USE_FLAT_NORMAL) +varying vec3 eyespace_vert_pos; +#else varying vec3 varying_normal; - +#endif #ifndef USE_SOLID_LIGHTING varying vec3 varying_position; #endif @@ -146,7 +149,11 @@ void main() #if defined(USE_SOLID_LIGHTING) || defined(USE_SCENE_LIGHTING) /* compute normal */ +#if defined(USE_FLAT_NORMAL) + vec3 N = normalize(cross(dFdx(eyespace_vert_pos), dFdy(eyespace_vert_pos))); +#else vec3 N = normalize(varying_normal); +#endif #ifdef USE_TWO_SIDED if (!gl_FrontFacing) diff --git a/source/blender/gpu/shaders/gpu_shader_basic_vert.glsl b/source/blender/gpu/shaders/gpu_shader_basic_vert.glsl index cef28ea3026..42fbdadf1d1 100644 --- a/source/blender/gpu/shaders/gpu_shader_basic_vert.glsl +++ b/source/blender/gpu/shaders/gpu_shader_basic_vert.glsl @@ -1,6 +1,10 @@ #if defined(USE_SOLID_LIGHTING) || defined(USE_SCENE_LIGHTING) +#if defined(USE_FLAT_NORMAL) +varying vec3 eyespace_vert_pos; +#else varying vec3 varying_normal; +#endif #ifndef USE_SOLID_LIGHTING varying vec3 varying_position; @@ -28,7 +32,13 @@ void main() vec4 co = gl_ModelViewMatrix * gl_Vertex; #if defined(USE_SOLID_LIGHTING) || defined(USE_SCENE_LIGHTING) +#if !defined(USE_FLAT_NORMAL) varying_normal = normalize(gl_NormalMatrix * gl_Normal); +#endif +#if defined(USE_FLAT_NORMAL) + /* transform vertex into eyespace */ + eyespace_vert_pos = (gl_ModelViewMatrix * gl_Vertex).xyz; +#endif #ifndef USE_SOLID_LIGHTING varying_position = co.xyz; |