expose scale and bias setting for parallax mapping

This commit is contained in:
RealBadAngel 2013-11-02 18:59:03 +01:00
parent fed13fc872
commit 6ac731ec4e
2 changed files with 11 additions and 7 deletions

View File

@ -4,6 +4,9 @@ uniform sampler2D useNormalmap;
uniform float enableBumpmapping; uniform float enableBumpmapping;
uniform float parallaxMappingMode; uniform float parallaxMappingMode;
uniform float parallaxMappingScale;
uniform float parallaxMappingBias;
uniform vec4 skyBgColor; uniform vec4 skyBgColor;
uniform float fogDistance; uniform float fogDistance;
@ -18,10 +21,6 @@ void main (void)
{ {
float use_normalmap = texelFetch(useNormalmap,ivec2(1,1),0).r; float use_normalmap = texelFetch(useNormalmap,ivec2(1,1),0).r;
float enable_bumpmapping = enableBumpmapping; float enable_bumpmapping = enableBumpmapping;
// 0 - parallax mapping off, 1 - parallax mapping, 2 - steep parallax mapping
float parallax_scale = 0.08;
float parallax_bias = 0.04;
vec3 color; vec3 color;
vec2 uv = gl_TexCoord[0].st; vec2 uv = gl_TexCoord[0].st;
@ -30,7 +29,7 @@ void main (void)
if ((parallaxMappingMode==1) && (use_normalmap>0)) { if ((parallaxMappingMode==1) && (use_normalmap>0)) {
float map_height = texture2D(normalTexture, uv).a; float map_height = texture2D(normalTexture, uv).a;
float height = parallax_scale * map_height - parallax_bias; float height = parallaxMappingScale * map_height - parallaxMappingBias;
uv = uv + height * tsEye * normal.z; uv = uv + height * tsEye * normal.z;
} }
@ -39,7 +38,7 @@ void main (void)
float height = 1.0; float height = 1.0;
float step = 1.0 / numSteps; float step = 1.0 / numSteps;
vec4 NB = texture2D(normalTexture, uv); vec4 NB = texture2D(normalTexture, uv);
vec2 delta = tsEye * parallax_scale*normal.z / numSteps; vec2 delta = tsEye * parallaxMappingScale * normal.z / numSteps;
for (float i = 0.0; i < numSteps; i++) { for (float i = 0.0; i < numSteps; i++) {
if (NB.a < height) { if (NB.a < height) {
height -= step; height -= step;

View File

@ -819,7 +819,12 @@ public:
float parallax_mapping_mode = g_settings->getFloat("parallax_mapping_mode"); float parallax_mapping_mode = g_settings->getFloat("parallax_mapping_mode");
services->setPixelShaderConstant("parallaxMappingMode", &parallax_mapping_mode, 1); services->setPixelShaderConstant("parallaxMappingMode", &parallax_mapping_mode, 1);
if (parallax_mapping_mode > 0){
float parallax_mapping_scale = g_settings->getFloat("parallax_mapping_scale");
services->setPixelShaderConstant("parallaxMappingScale", &parallax_mapping_scale, 1);
float parallax_mapping_bias = g_settings->getFloat("parallax_mapping_bias");
services->setPixelShaderConstant("parallaxMappingBias", &parallax_mapping_bias, 1);
}
// Normal map texture layer // Normal map texture layer
int layer1 = 1; int layer1 = 1;
int layer2 = 2; int layer2 = 2;