now using deferred rendering instead of forward rendering; some little problem: grid not render, shadow not impl
This commit is contained in:
@ -161,6 +161,13 @@ uniform float u_ShadowSoftness;
|
||||
uniform float u_ShadowIntensity;
|
||||
uniform int u_ShadowEnabled;
|
||||
|
||||
// Emissive
|
||||
uniform sampler2D u_EmissiveTexture;
|
||||
uniform float u_EmissiveTexToggle;
|
||||
uniform vec3 u_EmissiveColor;
|
||||
uniform float u_EmissiveIntensity;
|
||||
|
||||
|
||||
struct PBRParameters
|
||||
{
|
||||
vec3 Albedo;
|
||||
@ -425,7 +432,16 @@ float ComputeShadow(vec4 fragPosLightSpace, float NdotL)
|
||||
|
||||
void main()
|
||||
{
|
||||
m_Params.Albedo = u_AlbedoTexToggle > 0.5 ? texture(u_AlbedoTexture, vs_Input.TexCoord).rgb : u_AlbedoColor;
|
||||
float alpha = 1.0;
|
||||
if (u_AlbedoTexToggle > 0.5) {
|
||||
vec4 albedoWithAlpha = texture(u_AlbedoTexture, vs_Input.TexCoord);
|
||||
m_Params.Albedo = albedoWithAlpha.rgb;
|
||||
alpha = albedoWithAlpha.a;
|
||||
} else {
|
||||
m_Params.Albedo = u_AlbedoColor;
|
||||
alpha = 1.0;
|
||||
}
|
||||
|
||||
m_Params.Metalness = u_MetalnessTexToggle > 0.5 ? texture(u_MetalnessTexture, vs_Input.TexCoord).r : u_Metalness;
|
||||
m_Params.Roughness = u_RoughnessTexToggle > 0.5 ? texture(u_RoughnessTexture, vs_Input.TexCoord).r : u_Roughness;
|
||||
m_Params.Roughness = max(m_Params.Roughness, 0.05);
|
||||
@ -463,7 +479,16 @@ void main()
|
||||
|
||||
vec3 iblContribution = IBL(F0, Lr) * u_IBLContribution;
|
||||
|
||||
color = vec4(lightContribution + iblContribution, 1.0);
|
||||
vec3 emissive = u_EmissiveColor;
|
||||
if (u_EmissiveTexToggle > 0.5) {
|
||||
emissive = texture(u_EmissiveTexture, vs_Input.TexCoord).rgb;
|
||||
}
|
||||
emissive *= u_EmissiveIntensity;
|
||||
|
||||
vec3 finalRGB = lightContribution + iblContribution + emissive;
|
||||
vec4 finalColor = vec4(finalRGB, alpha);
|
||||
|
||||
color = finalColor;
|
||||
|
||||
// Bloom
|
||||
float brightness = dot(color.rgb, vec3(0.2126, 0.7152, 0.0722));
|
||||
|
||||
Reference in New Issue
Block a user