From: Adam Bialogonski Date: Tue, 12 Nov 2024 15:39:23 +0000 (+0000) Subject: Upgraded DALi Toolkit shaders X-Git-Tag: accepted/tizen/unified/20241120.162300~2^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2b31ca718be062d58c07aa9d5a40aa3ed814f876;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Upgraded DALi Toolkit shaders Change-Id: Ib9f1d3b085a3b86b9ba82ceec5bbc654daff4ea1 --- diff --git a/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag b/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag index e9d48648ca..c357696b8c 100644 --- a/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag +++ b/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag @@ -1,3 +1,4 @@ +//@version 100 // Original Code // https://github.com/KhronosGroup/glTF-Sample-Viewer/blob/glTF-WebGL-PBR/shaders/pbr-frag.glsl @@ -30,97 +31,127 @@ precision mediump float; #define ROUGHNESS a #endif //GLTF_CHANNELS -uniform lowp vec4 uColor; // Color from SceneGraph -uniform lowp vec4 uColorFactor; // Color from material -uniform lowp float uMetallicFactor; -uniform lowp float uRoughnessFactor; -uniform lowp float uDielectricSpecular; - #ifdef THREE_TEX #ifdef BASECOLOR_TEX -uniform sampler2D sAlbedoAlpha; -uniform float uBaseColorTextureTransformAvailable; -uniform mat3 uBaseColorTextureTransform; -#endif // BASECOLOR_TEX +UNIFORM sampler2D sAlbedoAlpha; +#endif #ifdef METALLIC_ROUGHNESS_TEX -uniform sampler2D sMetalRoughness; -uniform float uMetalRoughnessTextureTransformAvailable; -uniform mat3 uMetalRoughnessTextureTransform; -#endif // METALLIC_ROUGHNESS_TEX +UNIFORM sampler2D sMetalRoughness; +#endif #ifdef NORMAL_TEX -uniform sampler2D sNormal; -uniform float uNormalTextureTransformAvailable; -uniform mat3 uNormalTextureTransform; -uniform float uNormalScale; -#endif // NORMAL_TEX -#else // THREE_TEX -uniform sampler2D sAlbedoMetal; -uniform float uBaseColorTextureTransformAvailable; -uniform mat3 uBaseColorTextureTransform; -uniform sampler2D sNormalRoughness; -uniform float uNormalRoughnessTextureTransformAvailable; -uniform mat3 uNormalRoughnessTextureTransform; +UNIFORM sampler2D sNormal; +#endif +#else +UNIFORM sampler2D sAlbedoMetal; +UNIFORM sampler2D sNormalRoughness; #endif - - #ifdef OCCLUSION -uniform sampler2D sOcclusion; -uniform float uOcclusionTextureTransformAvailable; -uniform mat3 uOcclusionTextureTransform; -uniform float uOcclusionStrength; +UNIFORM sampler2D sOcclusion; #endif #ifdef EMISSIVE_TEXTURE -uniform sampler2D sEmissive; -uniform float uEmissiveTextureTransformAvailable; -uniform mat3 uEmissiveTextureTransform; +UNIFORM sampler2D sEmissive; #endif -uniform vec3 uEmissiveFactor; -uniform float uSpecularFactor; -uniform vec3 uSpecularColorFactor; #ifdef MATERIAL_SPECULAR_TEXTURE -uniform sampler2D sSpecular; +UNIFORM sampler2D sSpecular; #endif #ifdef MATERIAL_SPECULAR_COLOR_TEXTURE -uniform sampler2D sSpecularColor; +UNIFORM sampler2D sSpecularColor; #endif +/// For shadowmap +UNIFORM sampler2D sShadowMap; + +//// For IBL +UNIFORM sampler2D sbrdfLUT; +UNIFORM samplerCube sDiffuseEnvSampler; +UNIFORM samplerCube sSpecularEnvSampler; + +UNIFORM_BLOCK FragBlock0 +{ + UNIFORM lowp vec4 uColor;// Color from SceneGraph + UNIFORM lowp vec4 uColorFactor;// Color from material + UNIFORM lowp float uMetallicFactor; + UNIFORM lowp float uRoughnessFactor; + UNIFORM lowp float uDielectricSpecular; + +#ifdef THREE_TEX +#ifdef BASECOLOR_TEX + UNIFORM float uBaseColorTextureTransformAvailable; + UNIFORM mat3 uBaseColorTextureTransform; +#endif// BASECOLOR_TEX +#ifdef METALLIC_ROUGHNESS_TEX + UNIFORM float uMetalRoughnessTextureTransformAvailable; + UNIFORM mat3 uMetalRoughnessTextureTransform; +#endif// METALLIC_ROUGHNESS_TEX +#ifdef NORMAL_TEX + UNIFORM float uNormalTextureTransformAvailable; + UNIFORM mat3 uNormalTextureTransform; + UNIFORM float uNormalScale; +#endif// NORMAL_TEX +#else// THREE_TEX + UNIFORM float uBaseColorTextureTransformAvailable; + UNIFORM mat3 uBaseColorTextureTransform; + UNIFORM float uNormalRoughnessTextureTransformAvailable; + UNIFORM mat3 uNormalRoughnessTextureTransform; +#endif + +#ifdef OCCLUSION + UNIFORM float uOcclusionTextureTransformAvailable; + UNIFORM mat3 uOcclusionTextureTransform; + UNIFORM float uOcclusionStrength; +#endif + +#ifdef EMISSIVE_TEXTURE + UNIFORM float uEmissiveTextureTransformAvailable; + UNIFORM mat3 uEmissiveTextureTransform; +#endif + UNIFORM vec3 uEmissiveFactor; + UNIFORM float uSpecularFactor; + UNIFORM vec3 uSpecularColorFactor; + // For Light (Currently Directional Only) #define MAX_LIGHTS 5 -uniform mediump int uLightCount; -uniform mediump vec3 uLightDirection[MAX_LIGHTS]; -uniform mediump vec3 uLightColor[MAX_LIGHTS]; + UNIFORM mediump int uLightCount; + UNIFORM mediump vec3 uLightDirection[MAX_LIGHTS]; + UNIFORM mediump vec3 uLightColor[MAX_LIGHTS]; // For Shadow Map -uniform lowp int uIsShadowEnabled; -uniform sampler2D sShadowMap; -uniform lowp int uIsShadowReceiving; + UNIFORM lowp int uIsShadowReceiving; #ifdef SL_VERSION_LOW -uniform int uShadowMapWidth; -uniform int uShadowMapHeight; + UNIFORM int uShadowMapWidth; + UNIFORM int uShadowMapHeight; #endif -INPUT highp vec3 positionFromLightView; //// For IBL -uniform sampler2D sbrdfLUT; -uniform samplerCube sDiffuseEnvSampler; -uniform samplerCube sSpecularEnvSampler; -uniform float uIblIntensity; -uniform mediump vec3 uYDirection; -uniform float uMaxLOD; + UNIFORM float uIblIntensity; + UNIFORM float uMaxLOD; // For Alpha Mode. -uniform lowp float uOpaque; -uniform lowp float uMask; -uniform lowp float uAlphaThreshold; + UNIFORM lowp float uOpaque; + UNIFORM lowp float uMask; + UNIFORM lowp float uAlphaThreshold; +}; + +UNIFORM_BLOCK YDirection +{ + UNIFORM mediump vec3 uYDirection; +}; + +UNIFORM_BLOCK ShadowEnabled +{ + UNIFORM lowp int uIsShadowEnabled; +}; + // TODO: Multiple texture coordinate will be supported. INPUT mediump vec2 vUV; INPUT lowp mat3 vTBN; INPUT lowp vec4 vColor; INPUT highp vec3 vPositionToCamera; +INPUT highp vec3 positionFromLightView; const float c_MinRoughness = 0.04; const float M_PI = 3.141592653589793; @@ -137,10 +168,10 @@ const float kSinPcfTheta = sin(kPcfTheta); const float kCosPcfTheta = cos(kPcfTheta); -uniform mediump int uShadowLightIndex; -uniform lowp int uEnableShadowSoftFiltering; -uniform mediump float uShadowIntensity; -uniform highp float uShadowBias; +UNIFORM mediump int uShadowLightIndex; +UNIFORM lowp int uEnableShadowSoftFiltering; +UNIFORM mediump float uShadowIntensity; +UNIFORM highp float uShadowBias; vec3 linear(vec3 color) { @@ -357,5 +388,5 @@ void main() #endif // EMISSIVE_TEXTURE color += emissive; - OUT_COLOR = vec4(pow(color, vec3(1.0 / 2.2)), baseColor.a) * uColor; + gl_FragColor = vec4(pow(color, vec3(1.0 / 2.2)), baseColor.a) * uColor; } diff --git a/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.vert b/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.vert index 8ee1bf4282..2ce2410710 100644 --- a/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.vert +++ b/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.vert @@ -1,3 +1,4 @@ +//@version 100 // Original Code // https://github.com/KhronosGroup/glTF-Sample-Viewer/blob/glTF-WebGL-PBR/shaders/pbr-vert.glsl @@ -37,56 +38,76 @@ ADD_EXTRA_SKINNING_ATTRIBUTES #endif #ifdef MORPH -uniform highp sampler2D sBlendShapeGeometry; +UNIFORM highp sampler2D sBlendShapeGeometry; +#endif + +UNIFORM_BLOCK VertBlock0 +{ +#ifdef MORPH #ifdef SL_VERSION_LOW -uniform int uBlendShapeGeometryWidth; -uniform int uBlendShapeGeometryHeight; + UNIFORM int uBlendShapeGeometryWidth; + UNIFORM int uBlendShapeGeometryHeight; #endif #endif -OUTPUT mediump vec2 vUV; -OUTPUT highp mat3 vTBN; -OUTPUT lowp vec4 vColor; -OUTPUT highp vec3 vPositionToCamera; - -uniform highp mat4 uViewMatrix; -uniform highp mat3 uNormalMatrix; -uniform highp mat4 uModelMatrix; -uniform highp mat4 uProjection; + UNIFORM highp mat4 uViewMatrix; + UNIFORM highp mat3 uNormalMatrix; + UNIFORM highp mat4 uModelMatrix; + UNIFORM highp mat4 uProjection; #ifdef SKINNING #ifdef SL_VERSION_LOW -#define MAX_BONES 80 -uniform highp mat4 uBone[MAX_BONES]; -#else -#define MAX_BONES 256 -layout(std140) uniform Bones -{ - mat4 uBone[MAX_BONES]; -}; + #define MAX_BONES 80 + UNIFORM highp mat4 uBone[MAX_BONES]; #endif - -uniform mediump vec3 uYDirection; #endif #ifdef MORPH #define MAX_BLEND_SHAPE_NUMBER 256 -uniform int uNumberOfBlendShapes; ///< Total number of blend shapes loaded. -uniform highp float uBlendShapeWeight[MAX_BLEND_SHAPE_NUMBER]; ///< The weight of each blend shape. +UNIFORM int uNumberOfBlendShapes;///< Total number of blend shapes loaded. +UNIFORM highp float uBlendShapeWeight[MAX_BLEND_SHAPE_NUMBER];///< The weight of each blend shape. #ifdef MORPH_VERSION_2_0 -uniform highp float uBlendShapeUnnormalizeFactor; ///< Factor used to unnormalize the geometry of the blend shape. +UNIFORM highp float uBlendShapeUnnormalizeFactor;///< Factor used to unnormalize the geometry of the blend shape. #else -uniform highp float uBlendShapeUnnormalizeFactor[MAX_BLEND_SHAPE_NUMBER]; ///< Factor used to unnormalize the geometry of the blend shape. +UNIFORM highp float uBlendShapeUnnormalizeFactor[MAX_BLEND_SHAPE_NUMBER];///< Factor used to unnormalize the geometry of the blend shape. #endif -uniform highp int uBlendShapeComponentSize; ///< The size in the texture of either the vertices, normals or tangents. Used to calculate the offset to address them. +UNIFORM highp int uBlendShapeComponentSize;///< The size in the texture of either the vertices, normals or tangents. Used to calculate the offset to address them. #endif // Shadow -uniform lowp int uIsShadowEnabled; -uniform highp mat4 uShadowLightViewProjectionMatrix; +UNIFORM highp mat4 uShadowLightViewProjectionMatrix; +}; + +#ifdef SKINNING +UNIFORM_BLOCK YDirection +{ + UNIFORM mediump vec3 uYDirection; +}; +#endif + +UNIFORM_BLOCK ShadowEnabled +{ + UNIFORM lowp int uIsShadowEnabled; +}; + +// Additional uniform block if using more bones +#ifdef SKINNING +#ifndef SL_VERSION_LOW +#define MAX_BONES 256 +UNIFORM_BLOCK Bones +{ + UNIFORM mat4 uBone[MAX_BONES]; +}; +#endif +#endif OUTPUT highp vec3 positionFromLightView; +OUTPUT mediump vec2 vUV; +OUTPUT highp mat3 vTBN; +OUTPUT lowp vec4 vColor; +OUTPUT highp vec3 vPositionToCamera; + void main() { highp vec4 position = vec4(aPosition, 1.0); diff --git a/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.frag b/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.frag index 3ce016bd7b..3a4cbc833b 100644 --- a/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.frag +++ b/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.frag @@ -1,10 +1,14 @@ +//@version 100 precision mediump float; -uniform lowp vec4 uColor; -FLAT INPUT float vColor; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; +INPUT flat float vColor; void main() { vec3 rgb = vec3(fract(vColor), fract(vColor * 0.00390625), fract(vColor * 0.00390625 * 0.00390625)); - OUT_COLOR = vec4(rgb, 1.) * uColor; + gl_FragColor = vec4(rgb, 1.) * uColor; } \ No newline at end of file diff --git a/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.vert b/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.vert index 49860c8a27..eef29cc407 100644 --- a/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.vert +++ b/dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.vert @@ -1,9 +1,13 @@ +//@version 100 precision mediump float; -uniform mat4 uMvpMatrix; +UNIFORM_BLOCK VertBlock +{ + UNIFORM mat4 uMvpMatrix; +}; INPUT vec3 aPosition; INPUT float aColor; -FLAT OUTPUT float vColor; +OUTPUT flat float vColor; void main() { diff --git a/dali-scene3d/internal/graphics/shaders/shadow-map-shader.frag b/dali-scene3d/internal/graphics/shaders/shadow-map-shader.frag index 7d72c367f1..c69c4e98eb 100644 --- a/dali-scene3d/internal/graphics/shaders/shadow-map-shader.frag +++ b/dali-scene3d/internal/graphics/shaders/shadow-map-shader.frag @@ -1,24 +1,24 @@ +//@version 100 -uniform lowp vec4 uColorFactor; // Color from material -uniform lowp float uMask; -uniform lowp float uAlphaThreshold; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColorFactor;// Color from material + UNIFORM lowp float uMask; + UNIFORM lowp float uAlphaThreshold; + UNIFORM int uIsShadowCasting; +}; INPUT mediump vec2 vUV; INPUT lowp vec4 vColor; -//INPUT highp float depth; -//OUTPUT highp vec4 FragColor; - #ifdef THREE_TEX #ifdef BASECOLOR_TEX -uniform sampler2D sAlbedoAlpha; +UNIFORM sampler2D sAlbedoAlpha; #endif // BASECOLOR_TEX #else // THREE_TEX -uniform sampler2D sAlbedoMetal; +UNIFORM sampler2D sAlbedoMetal; #endif -uniform int uIsShadowCasting; - lowp vec3 linear(lowp vec3 color) { return pow(color, vec3(2.2)); diff --git a/dali-scene3d/internal/graphics/shaders/shadow-map-shader.vert b/dali-scene3d/internal/graphics/shaders/shadow-map-shader.vert index 521870098c..1ba11dcfb1 100644 --- a/dali-scene3d/internal/graphics/shaders/shadow-map-shader.vert +++ b/dali-scene3d/internal/graphics/shaders/shadow-map-shader.vert @@ -1,3 +1,5 @@ +//@version 100 + #define MORPH defined(MORPH_POSITION) || defined(MORPH_NORMAL) || defined(MORPH_TANGENT) #define ADD_EXTRA_SKINNING_ATTRIBUTES @@ -20,49 +22,57 @@ ADD_EXTRA_SKINNING_ATTRIBUTES; #endif #ifdef MORPH -uniform highp sampler2D sBlendShapeGeometry; -#ifdef SL_VERSION_LOW -uniform int uBlendShapeGeometryWidth; -uniform int uBlendShapeGeometryHeight; +UNIFORM highp sampler2D sBlendShapeGeometry; +#endif + +#ifdef SKINNING +#ifndef SL_VERSION_LOW +#define MAX_BONES 256 +UNIFORM_BLOCK Bones +{ + UNIFORM mat4 uBone[MAX_BONES]; +}; #endif #endif OUTPUT mediump vec2 vUV; OUTPUT lowp vec4 vColor; -uniform highp mat4 uViewMatrix; -uniform highp mat4 uModelMatrix; -uniform highp mat4 uProjection; +UNIFORM_BLOCK VertBlock +{ +#ifdef MORPH +#ifdef SL_VERSION_LOW + UNIFORM int uBlendShapeGeometryWidth; + UNIFORM int uBlendShapeGeometryHeight; +#endif +#endif -#ifdef SKINNING + UNIFORM highp mat4 uViewMatrix; + UNIFORM highp mat4 uModelMatrix; + UNIFORM highp mat4 uProjection; +#ifdef SKINNING #ifdef SL_VERSION_LOW #define MAX_BONES 80 -uniform mat4 uBone[MAX_BONES]; -#else -#define MAX_BONES 256 -layout(std140) uniform Bones -{ - mat4 uBone[MAX_BONES]; -}; + UNIFORM mat4 uBone[MAX_BONES]; #endif - -uniform mediump vec3 uYDirection; +UNIFORM mediump vec3 uYDirection; #endif #ifdef MORPH #define MAX_BLEND_SHAPE_NUMBER 256 -uniform int uNumberOfBlendShapes; ///< Total number of blend shapes loaded. -uniform highp float uBlendShapeWeight[MAX_BLEND_SHAPE_NUMBER]; ///< The weight of each blend shape. +UNIFORM int uNumberOfBlendShapes;///< Total number of blend shapes loaded. +UNIFORM highp float uBlendShapeWeight[MAX_BLEND_SHAPE_NUMBER];///< The weight of each blend shape. #ifdef MORPH_VERSION_2_0 -uniform highp float uBlendShapeUnnormalizeFactor; ///< Factor used to unnormalize the geometry of the blend shape. +UNIFORM highp float uBlendShapeUnnormalizeFactor;///< Factor used to unnormalize the geometry of the blend shape. #else -uniform highp float uBlendShapeUnnormalizeFactor[MAX_BLEND_SHAPE_NUMBER]; ///< Factor used to unnormalize the geometry of the blend shape. +UNIFORM highp float uBlendShapeUnnormalizeFactor[MAX_BLEND_SHAPE_NUMBER];///< Factor used to unnormalize the geometry of the blend shape. #endif -uniform highp int uBlendShapeComponentSize; ///< The size in the texture of either the vertices, normals or tangents. Used to calculate the offset to address them. +UNIFORM highp int uBlendShapeComponentSize;///< The size in the texture of either the vertices, normals or tangents. Used to calculate the offset to address them. #endif -uniform highp mat4 uShadowLightViewProjectionMatrix; +UNIFORM highp mat4 uShadowLightViewProjectionMatrix; +}; void main() { diff --git a/dali-scene3d/internal/graphics/shaders/skybox-equirectangular-shader.frag b/dali-scene3d/internal/graphics/shaders/skybox-equirectangular-shader.frag index c57c608b08..7663afc46f 100644 --- a/dali-scene3d/internal/graphics/shaders/skybox-equirectangular-shader.frag +++ b/dali-scene3d/internal/graphics/shaders/skybox-equirectangular-shader.frag @@ -1,12 +1,15 @@ // Fragment shader for a skybox in equirectangular projection precision mediump float; -uniform sampler2D uSkyBoxEquirectangularTexture; +UNIFORM sampler2D uSkyBoxEquirectangularTexture; -uniform vec4 uColor; -uniform float uIntensity; +UNIFORM_BLOCK FragBlock +{ + UNIFORM vec4 uColor; + UNIFORM float uIntensity; +}; -varying vec3 vTexCoord; +INPUT vec3 vTexCoord; // Take the sample direction as interpolated from the cube's local position, // and use this direction vector and the spherical to cartesian coordinate @@ -33,6 +36,6 @@ void main() // Flip the texture UVs vertically vec2 uvFlippped = vec2(uv.x, 1.0 - uv.y); - vec4 texColor = texture2D( uSkyBoxEquirectangularTexture, uvFlippped ) * uIntensity; + vec4 texColor = TEXTURE( uSkyBoxEquirectangularTexture, uvFlippped ) * uIntensity; gl_FragColor = texColor * uColor; } diff --git a/dali-scene3d/internal/graphics/shaders/skybox-shader.frag b/dali-scene3d/internal/graphics/shaders/skybox-shader.frag index 7bf6e421f8..834898af1d 100644 --- a/dali-scene3d/internal/graphics/shaders/skybox-shader.frag +++ b/dali-scene3d/internal/graphics/shaders/skybox-shader.frag @@ -1,10 +1,16 @@ -uniform samplerCube uSkyBoxTexture; -uniform lowp vec4 uColor; -uniform mediump float uIntensity; -varying mediump vec3 vTexCoord; +//@version 100 + +UNIFORM samplerCube uSkyBoxTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM mediump float uIntensity; +}; + +INPUT mediump vec3 vTexCoord; void main() { - mediump vec4 texColor = textureCube(uSkyBoxTexture, vTexCoord) * uIntensity; + mediump vec4 texColor = TEXTURE_CUBE(uSkyBoxTexture, vTexCoord) * uIntensity; gl_FragColor = texColor * uColor; } \ No newline at end of file diff --git a/dali-scene3d/internal/graphics/shaders/skybox-shader.vert b/dali-scene3d/internal/graphics/shaders/skybox-shader.vert index 944bbb0089..e0a29db99f 100644 --- a/dali-scene3d/internal/graphics/shaders/skybox-shader.vert +++ b/dali-scene3d/internal/graphics/shaders/skybox-shader.vert @@ -1,10 +1,15 @@ -attribute mediump vec3 aPosition; -uniform mediump mat4 uModelView; -uniform mediump mat4 uModelMatrix; -uniform mediump mat4 uViewMatrix; -uniform mediump mat4 uProjection; -uniform mediump mat4 uMvpMatrix; -varying mediump vec3 vTexCoord; +//@version 100 + +INPUT mediump vec3 aPosition; +UNIFORM_BLOCK VertBlock +{ + UNIFORM mediump mat4 uModelView; + UNIFORM mediump mat4 uModelMatrix; + UNIFORM mediump mat4 uViewMatrix; + UNIFORM mediump mat4 uProjection; + UNIFORM mediump mat4 uMvpMatrix; +}; +OUTPUT mediump vec3 vTexCoord; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/alpha-discard-effect.frag b/dali-toolkit/internal/graphics/shaders/alpha-discard-effect.frag index d9b3d5af6c..0412762784 100644 --- a/dali-toolkit/internal/graphics/shaders/alpha-discard-effect.frag +++ b/dali-toolkit/internal/graphics/shaders/alpha-discard-effect.frag @@ -1,7 +1,14 @@ -varying mediump vec2 vTexCoord; +//@version 100 + +INPUT mediump vec2 vTexCoord; + +UNIFORM sampler2D sTexture; + +UNIFORM_BLOCK FragBlock +{ +UNIFORM lowp vec4 uColor; +}; -uniform sampler2D sTexture; -uniform lowp vec4 uColor; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.frag index 7855bf055c..f9c1acba52 100644 --- a/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.frag @@ -1,12 +1,19 @@ -precision mediump float; +//@name animated-gradient-visual-shader.frag + +//@version 100 -uniform mediump vec4 start_color; -uniform mediump vec4 end_color; -uniform mediump float gradient_offset; +precision mediump float; -varying mediump vec2 vTexCoord; -varying mediump vec2 vStart; -varying mediump vec2 vEnd; +UNIFORM_BLOCK FragBlock +{ + UNIFORM mediump vec4 start_color; + UNIFORM mediump vec4 end_color; + UNIFORM mediump float gradient_offset; +}; + +INPUT mediump vec2 vTexCoord; +INPUT mediump vec2 vStart; +INPUT mediump vec2 vEnd; float get_position(vec2 x, vec2 s, vec2 e) { diff --git a/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert index 5faf423eb8..0a36bf37a0 100644 --- a/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/animated-gradient-visual-shader.vert @@ -1,15 +1,21 @@ -attribute mediump vec2 aPosition; -uniform highp mat4 uMvpMatrix; -uniform highp vec3 uSize; +//@name animated-gradient-visual-shader.vert -uniform mediump vec2 start_point; -uniform mediump vec2 end_point; -uniform mediump vec2 rotate_center; -uniform mediump float rotate_angle; +//@version 100 -varying mediump vec2 vTexCoord; -varying mediump vec2 vStart; -varying mediump vec2 vEnd; +INPUT mediump vec2 aPosition; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec3 uSize; + UNIFORM mediump vec2 start_point; + UNIFORM mediump vec2 end_point; + UNIFORM mediump vec2 rotate_center; + UNIFORM mediump float rotate_angle; +}; + +OUTPUT mediump vec2 vTexCoord; +OUTPUT mediump vec2 vStart; +OUTPUT mediump vec2 vEnd; vec2 rotate(vec2 x, vec2 c, float a) { @@ -28,11 +34,14 @@ vec2 rotate(vec2 x, vec2 c, float a) } //Visual size and offset -uniform mediump vec2 offset; -uniform highp vec2 size; -uniform mediump vec4 offsetSizeMode; -uniform mediump vec2 origin; -uniform mediump vec2 anchorPoint; +UNIFORM_BLOCK VisualBlock +{ + UNIFORM mediump vec2 offset; + UNIFORM highp vec2 size; + UNIFORM mediump vec4 offsetSizeMode; + UNIFORM mediump vec2 origin; + UNIFORM mediump vec2 anchorPoint; +}; vec4 ComputeVertexPosition() { diff --git a/dali-toolkit/internal/graphics/shaders/arc-visual-butt-cap-shader.frag b/dali-toolkit/internal/graphics/shaders/arc-visual-butt-cap-shader.frag index 4720ae8f29..766120c4eb 100644 --- a/dali-toolkit/internal/graphics/shaders/arc-visual-butt-cap-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/arc-visual-butt-cap-shader.frag @@ -1,10 +1,17 @@ +//@name arc-visual-butt-cap-shader.frag + +//@version 100 + INPUT mediump vec2 vPosition; -uniform lowp vec4 uColor; -uniform mediump float thickness; -uniform mediump float radius; -uniform mediump float startAngle; -uniform mediump float sweepAngle; +UNIFORM_BLOCK VertBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM mediump float thickness; + UNIFORM mediump float radius; + UNIFORM mediump float startAngle; + UNIFORM mediump float sweepAngle; +}; const mediump float M_PI_OVER_2 = 1.57079632679; const mediump float M_PI = 3.14159265359; @@ -29,6 +36,6 @@ mediump float GetOpacity() void main() { - OUT_COLOR = uColor; - OUT_COLOR.a *= GetOpacity(); + gl_FragColor = uColor; + gl_FragColor.a *= GetOpacity(); } diff --git a/dali-toolkit/internal/graphics/shaders/arc-visual-round-cap-shader.frag b/dali-toolkit/internal/graphics/shaders/arc-visual-round-cap-shader.frag index a73cc94084..2cf77abd6e 100644 --- a/dali-toolkit/internal/graphics/shaders/arc-visual-round-cap-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/arc-visual-round-cap-shader.frag @@ -1,10 +1,17 @@ +//@name arc-visual-round-cap-shader.frag + +//@version 100 + INPUT mediump vec2 vPosition; -uniform lowp vec4 uColor; -uniform mediump float thickness; -uniform mediump float radius; -uniform mediump float startAngle; -uniform mediump float sweepAngle; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM mediump float thickness; + UNIFORM mediump float radius; + UNIFORM mediump float startAngle; + UNIFORM mediump float sweepAngle; +}; const mediump float M_PI_OVER_2 = 1.57079632679; const mediump float M_PI_2 = 6.28318530718; @@ -26,6 +33,6 @@ mediump float GetOpacity() void main() { - OUT_COLOR = uColor; - OUT_COLOR.a *= GetOpacity(); + gl_FragColor = uColor; + gl_FragColor.a *= GetOpacity(); } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert index 4f6dab5789..77dad610c9 100644 --- a/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/arc-visual-shader.vert @@ -1,15 +1,23 @@ +//@name arc-visual-shader.vert + +//@version 100 + INPUT mediump vec2 aPosition; OUTPUT mediump vec2 vPosition; -uniform highp mat4 uMvpMatrix; -uniform highp vec3 uSize; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec3 uSize; //Visual size and offset -uniform mediump vec2 offset; -uniform highp vec2 size; -uniform mediump vec4 offsetSizeMode; -uniform mediump vec2 origin; -uniform mediump vec2 anchorPoint; + UNIFORM mediump vec2 offset; + UNIFORM highp vec2 size; + UNIFORM mediump vec4 offsetSizeMode; + UNIFORM mediump vec2 origin; + UNIFORM mediump vec2 anchorPoint; +}; + vec4 ComputeVertexPosition() { diff --git a/dali-toolkit/internal/graphics/shaders/bloom-view-composite-shader.frag b/dali-toolkit/internal/graphics/shaders/bloom-view-composite-shader.frag index ff5778b8f4..affb1571bf 100644 --- a/dali-toolkit/internal/graphics/shaders/bloom-view-composite-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/bloom-view-composite-shader.frag @@ -1,12 +1,20 @@ +//@name bloom-view-composite-shader.frag + +//@version 100 + precision mediump float; -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform sampler2D sEffect; -uniform lowp vec4 uColor; -uniform float uBloomIntensity; -uniform float uImageIntensity; -uniform float uBloomSaturation; -uniform float uImageSaturation; +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM sampler2D sEffect; + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM float uBloomIntensity; + UNIFORM float uImageIntensity; + UNIFORM float uBloomSaturation; + UNIFORM float uImageSaturation; +}; vec4 ChangeSaturation(vec4 col, float sat) { @@ -18,8 +26,8 @@ void main() { mediump vec4 image; mediump vec4 bloom; - image = texture2D(sTexture, vTexCoord); - bloom = texture2D(sEffect, vTexCoord); + image = TEXTURE(sTexture, vTexCoord); + bloom = TEXTURE(sEffect, vTexCoord); image = ChangeSaturation(image, uImageSaturation) * uImageIntensity; bloom = ChangeSaturation(bloom, uBloomSaturation) * uBloomIntensity; image *= 1.0 - clamp(bloom, 0.0, 1.0); // darken base where bloom is strong, to prevent excessive burn-out of result diff --git a/dali-toolkit/internal/graphics/shaders/bloom-view-extract-shader.frag b/dali-toolkit/internal/graphics/shaders/bloom-view-extract-shader.frag index 98439ed87d..d65579704c 100644 --- a/dali-toolkit/internal/graphics/shaders/bloom-view-extract-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/bloom-view-extract-shader.frag @@ -1,13 +1,20 @@ -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform lowp vec4 uColor; -uniform mediump float uBloomThreshold; -uniform mediump float uRecipOneMinusBloomThreshold; +//@name bloom-view-extract-shader.frag + +//@version 100 + +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM mediump float uBloomThreshold; + UNIFORM mediump float uRecipOneMinusBloomThreshold; +}; void main() { mediump vec4 col; - col = texture2D(sTexture, vTexCoord); + col = TEXTURE(sTexture, vTexCoord); col = (col - uBloomThreshold) * uRecipOneMinusBloomThreshold; // remove intensities lower than the thresold and remap intensities above the threshold to [0..1] gl_FragColor = clamp(col, 0.0, 1.0); } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/blur-effect.frag b/dali-toolkit/internal/graphics/shaders/blur-effect.frag index 0f0ca14c22..ebe3511f8b 100644 --- a/dali-toolkit/internal/graphics/shaders/blur-effect.frag +++ b/dali-toolkit/internal/graphics/shaders/blur-effect.frag @@ -1,14 +1,21 @@ -varying highp vec2 vTexCoord; -uniform sampler2D sTexture; -uniform highp vec2 uSampleOffsets[NUM_SAMPLES]; -uniform highp float uSampleWeights[NUM_SAMPLES]; +//@name blur-effect.frag + +//@version 100 + +INPUT highp vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM highp vec2 uSampleOffsets[NUM_SAMPLES]; + UNIFORM highp float uSampleWeights[NUM_SAMPLES]; +}; void main() { highp vec4 col = vec4(0.0); for (int i=0; i 0.0) { - mediump float shadowDistance = texture2D(sTexture, vTexCoord - uShadowOffset).a; + mediump float shadowDistance = TEXTURE(sTexture, vTexCoord - uShadowOffset).a; mediump float inText = alphaFactor; mediump float inShadow = smoothstep(smoothing - smoothWidth, smoothing + smoothWidth, shadowDistance); diff --git a/dali-toolkit/internal/graphics/shaders/effects-view.frag b/dali-toolkit/internal/graphics/shaders/effects-view.frag index 9c66b3b2a9..bf6f369194 100644 --- a/dali-toolkit/internal/graphics/shaders/effects-view.frag +++ b/dali-toolkit/internal/graphics/shaders/effects-view.frag @@ -1,9 +1,17 @@ -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform lowp vec4 effectColor; +//@name effects-view.frag + +//@version 100 + +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 effectColor; +}; void main() { gl_FragColor = effectColor; - gl_FragColor.a *= texture2D( sTexture, vTexCoord).a; + gl_FragColor.a *= TEXTURE( sTexture, vTexCoord).a; } diff --git a/dali-toolkit/internal/graphics/shaders/effects-view.vert b/dali-toolkit/internal/graphics/shaders/effects-view.vert index e8b7984db9..0b3975e01b 100644 --- a/dali-toolkit/internal/graphics/shaders/effects-view.vert +++ b/dali-toolkit/internal/graphics/shaders/effects-view.vert @@ -1,8 +1,15 @@ -attribute mediump vec2 aPosition; -varying mediump vec2 vTexCoord; -uniform mediump mat4 uMvpMatrix; -uniform mediump vec3 uSize; -uniform mediump vec3 effectOffset; +//@name effects-view.vert + +//@version 100 + +INPUT mediump vec2 aPosition; +OUTPUT mediump vec2 vTexCoord; +UNIFORM_BLOCK VertBlock +{ + UNIFORM mediump mat4 uMvpMatrix; + UNIFORM mediump vec3 uSize; + UNIFORM mediump vec3 effectOffset; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/emboss-filter-composite-shader.frag b/dali-toolkit/internal/graphics/shaders/emboss-filter-composite-shader.frag index 1ef9fc19a8..0dca02b109 100644 --- a/dali-toolkit/internal/graphics/shaders/emboss-filter-composite-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/emboss-filter-composite-shader.frag @@ -1,9 +1,16 @@ -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform lowp vec4 uEffectColor; +//@name emboss-filter-composite-shader.frag + +//@version 100 + +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uEffectColor; +}; void main() { gl_FragColor = uEffectColor; - gl_FragColor.a *= texture2D( sTexture, vTexCoord).a; + gl_FragColor.a *= TEXTURE( sTexture, vTexCoord).a; } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/emboss-filter-shader.frag b/dali-toolkit/internal/graphics/shaders/emboss-filter-shader.frag index 2a6761aea4..b73e22f724 100644 --- a/dali-toolkit/internal/graphics/shaders/emboss-filter-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/emboss-filter-shader.frag @@ -1,13 +1,20 @@ +//@name emboss-filter-shader.frag + +//@version 100 + precision highp float; -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform vec2 uTexScale; -uniform vec3 uCoefficient; +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM vec2 uTexScale; + UNIFORM vec3 uCoefficient; +}; void main() { - vec4 color = uCoefficient.x * texture2D( sTexture, vTexCoord + vec2(0.0, -uTexScale.y) ); - color += uCoefficient.y * texture2D( sTexture, vTexCoord ); - color += uCoefficient.z * texture2D( sTexture, vTexCoord + vec2(0.0, uTexScale.y) ); + vec4 color = uCoefficient.x * TEXTURE( sTexture, vTexCoord + vec2(0.0, -uTexScale.y) ); + color += uCoefficient.y * TEXTURE( sTexture, vTexCoord ); + color += uCoefficient.z * TEXTURE( sTexture, vTexCoord + vec2(0.0, uTexScale.y) ); gl_FragColor = color; } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/gaussian-blur-view.frag b/dali-toolkit/internal/graphics/shaders/gaussian-blur-view.frag index 0f0ca14c22..438042cbdf 100644 --- a/dali-toolkit/internal/graphics/shaders/gaussian-blur-view.frag +++ b/dali-toolkit/internal/graphics/shaders/gaussian-blur-view.frag @@ -1,14 +1,21 @@ -varying highp vec2 vTexCoord; -uniform sampler2D sTexture; -uniform highp vec2 uSampleOffsets[NUM_SAMPLES]; -uniform highp float uSampleWeights[NUM_SAMPLES]; +//@name gaussian-blur-view.frag + +//@version 100 + +INPUT highp vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM highp vec2 uSampleOffsets[NUM_SAMPLES]; + UNIFORM highp float uSampleWeights[NUM_SAMPLES]; +}; void main() { highp vec4 col = vec4(0.0); for (int i=0; i 0.0 ) texel = texture2D( sTexture, vec2( 1.0 - vTexCoord.x, vTexCoord.y ) ); + if( dot(vPosition.xyz, normal) > 0.0 ) texel = TEXTURE( sTexture, vec2( 1.0 - vTexCoord.x, vTexCoord.y ) ); // display front image of the page - else texel = texture2D( sTexture, vTexCoord ); + else texel = TEXTURE( sTexture, vTexCoord ); // display book spine, a stripe of shadowed texture float pixelPos = vTexCoord.x * uSize.x; diff --git a/dali-toolkit/internal/graphics/shaders/page-turn-effect.vert b/dali-toolkit/internal/graphics/shaders/page-turn-effect.vert index 9705061796..1ee681ff7a 100644 --- a/dali-toolkit/internal/graphics/shaders/page-turn-effect.vert +++ b/dali-toolkit/internal/graphics/shaders/page-turn-effect.vert @@ -1,3 +1,7 @@ +//@name page-turn-effect.vert + +//@version 100 + /* * The common parameters for all the vertices, calculate in CPU then pass into the shader as uniforms * @@ -18,20 +22,28 @@ precision mediump float; -attribute mediump vec2 aPosition; +INPUT mediump vec2 aPosition; -uniform mediump mat4 uMvpMatrix; -uniform mediump mat3 uNormalMatrix; -uniform mediump mat4 uModelView; +UNIFORM_BLOCK VertBlock +{ + UNIFORM mediump mat4 uMvpMatrix; + UNIFORM mediump mat3 uNormalMatrix; + UNIFORM mediump mat4 uModelView; -uniform mat4 uCommonParameters; + UNIFORM mat4 uCommonParameters; -uniform vec3 uSize; -uniform float uIsTurningBack; -uniform float uTextureWidth; -varying vec3 vNormal; -varying vec4 vPosition; -varying mediump vec2 vTexCoord; + UNIFORM float uIsTurningBack; + UNIFORM float uTextureWidth; +}; + +UNIFORM_BLOCK SharedBlock +{ + UNIFORM vec3 uSize; +}; + +OUTPUT vec3 vNormal; +OUTPUT vec4 vPosition; +OUTPUT mediump vec2 vTexCoord; void main() { @@ -156,7 +168,8 @@ void main() } vNormal = uNormalMatrix * normal; gl_Position = uMvpMatrix * position; - // varying parameters for fragment shader + + // out parameters for fragment shader vTexCoord = aPosition + vec2(0.5); vTexCoord.x /= uTextureWidth; vPosition = uModelView * position; diff --git a/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.frag index 751f52773f..c7e144a3c1 100644 --- a/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.frag @@ -1,8 +1,16 @@ +//@name primitive-visual-shader.frag + +//@version 100 + //Very simple fragment shader that merely applies the vertex shading to the color at each fragment. precision mediump float; -varying mediump vec3 vIllumination; -uniform lowp vec4 uColor; +INPUT mediump vec3 vIllumination; + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert index 12002941dd..aae2d7f003 100644 --- a/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/primitive-visual-shader.vert @@ -1,25 +1,32 @@ +//@name primitive-visual-shader.vert + +//@version 100 + //A simple shader that applies diffuse lighting to a mono-coloured object. -attribute highp vec3 aPosition; -attribute highp vec2 aTexCoord; -attribute highp vec3 aNormal; -varying mediump vec3 vIllumination; -uniform mediump vec3 uSize; -uniform mediump vec3 uObjectDimensions; -uniform mediump mat4 uMvpMatrix; -uniform mediump mat4 uModelView; -uniform mediump mat4 uViewMatrix; -uniform mediump mat3 uNormalMatrix; -uniform mediump mat4 uObjectMatrix; -uniform mediump vec3 lightPosition; -uniform mediump vec2 uStageOffset; +INPUT highp vec3 aPosition; +INPUT highp vec2 aTexCoord; +INPUT highp vec3 aNormal; +OUTPUT mediump vec3 vIllumination; +UNIFORM_BLOCK VertBlock +{ + UNIFORM mediump vec3 uSize; + UNIFORM mediump vec3 uObjectDimensions; + UNIFORM mediump mat4 uMvpMatrix; + UNIFORM mediump mat4 uModelView; + UNIFORM mediump mat4 uViewMatrix; + UNIFORM mediump mat3 uNormalMatrix; + UNIFORM mediump mat4 uObjectMatrix; + UNIFORM mediump vec3 lightPosition; + UNIFORM mediump vec2 uStageOffset; //Visual size and offset -uniform mediump vec2 offset; -uniform mediump vec2 size; -uniform mediump vec4 offsetSizeMode; -uniform mediump vec2 origin; -uniform mediump vec2 anchorPoint; + UNIFORM mediump vec2 offset; + UNIFORM mediump vec2 size; + UNIFORM mediump vec4 offsetSizeMode; + UNIFORM mediump vec2 origin; + UNIFORM mediump vec2 anchorPoint; +}; vec4 ComputeVertexPosition() { diff --git a/dali-toolkit/internal/graphics/shaders/render-effect.frag b/dali-toolkit/internal/graphics/shaders/render-effect.frag index 40968e0e53..4bf0d811e3 100644 --- a/dali-toolkit/internal/graphics/shaders/render-effect.frag +++ b/dali-toolkit/internal/graphics/shaders/render-effect.frag @@ -1,12 +1,24 @@ +//@name render-effect.frag + +//@version 100 + precision highp float; -varying highp vec2 vTexCoord; -varying highp vec2 vOptRectSize; -varying highp vec4 vCornerRadius; +INPUT highp vec2 vTexCoord; +INPUT highp vec2 vOptRectSize; +INPUT highp vec4 vCornerRadius; + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM highp vec4 uCornerSquareness; +}; + +UNIFORM_BLOCK SharedBlock +{ + UNIFORM highp vec3 uSize; +}; -uniform lowp vec4 uColor; -uniform highp vec3 uSize; -uniform highp vec4 uCornerSquareness; -uniform sampler2D sTexture; +UNIFORM sampler2D sTexture; highp float nrand(const in vec2 uv) { @@ -55,7 +67,7 @@ float roundedBoxSDF(vec2 pixelPositionFromCenter, vec2 rectangleEdgePositionFrom void main() { - gl_FragColor = texture2D(sTexture, vTexCoord) * uColor; + gl_FragColor = TEXTURE(sTexture, vTexCoord) * uColor; gl_FragColor.rgb = applyDithering(gl_FragColor.rgb); highp vec2 location = (vTexCoord.xy - vec2(0.5)) * uSize.xy; diff --git a/dali-toolkit/internal/graphics/shaders/render-effect.vert b/dali-toolkit/internal/graphics/shaders/render-effect.vert index c46d0dd68f..01dc50449b 100644 --- a/dali-toolkit/internal/graphics/shaders/render-effect.vert +++ b/dali-toolkit/internal/graphics/shaders/render-effect.vert @@ -1,15 +1,26 @@ +//@name render-effect.vert + +//@version 100 + precision highp float; -attribute highp vec2 aPosition; +INPUT highp vec2 aPosition; -varying highp vec2 vTexCoord; -varying highp vec2 vOptRectSize; -varying highp vec4 vCornerRadius; //output +OUTPUT highp vec2 vTexCoord; +OUTPUT highp vec2 vOptRectSize; +OUTPUT highp vec4 vCornerRadius; //output -uniform highp mat4 uMvpMatrix; -uniform highp vec4 uCornerRadius; //input -uniform lowp float uCornerRadiusPolicy; -uniform highp vec3 uSize; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec4 uCornerRadius;//input + UNIFORM lowp float uCornerRadiusPolicy; +}; + +UNIFORM_BLOCK SharedBlock +{ +UNIFORM highp vec3 uSize; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.frag b/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.frag index d193acfb4a..bcc39f7d19 100644 --- a/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.frag @@ -1,10 +1,17 @@ -varying mediump vec2 vTexCoord; -uniform lowp vec4 uShadowColor; -uniform sampler2D sTexture; +//@name shadow-view-render-shader.frag + +//@version 100 + +INPUT mediump vec2 vTexCoord; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uShadowColor; +}; +UNIFORM sampler2D sTexture; void main() { lowp float alpha; - alpha = texture2D(sTexture, vec2(vTexCoord.x, vTexCoord.y)).a; + alpha = TEXTURE(sTexture, vec2(vTexCoord.x, vTexCoord.y)).a; gl_FragColor = vec4(uShadowColor.rgb, uShadowColor.a * alpha); } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.vert b/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.vert index 4b38884c9a..6ed9c9bc9e 100644 --- a/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/shadow-view-render-shader.vert @@ -1,11 +1,18 @@ -attribute mediump vec2 aPosition; -uniform mediump mat4 uMvpMatrix; -uniform mediump mat4 uModelMatrix; -uniform vec3 uSize; -varying vec2 vTexCoord; +//@name shadow-view-render-shader.vert -uniform mediump mat4 uLightCameraProjectionMatrix; -uniform mediump mat4 uLightCameraViewMatrix; +//@version 100 + +INPUT mediump vec2 aPosition; +OUTPUT vec2 vTexCoord; + +UNIFORM_BLOCK VertBlock +{ + UNIFORM mediump mat4 uMvpMatrix; + UNIFORM mediump mat4 uModelMatrix; + UNIFORM vec3 uSize; + UNIFORM mediump mat4 uLightCameraProjectionMatrix; + UNIFORM mediump mat4 uLightCameraViewMatrix; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/spread-filter-shader.frag b/dali-toolkit/internal/graphics/shaders/spread-filter-shader.frag index ac8276323d..a6a19d6cd3 100644 --- a/dali-toolkit/internal/graphics/shaders/spread-filter-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/spread-filter-shader.frag @@ -1,17 +1,24 @@ +//@name spread-filter-shader.frag + +//@version 100 + precision highp float; -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform int uSpread; -uniform vec2 uTexScale; +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM int uSpread; + UNIFORM vec2 uTexScale; +}; void main() { - vec4 color = texture2D( sTexture, vTexCoord); + vec4 color = TEXTURE( sTexture, vTexCoord); for( int i = 1; i <= uSpread; ++i ) { vec2 offset = uTexScale * float(i); - color = max( texture2D( sTexture, vTexCoord + offset), color ); - color = max( texture2D( sTexture, vTexCoord - offset), color ); + color = max( TEXTURE( sTexture, vTexCoord + offset), color ); + color = max( TEXTURE( sTexture, vTexCoord - offset), color ); } gl_FragColor = color; } \ No newline at end of file diff --git a/dali-toolkit/internal/graphics/shaders/super-blur-view.frag b/dali-toolkit/internal/graphics/shaders/super-blur-view.frag index aad41e1a54..591287e90f 100644 --- a/dali-toolkit/internal/graphics/shaders/super-blur-view.frag +++ b/dali-toolkit/internal/graphics/shaders/super-blur-view.frag @@ -1,10 +1,17 @@ -varying mediump vec2 vTexCoord; -uniform sampler2D sTexture; -uniform lowp vec4 uColor; -uniform lowp float uAlpha; +//@name super-blur-view.frag + +//@version 100 + +INPUT mediump vec2 vTexCoord; +UNIFORM sampler2D sTexture; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM lowp float uAlpha; +}; void main() { - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor; + gl_FragColor = TEXTURE( sTexture, vTexCoord ) * uColor; gl_FragColor.a *= uAlpha; } diff --git a/dali-toolkit/internal/graphics/shaders/text-atlas-l8-shader.frag b/dali-toolkit/internal/graphics/shaders/text-atlas-l8-shader.frag index e42de21e5b..9140b69f88 100644 --- a/dali-toolkit/internal/graphics/shaders/text-atlas-l8-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/text-atlas-l8-shader.frag @@ -1,11 +1,18 @@ -uniform lowp vec4 uColor; -uniform lowp vec4 textColorAnimatable; -uniform sampler2D sTexture; -varying mediump vec2 vTexCoord; -varying mediump vec4 vColor; +//@name text-atlas-l8-shader.frag + +//@version 100 + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM lowp vec4 textColorAnimatable; +}; +UNIFORM sampler2D sTexture; +INPUT mediump vec2 vTexCoord; +INPUT mediump vec4 vColor; void main() { - mediump vec4 color = texture2D( sTexture, vTexCoord ); + mediump vec4 color = TEXTURE( sTexture, vTexCoord ); gl_FragColor = vec4( vColor.rgb * uColor.rgb * textColorAnimatable.rgb, uColor.a * vColor.a * textColorAnimatable.a * color.r ); } diff --git a/dali-toolkit/internal/graphics/shaders/text-atlas-rgba-shader.frag b/dali-toolkit/internal/graphics/shaders/text-atlas-rgba-shader.frag index 966ee90555..d63b685b38 100644 --- a/dali-toolkit/internal/graphics/shaders/text-atlas-rgba-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/text-atlas-rgba-shader.frag @@ -1,9 +1,16 @@ -uniform lowp vec4 uColor; -uniform lowp vec4 textColorAnimatable; -uniform sampler2D sTexture; -varying mediump vec2 vTexCoord; +//@name text-atlas-rgba-shader.frag + +//@version 100 + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; + UNIFORM lowp vec4 textColorAnimatable; +}; +UNIFORM sampler2D sTexture; +INPUT mediump vec2 vTexCoord; void main() { - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * textColorAnimatable; + gl_FragColor = TEXTURE( sTexture, vTexCoord ) * uColor * textColorAnimatable; } diff --git a/dali-toolkit/internal/graphics/shaders/text-atlas-shader.vert b/dali-toolkit/internal/graphics/shaders/text-atlas-shader.vert index 0d2d621688..9edcda8b50 100644 --- a/dali-toolkit/internal/graphics/shaders/text-atlas-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-atlas-shader.vert @@ -1,10 +1,18 @@ -attribute highp vec2 aPosition; -attribute mediump vec2 aTexCoord; -attribute mediump vec4 aColor; -uniform mediump vec2 uOffset; -uniform highp mat4 uMvpMatrix; -varying mediump vec2 vTexCoord; -varying mediump vec4 vColor; +//@name text-atlas-shader.vert + +//@version 100 + +INPUT highp vec2 aPosition; +INPUT mediump vec2 aTexCoord; +INPUT mediump vec4 aColor; + +UNIFORM_BLOCK VertBlock +{ + UNIFORM mediump vec2 uOffset; + UNIFORM highp mat4 uMvpMatrix; +}; +OUTPUT mediump vec2 vTexCoord; +OUTPUT mediump vec4 vColor; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.frag b/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.frag index c935d22108..4cc103b661 100644 --- a/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.frag @@ -1,5 +1,12 @@ -varying mediump vec4 vColor; -uniform lowp vec4 uColor; +//@name text-controller-background-shader.frag + +//@version 100 + +INPUT mediump vec4 vColor; +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.vert b/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.vert index 9ce403cba9..60b51171db 100644 --- a/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-controller-background-shader.vert @@ -1,7 +1,14 @@ -attribute mediump vec2 aPosition; -attribute mediump vec4 aColor; -varying mediump vec4 vColor; -uniform highp mat4 uMvpMatrix; +//@name text-controller-background-shader.vert + +//@version 100 + +INPUT mediump vec2 aPosition; +INPUT mediump vec4 aColor; +OUTPUT mediump vec4 vColor; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/text-decorator-shader.frag b/dali-toolkit/internal/graphics/shaders/text-decorator-shader.frag index 7402ddef75..836e39f2fc 100644 --- a/dali-toolkit/internal/graphics/shaders/text-decorator-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/text-decorator-shader.frag @@ -1,5 +1,11 @@ -uniform lowp vec4 uColor; +//@name text-decorator-shader.frag +//@version 100 + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; void main() { gl_FragColor = uColor; diff --git a/dali-toolkit/internal/graphics/shaders/text-decorator-shader.vert b/dali-toolkit/internal/graphics/shaders/text-decorator-shader.vert index 6afdfca6aa..ef08b5e1ad 100644 --- a/dali-toolkit/internal/graphics/shaders/text-decorator-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-decorator-shader.vert @@ -1,6 +1,12 @@ -attribute mediump vec2 aPosition; -uniform highp mat4 uMvpMatrix; +//@name text-decorator-shader.vert +//@version 100 + +INPUT mediump vec2 aPosition; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; +}; void main() { mediump vec4 position = vec4( aPosition, 0.0, 1.0 ); diff --git a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.frag b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.frag index 876628abc3..cc7689db0d 100644 --- a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.frag @@ -1,13 +1,21 @@ -varying highp vec2 vTexCoord; -uniform sampler2D sTexture; -uniform lowp vec4 uColor; +//@name text-scroller-shader.frag + +//@version 100 + +INPUT highp vec2 vTexCoord; +UNIFORM sampler2D sTexture; + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; void main() { if ( vTexCoord.y > 1.0 ) discard; - mediump vec4 textTexture = texture2D( sTexture, vTexCoord ); + mediump vec4 textTexture = TEXTURE( sTexture, vTexCoord ); gl_FragColor = textTexture * uColor; } diff --git a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert index c152b5e3be..ef61fd01fe 100644 --- a/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-scroller-shader.vert @@ -1,21 +1,27 @@ -attribute mediump vec2 aPosition; -varying highp vec2 vTexCoord; -uniform highp vec3 uSize; -uniform highp float uDelta; -uniform mediump vec2 uTextureSize; -uniform highp float uGap; -uniform mediump float uHorizontalAlign; -uniform mediump float uVerticalAlign; +//@name text-scroller-shader.vert -uniform highp mat4 uMvpMatrix; +//@version 100 -//Visual size and offset -uniform mediump vec2 offset; -uniform highp vec2 size; -uniform mediump vec4 offsetSizeMode; -uniform mediump vec2 origin; -uniform mediump vec2 anchorPoint; +INPUT mediump vec2 aPosition; +OUTPUT highp vec2 vTexCoord; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp vec3 uSize; + UNIFORM highp float uDelta; + UNIFORM mediump vec2 uTextureSize; + UNIFORM highp float uGap; + UNIFORM mediump float uHorizontalAlign; + UNIFORM mediump float uVerticalAlign; + UNIFORM highp mat4 uMvpMatrix; + + //Visual size and offset + UNIFORM mediump vec2 offset; + UNIFORM highp vec2 size; + UNIFORM mediump vec4 offsetSizeMode; + UNIFORM mediump vec2 origin; + UNIFORM mediump vec2 anchorPoint; +}; void main() { highp vec2 visualSize = mix(size * uSize.xy, size, offsetSizeMode.zw); diff --git a/dali-toolkit/internal/graphics/shaders/text-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/text-visual-shader.frag index 8cd690a3ca..924d90417c 100644 --- a/dali-toolkit/internal/graphics/shaders/text-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/text-visual-shader.frag @@ -1,20 +1,32 @@ +//@name text-visual-shader.frag + +//@version 100 + INPUT mediump vec2 vTexCoord; -uniform sampler2D sTexture; +UNIFORM sampler2D sTexture; #ifdef IS_REQUIRED_STYLE -uniform sampler2D sStyle; +UNIFORM sampler2D sStyle; #endif #ifdef IS_REQUIRED_OVERLAY -uniform sampler2D sOverlayStyle; +UNIFORM sampler2D sOverlayStyle; #endif + #ifdef IS_REQUIRED_MULTI_COLOR #elif defined(IS_REQUIRED_EMOJI) // Single color with emoji. -uniform sampler2D sMask; -uniform lowp float uHasMultipleTextColors; +UNIFORM sampler2D sMask; #endif -uniform lowp vec4 uTextColorAnimatable; -uniform lowp vec4 uColor; +UNIFORM_BLOCK FragBlock +{ + #ifdef IS_REQUIRED_MULTI_COLOR + #elif defined(IS_REQUIRED_EMOJI) + // Single color with emoji. + UNIFORM lowp float uHasMultipleTextColors; + #endif + UNIFORM lowp vec4 uTextColorAnimatable; + UNIFORM lowp vec4 uColor; +}; void main() { #ifdef IS_REQUIRED_STYLE @@ -47,7 +59,7 @@ void main() #endif // Draw the text as overlay above the style - OUT_COLOR = uColor * ( + gl_FragColor = uColor * ( #ifdef IS_REQUIRED_OVERLAY ( #endif diff --git a/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert index 68503a9af2..04c7152a72 100644 --- a/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/text-visual-shader.vert @@ -1,15 +1,22 @@ -INPUT mediump vec2 aPosition; -uniform highp mat4 uMvpMatrix; -uniform highp vec3 uSize; +//@name text-visual-shader.vert + +//@version 100 +INPUT mediump vec2 aPosition; OUTPUT mediump vec2 vTexCoord; -//Visual size and offset -uniform mediump vec2 offset; -uniform highp vec2 size; -uniform mediump vec4 offsetSizeMode; -uniform mediump vec2 origin; -uniform mediump vec2 anchorPoint; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec3 uSize; + + //Visual size and offset + UNIFORM mediump vec2 offset; + UNIFORM highp vec2 size; + UNIFORM mediump vec4 offsetSizeMode; + UNIFORM mediump vec2 origin; + UNIFORM mediump vec2 anchorPoint; +}; vec4 ComputeVertexPosition() { diff --git a/dali-toolkit/internal/graphics/shaders/video-view-texture.frag b/dali-toolkit/internal/graphics/shaders/video-view-texture.frag index 306f12e7e1..3be448dedc 100644 --- a/dali-toolkit/internal/graphics/shaders/video-view-texture.frag +++ b/dali-toolkit/internal/graphics/shaders/video-view-texture.frag @@ -1,8 +1,16 @@ -uniform lowp vec4 uColor; -varying mediump vec2 vTexCoord; -uniform samplerExternalOES sTexture; +//@name video-view-texture.frag + +//@version 100 + +INPUT mediump vec2 vTexCoord; +UNIFORM samplerExternalOES sTexture; + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; void main() { - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor; + gl_FragColor = TEXTURE( sTexture, vTexCoord ) * uColor; } diff --git a/dali-toolkit/internal/graphics/shaders/video-view-texture.vert b/dali-toolkit/internal/graphics/shaders/video-view-texture.vert index 79cbb23937..5493474794 100644 --- a/dali-toolkit/internal/graphics/shaders/video-view-texture.vert +++ b/dali-toolkit/internal/graphics/shaders/video-view-texture.vert @@ -1,8 +1,15 @@ -attribute mediump vec2 aPosition; -varying mediump vec2 vTexCoord; -uniform highp mat4 uMvpMatrix; -uniform highp vec3 uSize; -varying mediump vec2 sTexCoordRect; +//@name video-view-texture.vert + +//@version 100 + +INPUT mediump vec2 aPosition; +OUTPUT mediump vec2 vTexCoord; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec3 uSize; +}; +OUTPUT mediump vec2 sTexCoordRect; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/video-view.frag b/dali-toolkit/internal/graphics/shaders/video-view.frag index 8045c0def0..3baad97289 100644 --- a/dali-toolkit/internal/graphics/shaders/video-view.frag +++ b/dali-toolkit/internal/graphics/shaders/video-view.frag @@ -1,3 +1,7 @@ +//@name video-view.frag + +//@version 100 + void main() { gl_FragColor = vec4(0.0); diff --git a/dali-toolkit/internal/graphics/shaders/video-view.vert b/dali-toolkit/internal/graphics/shaders/video-view.vert index 3f824dd1b0..7723ddc679 100644 --- a/dali-toolkit/internal/graphics/shaders/video-view.vert +++ b/dali-toolkit/internal/graphics/shaders/video-view.vert @@ -1,6 +1,13 @@ -attribute mediump vec2 aPosition; -uniform highp mat4 uMvpMatrix; -uniform highp vec3 uSize; +//@name video-view.vert + +//@version 100 + +INPUT mediump vec2 aPosition; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec3 uSize; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.frag index c75da53311..ed173fa340 100644 --- a/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.frag @@ -1,4 +1,11 @@ -uniform lowp vec4 uColor; +//@name wireframe-visual-shader.frag + +//@version 100 + +UNIFORM_BLOCK FragBlock +{ + UNIFORM lowp vec4 uColor; +}; void main() { diff --git a/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert index 9a9975cda1..74c29b7e84 100644 --- a/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/wireframe-visual-shader.vert @@ -1,13 +1,20 @@ -attribute mediump vec2 aPosition; -uniform highp mat4 uMvpMatrix; -uniform highp vec3 uSize; +//@name wireframe-visual-shader.vert + +//@version 100 + +INPUT mediump vec2 aPosition; +UNIFORM_BLOCK VertBlock +{ + UNIFORM highp mat4 uMvpMatrix; + UNIFORM highp vec3 uSize; //Visual size and offset -uniform mediump vec2 offset; -uniform highp vec2 size; -uniform mediump vec4 offsetSizeMode; -uniform mediump vec2 origin; -uniform mediump vec2 anchorPoint; + UNIFORM mediump vec2 offset; + UNIFORM highp vec2 size; + UNIFORM mediump vec4 offsetSizeMode; + UNIFORM mediump vec2 origin; + UNIFORM mediump vec2 anchorPoint; +}; vec4 ComputeVertexPosition() {