stuff
This commit is contained in:
48
modules/wallpaper-engine/shaders/base/model_fragment_v1.h
Normal file
48
modules/wallpaper-engine/shaders/base/model_fragment_v1.h
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
#include "common_fragment.h"
|
||||
|
||||
uniform mat4 g_ViewProjectionMatrix;
|
||||
uniform vec3 g_Screen;
|
||||
|
||||
#if REFLECTION
|
||||
vec3 ApplyReflection(DECLARE_SAMPLER2D_PARAMETER(reflectionTexture), float reflectionTextureMipMapInfo, float reflectivity, float roughness, float metallic, vec3 screenPos, vec3 normal, vec3 normalizedViewVector)
|
||||
{
|
||||
#if REFLECTION_MAP
|
||||
reflectivity *= componentMaps.z;
|
||||
#endif
|
||||
vec2 screenUV = (screenPos.xy / screenPos.z) * 0.5 + 0.5;
|
||||
|
||||
float fresnelTerm = abs(dot(normal, normalizedViewVector));
|
||||
normal = normalize(mul(normal, CAST3X3(g_ViewProjectionMatrix)));
|
||||
|
||||
#ifdef HLSL
|
||||
normal.y = -normal.y;
|
||||
#endif
|
||||
|
||||
#if PLATFORM_ANDROID
|
||||
normal.xy = normal.xy * vec2(0.20 / g_Screen.z, 0.20);
|
||||
#else
|
||||
// Make consistent on X since the width is usually more variable (multi monitors) - bad for phones tho
|
||||
normal.xy = normal.xy * vec2(0.15, 0.15 * g_Screen.z);
|
||||
#endif
|
||||
screenUV += normal.xy * pow(fresnelTerm, 4.0) * 10;
|
||||
float clipReflection = smoothstep(1.3, 1.0, screenUV.x) * smoothstep(-0.3, 0.0, screenUV.x) *
|
||||
smoothstep(1.3, 1.0, screenUV.y) * smoothstep(-0.3, 0.0, screenUV.y);
|
||||
|
||||
vec3 reflectionColor = texSample2DLod(reflectionTexture, screenUV, roughness * reflectionTextureMipMapInfo).rgb * clipReflection;
|
||||
reflectionColor = reflectionColor * (1.0 - fresnelTerm) * reflectivity;
|
||||
reflectionColor = pow(max(CAST3(0.001), reflectionColor), CAST3(2.0 - metallic));
|
||||
|
||||
return saturate(reflectionColor);
|
||||
}
|
||||
#endif
|
||||
|
||||
void ApplyAlphaToCoverage(inout float alpha)
|
||||
{
|
||||
#if ALPHATOCOVERAGE
|
||||
alpha = (alpha - 0.5) / max(fwidth(alpha), 0.0001) + 0.5;
|
||||
#if GLSL
|
||||
if (alpha < 0.5) discard;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user