[Evas: Evas_3D] Refactor shader system: refactored vertex color shade mode.

Reviewers: cedric, jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2228
This commit is contained in:
Dmytro Dadyka 2015-03-24 10:50:25 -07:00 committed by Jean-Philippe ANDRE
parent 8110ec94f4
commit ffa7de039c
4 changed files with 18 additions and 43 deletions

View File

@ -59,6 +59,7 @@ static const char const vertex_color_frag_glsl[] =
"void main()\n" "void main()\n"
"{\n" "{\n"
" gl_FragColor = vColor;\n" " gl_FragColor = vColor;\n"
" \n"
"#ifdef FOG_ENABLED\n" "#ifdef FOG_ENABLED\n"
" float z = gl_FragCoord.z / gl_FragCoord.w;\n" " float z = gl_FragCoord.z / gl_FragCoord.w;\n"
" float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n"

View File

@ -148,6 +148,16 @@ uniform float uTexCoordWeight;
`#endif //VERTEX_TEXCOORD_BLEND' `#endif //VERTEX_TEXCOORD_BLEND'
) )
define(`VERTEX_SHADER_USE_COLOR',
`#ifdef VERTEX_COLOR'
attribute vec4 aColor0;
`#endif //VERTEX_COLOR'
`#ifdef VERTEX_COLOR_BLEND'
attribute vec4 aColor1;
uniform float uColorWeight;
`#endif //VERTEX_COLOR_BLEND')
define(`VERTEX_SHADER_POSITION', define(`VERTEX_SHADER_POSITION',
`#ifdef VERTEX_POSITION_BLEND' `#ifdef VERTEX_POSITION_BLEND'
vec4 position = aPosition0 * uPositionWeight + vec4 position = aPosition0 * uPositionWeight +

View File

@ -1,20 +1,10 @@
varying vec4 vColor; varying vec4 vColor;
#ifdef FOG_ENABLED FRAGMENT_SHADER_USE_FOG
uniform float uFogFactor;
uniform vec4 uFogColor;
#endif //FOG_ENABLED
void main() void main()
{ {
gl_FragColor = vColor; gl_FragColor = vColor;
FRAGMENT_SHADER_FOG_APPLY
#ifdef FOG_ENABLED
float z = gl_FragCoord.z / gl_FragCoord.w;
float fogFactor = exp2( -uFogFactor * uFogFactor * z * z * 1.44);
fogFactor = clamp(fogFactor, 0.0, 1.0);
gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);
#endif //FOG_ENABLED
} }

View File

@ -1,38 +1,12 @@
uniform mat4 uMatrixMvp; uniform mat4 uMatrixMvp;
varying vec4 vColor; varying vec4 vColor;
#ifdef VERTEX_POSITION VERTEX_SHADER_USE_POSITION
attribute vec4 aPosition0; VERTEX_SHADER_USE_COLOR
#endif //VERTEX_POSITION
#ifdef VERTEX_POSITION_BLEND
attribute vec4 aPosition1;
uniform float uPositionWeight;
#endif //VERTEX_POSITION_BLEND
#ifdef VERTEX_COLOR
attribute vec4 aColor0;
#endif //VERTEX_COLOR
#ifdef VERTEX_COLOR_BLEND
attribute vec4 aColor1;
uniform float uColorWeight;
#endif //VERTEX_COLOR_BLEND
void main() void main()
{ {
VERTEX_SHADER_POSITION
#ifdef VERTEX_POSITION_BLEND
vec4 position = aPosition0 * uPositionWeight +
aPosition1 * (1.0 - uPositionWeight);
position = vec4(position.xyz, 1.0);
#else
#ifdef VERTEX_POSITION
vec4 position = vec4(aPosition0.xyz, 1.0);
#endif // VERTEX_POSITION
#endif //VERTEX_POSITION_BLEND
#ifdef VERTEX_COLOR_BLEND #ifdef VERTEX_COLOR_BLEND
vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight); vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight);