From 3d8846356907da635d148a4532ea3453de153c25 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 3 Oct 2014 17:05:14 -0700 Subject: [PATCH 1/2] Blend between cube face textures. --- .../shaders/metavoxel_voxel_splat.frag | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/interface/resources/shaders/metavoxel_voxel_splat.frag b/interface/resources/shaders/metavoxel_voxel_splat.frag index d0d0661164..368f6fa52b 100644 --- a/interface/resources/shaders/metavoxel_voxel_splat.frag +++ b/interface/resources/shaders/metavoxel_voxel_splat.frag @@ -26,12 +26,20 @@ varying vec4 alphaValues; void main(void) { // determine the cube face to use for texture coordinate generation vec3 absNormal = abs(normal); - vec3 steps = step(absNormal.zzy, absNormal.xyx); - vec2 parameters = mix(vec2(0.0, steps.y), vec2(steps.x, steps.x), steps.z); + vec3 steps = smoothstep(absNormal.zzy - vec3(0.25, 0.25, 0.25), absNormal.zzy + vec3(0.25, 0.25, 0.25), absNormal.xyx); // blend the splat textures - gl_FragColor = (texture2D(diffuseMaps[0], mix(gl_TexCoord[0].xy, gl_TexCoord[0].zw, parameters)) * alphaValues.x + - texture2D(diffuseMaps[1], mix(gl_TexCoord[1].xy, gl_TexCoord[1].zw, parameters)) * alphaValues.y + - texture2D(diffuseMaps[2], mix(gl_TexCoord[2].xy, gl_TexCoord[2].zw, parameters)) * alphaValues.z + - texture2D(diffuseMaps[3], mix(gl_TexCoord[3].xy, gl_TexCoord[3].zw, parameters)) * alphaValues.w); + vec4 base0 = texture2D(diffuseMaps[0], gl_TexCoord[0].xy); + vec4 base1 = texture2D(diffuseMaps[1], gl_TexCoord[1].xy); + vec4 base2 = texture2D(diffuseMaps[2], gl_TexCoord[2].xy); + vec4 base3 = texture2D(diffuseMaps[3], gl_TexCoord[3].xy); + gl_FragColor = + mix(mix(base0, texture2D(diffuseMaps[0], gl_TexCoord[0].xw), steps.y), + mix(base0, texture2D(diffuseMaps[0], gl_TexCoord[0].zw), steps.x), steps.z) * alphaValues.x + + mix(mix(base1, texture2D(diffuseMaps[1], gl_TexCoord[1].xw), steps.y), + mix(base1, texture2D(diffuseMaps[1], gl_TexCoord[1].zw), steps.x), steps.z) * alphaValues.y + + mix(mix(base2, texture2D(diffuseMaps[2], gl_TexCoord[2].xw), steps.y), + mix(base2, texture2D(diffuseMaps[2], gl_TexCoord[2].zw), steps.x), steps.z) * alphaValues.z + + mix(mix(base3, texture2D(diffuseMaps[3], gl_TexCoord[3].xw), steps.y), + mix(base3, texture2D(diffuseMaps[3], gl_TexCoord[3].zw), steps.x), steps.z) * alphaValues.w; } From 91942e6188b6e50bd54e0ccd62affa5c64f01b34 Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 3 Oct 2014 17:17:22 -0700 Subject: [PATCH 2/2] Reduce the size of the smoothing step. --- interface/resources/shaders/metavoxel_voxel_splat.frag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/shaders/metavoxel_voxel_splat.frag b/interface/resources/shaders/metavoxel_voxel_splat.frag index 368f6fa52b..e7a33618cb 100644 --- a/interface/resources/shaders/metavoxel_voxel_splat.frag +++ b/interface/resources/shaders/metavoxel_voxel_splat.frag @@ -26,7 +26,7 @@ varying vec4 alphaValues; void main(void) { // determine the cube face to use for texture coordinate generation vec3 absNormal = abs(normal); - vec3 steps = smoothstep(absNormal.zzy - vec3(0.25, 0.25, 0.25), absNormal.zzy + vec3(0.25, 0.25, 0.25), absNormal.xyx); + vec3 steps = smoothstep(absNormal.zzy - vec3(0.05, 0.05, 0.05), absNormal.zzy + vec3(0.05, 0.05, 0.05), absNormal.xyx); // blend the splat textures vec4 base0 = texture2D(diffuseMaps[0], gl_TexCoord[0].xy);