[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

@ -25,7 +25,7 @@ static const char const vertex_color_vert_glsl[] =
"#endif //VERTEX_COLOR_BLEND\n"
"void main()\n"
"{\n"
"#ifdef VERTEX_POSITION_BLEND\n"
" #ifdef VERTEX_POSITION_BLEND\n"
" vec4 position = aPosition0 * uPositionWeight +\n"
" aPosition1 * (1.0 - uPositionWeight);\n"
" position = vec4(position.xyz, 1.0);\n"
@ -59,9 +59,10 @@ static const char const vertex_color_frag_glsl[] =
"void main()\n"
"{\n"
" gl_FragColor = vColor;\n"
" \n"
"#ifdef FOG_ENABLED\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"
" fogFactor = clamp(fogFactor, 0.0, 1.0);\n"
" gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n"
"#endif //FOG_ENABLED\n"

View File

@ -148,6 +148,16 @@ uniform float uTexCoordWeight;
`#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',
`#ifdef VERTEX_POSITION_BLEND'
vec4 position = aPosition0 * uPositionWeight +

View File

@ -1,20 +1,10 @@
varying vec4 vColor;
#ifdef FOG_ENABLED
uniform float uFogFactor;
uniform vec4 uFogColor;
#endif //FOG_ENABLED
FRAGMENT_SHADER_USE_FOG
void main()
{
gl_FragColor = vColor;
#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
FRAGMENT_SHADER_FOG_APPLY
}

View File

@ -1,38 +1,12 @@
uniform mat4 uMatrixMvp;
varying vec4 vColor;
#ifdef VERTEX_POSITION
attribute vec4 aPosition0;
#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
VERTEX_SHADER_USE_POSITION
VERTEX_SHADER_USE_COLOR
void main()
{
#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
VERTEX_SHADER_POSITION
#ifdef VERTEX_COLOR_BLEND
vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight);