mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-21 18:09:39 +00:00
Scale mipmap alpha to preserve coverage
This commit is contained in:
parent
d061ae8096
commit
d13459ecf9
3 changed files with 28 additions and 0 deletions
|
@ -12,6 +12,29 @@
|
||||||
uniform float alphaRef;
|
uniform float alphaRef;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
float mipmapLevel(vec2 scaleduv)
|
||||||
|
{
|
||||||
|
vec2 dUVdx = dFdx(scaleduv);
|
||||||
|
vec2 dUVdy = dFdy(scaleduv);
|
||||||
|
float maxDUVSquared = max(dot(dUVdx, dUVdx), dot(dUVdy, dUVdy));
|
||||||
|
return max(0.0, 0.5 * log2(maxDUVSquared));
|
||||||
|
}
|
||||||
|
|
||||||
|
float coveragePreservingAlphaScale(sampler2D diffuseMap, vec2 uv)
|
||||||
|
{
|
||||||
|
#if @alphaFunc != FUNC_ALWAYS && @alphaFunc != FUNC_NEVER
|
||||||
|
vec2 textureSize;
|
||||||
|
#ifdef GL_EXT_gpu_shader4
|
||||||
|
textureSize = textureSize2D(diffuseMap, 0);
|
||||||
|
#else
|
||||||
|
textureSize = 256.0;
|
||||||
|
#endif
|
||||||
|
return 1.0 + mipmapLevel(uv * textureSize) * 0.25;
|
||||||
|
#else
|
||||||
|
return 1.0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void alphaTest()
|
void alphaTest()
|
||||||
{
|
{
|
||||||
#if @alphaToCoverage
|
#if @alphaToCoverage
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
|
#extension EXT_gpu_shader4: enable
|
||||||
|
|
||||||
#if @diffuseMap
|
#if @diffuseMap
|
||||||
uniform sampler2D diffuseMap;
|
uniform sampler2D diffuseMap;
|
||||||
varying vec2 diffuseMapUV;
|
varying vec2 diffuseMapUV;
|
||||||
|
@ -109,6 +111,7 @@ void main()
|
||||||
|
|
||||||
#if @diffuseMap
|
#if @diffuseMap
|
||||||
gl_FragData[0] = texture2D(diffuseMap, adjustedDiffuseUV);
|
gl_FragData[0] = texture2D(diffuseMap, adjustedDiffuseUV);
|
||||||
|
gl_FragData[0].a *= coveragePreservingAlphaScale(diffuseMap, adjustedDiffuseUV);
|
||||||
#else
|
#else
|
||||||
gl_FragData[0] = vec4(1.0);
|
gl_FragData[0] = vec4(1.0);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#version 120
|
#version 120
|
||||||
|
|
||||||
|
#extension EXT_gpu_shader4: enable
|
||||||
|
|
||||||
uniform sampler2D diffuseMap;
|
uniform sampler2D diffuseMap;
|
||||||
varying vec2 diffuseMapUV;
|
varying vec2 diffuseMapUV;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue