Reduced precision of shader variables to increase performance
OSX library now compiling again --HG-- extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%4052
This commit is contained in:
@@ -167,6 +167,8 @@ KRShader::~KRShader() {
|
||||
}
|
||||
}
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
|
||||
void KRShader::bind(KRCamera *pCamera, KRMat4 &matModelToView, KRMat4 &mvpMatrix, KRVector3 &cameraPosition, KRVector3 &lightDirection, KRMat4 *pShadowMatrices, GLuint *shadowDepthTextures, int cShadowBuffers, int gBufferPass) {
|
||||
glUseProgram(m_iProgram);
|
||||
|
||||
@@ -240,6 +242,8 @@ void KRShader::bind(KRCamera *pCamera, KRMat4 &matModelToView, KRMat4 &mvpMatrix
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
GLuint KRShader::getProgram() {
|
||||
return m_iProgram;
|
||||
}
|
||||
|
||||
@@ -51,8 +51,12 @@ public:
|
||||
GLuint getProgram();
|
||||
char *getKey();
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
|
||||
void bind(KRCamera *pCamera, KRMat4 &matModelToView, KRMat4 &mvpMatrix, KRVector3 &cameraPosition, KRVector3 &lightDirection, KRMat4 *pShadowMatrices, GLuint *shadowDepthTextures, int cShadowBuffers, int gBufferPass);
|
||||
|
||||
#endif
|
||||
|
||||
enum {
|
||||
KRENGINE_ATTRIB_VERTEX,
|
||||
KRENGINE_ATTRIB_NORMAL,
|
||||
|
||||
@@ -258,7 +258,5 @@ void main()
|
||||
gl_FragColor = vec4(gl_FragColor.r * lightMapColor.r, gl_FragColor.g * lightMapColor.g, gl_FragColor.b * lightMapColor.b, 1.0);
|
||||
#endif
|
||||
|
||||
//gl_FragColor = vec4(vec3(specularFactor), 1.0);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -111,11 +111,11 @@ uniform highp mat4 mvp_matrix; // mvp_matrix is the result of multiplying t
|
||||
#endif
|
||||
|
||||
#if HAS_DIFFUSE_MAP_SCALE == 1
|
||||
uniform highp vec2 diffuseTexture_Scale;
|
||||
uniform highp vec2 diffuseTexture_Scale;
|
||||
#endif
|
||||
|
||||
#if HAS_DIFFUSE_MAP_OFFSET == 1
|
||||
uniform highp vec2 diffuseTexture_Offset;
|
||||
uniform highp vec2 diffuseTexture_Offset;
|
||||
#endif
|
||||
|
||||
#if HAS_DIFFUSE_MAP_OFFSET == 1 || HAS_DIFFUSE_MAP_SCALE == 1
|
||||
|
||||
@@ -30,42 +30,28 @@ uniform sampler2D gbuffer_frame;
|
||||
uniform sampler2D gbuffer_depth;
|
||||
|
||||
uniform highp vec3 lightDirection; // Must be normalized and converted to view space before entering shader
|
||||
uniform highp mat4 model_to_view_matrix;
|
||||
uniform mediump vec4 viewport;
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
mediump vec2 gbuffer_uv = vec2(gl_FragCoord.xy / viewport.zw);
|
||||
|
||||
|
||||
|
||||
|
||||
lowp vec4 gbuffer_sample = texture2D(gbuffer_frame, gbuffer_uv);
|
||||
|
||||
mediump vec3 gbuffer_normal = 2.0 * gbuffer_sample.rgb - 1.0;
|
||||
mediump float gbuffer_specular_exponent = gbuffer_sample.a * 100.0;
|
||||
|
||||
mediump vec3 view_space_light = lightDirection; // vec3(model_to_view_matrix * vec4(lightDirection, 1.0));
|
||||
|
||||
mediump float lamberFactor = max(0.0,dot(view_space_light, gbuffer_normal));
|
||||
mediump float lamberFactor = max(0.0,dot(lightDirection, gbuffer_normal));
|
||||
|
||||
|
||||
|
||||
|
||||
highp vec3 view_space_vertex_position;
|
||||
mediump vec3 view_space_vertex_position;
|
||||
view_space_vertex_position.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * viewport.xy)) / (viewport.zw) - 1.0;
|
||||
//view_space_vertex_position.z = -texture2D(gbuffer_depth, gbuffer_uv).r * 2.0;
|
||||
view_space_vertex_position.z = (2.0 * -texture2D(gbuffer_depth, gbuffer_uv).r - gl_DepthRange.near - gl_DepthRange.far) /
|
||||
(gl_DepthRange.far - gl_DepthRange.near);
|
||||
|
||||
|
||||
highp vec3 halfVec = normalize((normalize(vec3(0.0, 0.0, 0.0) - view_space_vertex_position) + view_space_light)); // Normalizing anyways, no need to divide by 2
|
||||
|
||||
mediump float specularFactor = 0.0;
|
||||
if(gbuffer_specular_exponent > 0.0) {
|
||||
mediump vec3 halfVec = normalize((normalize(vec3(0.0, 0.0, 0.0) - view_space_vertex_position) + lightDirection)); // Normalizing anyways, no need to divide by 2
|
||||
specularFactor = clamp(pow(dot(halfVec,normalize(gbuffer_normal)), gbuffer_specular_exponent), 0.0, 1.0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user