-#version 300 es
+//@version 100
precision mediump float;
const float kAttenuationQuadratic = .15f;
// G-buffer
-uniform sampler2D uTextureNormal;
-uniform sampler2D uTexturePosition;
-uniform sampler2D uTextureColor;
+UNIFORM sampler2D uTextureNormal;
+UNIFORM sampler2D uTexturePosition;
+UNIFORM sampler2D uTextureColor;
-uniform mat4 uInvProjection;
-uniform vec3 uDepth_InvDepth_Near;
+UNIFORM_BLOCK FragBuffer
+{
+ UNIFORM mat4 uInvProjection;
+ UNIFORM vec3 uDepth_InvDepth_Near;
+};
#define DEPTH uDepth_InvDepth_Near.x
#define INV_DEPTH uDepth_InvDepth_Near.y
vec3 color;
};
-uniform Light uLights[kMaxLights];
+UNIFORM_BLOCK LightsBuffer
+{
+UNIFORM Light uLights[kMaxLights];
+};
-in vec2 vUv;
-out vec4 oColor;
+INPUT vec2 vUv;
vec4 Unmap(vec4 m) // texture -> projection
{
void main()
{
- vec3 normSample = texture(uTextureNormal, vUv).xyz;
+ vec3 normSample = TEXTURE(uTextureNormal, vUv).xyz;
if (dot(normSample, normSample) == 0.f)
{
discard; // if we didn't write this texel, don't bother lighting it.
vec3 normal = normalize(normSample - .5f);
- vec4 posSample = texture(uTexturePosition, vUv);
+ vec4 posSample = TEXTURE(uTexturePosition, vUv);
vec3 pos = (uInvProjection * Unmap(posSample)).xyz;
- vec3 color = texture(uTextureColor, vUv).rgb;
+ vec3 color = TEXTURE(uTextureColor, vUv).rgb;
vec3 finalColor = color * CalculateLighting(pos, normal);
- oColor = vec4(finalColor, 1.f);
+ gl_FragColor = vec4(finalColor, 1.f);
}
-#version 300 es
+//@version 100
+
precision mediump float;
// DALI uniform
-uniform vec4 uColor;
+UNIFORM_BLOCK FragBuffer
+{
+ UNIFORM vec4 uColor;
+};
-in vec4 vPosition;
-in vec3 vNormal;
+INPUT vec4 vPosition;
+INPUT vec3 vNormal;
// These are our outputs.
-layout(location = 0) out vec3 oNormal;
-layout(location = 1) out vec4 oPosition;
-layout(location = 2) out vec3 oColor;
+OUTPUT vec3 oNormal;
+layout(location=1) out vec4 oPosition;
+layout(location=2) out vec3 oColor;
void main()
{
-#version 300 es
+//@version 100
precision mediump float;
// DALI uniforms
-uniform mat4 uMvpMatrix;
-uniform mat3 uNormalMatrix;
-uniform vec3 uSize;
-
-uniform vec3 uDepth_InvDepth_Near;
+UNIFORM_BLOCK VertBuffer
+{
+UNIFORM mat4 uMvpMatrix;
+UNIFORM mat3 uNormalMatrix;
+UNIFORM vec3 uSize;
+UNIFORM vec3 uDepth_InvDepth_Near;
+};
#define DEPTH uDepth_InvDepth_Near.x
#define INV_DEPTH uDepth_InvDepth_Near.y
#define NEAR uDepth_InvDepth_Near.z
-in vec3 aPosition;
-in vec3 aNormal;
+INPUT vec3 aPosition;
+INPUT vec3 aNormal;
-out vec4 vPosition;
-out vec3 vNormal;
+OUTPUT vec4 vPosition;
+OUTPUT vec3 vNormal;
vec4 Map(vec4 v) // projection space -> texture
{