diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2017-02-21 14:43:15 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@kdab.com> | 2017-02-23 12:58:51 +0000 |
commit | 82ff575d3f7b7bc114106dbb23b148837c5e96f1 (patch) | |
tree | c1af21d9f928152f7932f703eae0e20f6fa5339b | |
parent | fdf1ef6f6c44fc8c51e7a226418c336e0478fe01 (diff) |
Move environment light uniforms in light.inc.frag
Change-Id: I0ce7302b7c1cf8912b925d31d074739208936426
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/extras/defaults/qmetalroughmaterial.cpp | 4 | ||||
-rw-r--r-- | src/extras/defaults/qtexturedmetalroughmaterial.cpp | 4 | ||||
-rw-r--r-- | src/extras/shaders/gl3/light.inc.frag | 7 | ||||
-rw-r--r-- | src/extras/shaders/gl3/metalrough.frag | 10 | ||||
-rw-r--r-- | src/extras/shaders/gl3/metalroughuniform.frag | 10 |
5 files changed, 19 insertions, 16 deletions
diff --git a/src/extras/defaults/qmetalroughmaterial.cpp b/src/extras/defaults/qmetalroughmaterial.cpp index b988e11ce..3081fa787 100644 --- a/src/extras/defaults/qmetalroughmaterial.cpp +++ b/src/extras/defaults/qmetalroughmaterial.cpp @@ -65,8 +65,8 @@ QMetalRoughMaterialPrivate::QMetalRoughMaterialPrivate() , m_baseColorParameter(new QParameter(QStringLiteral("baseColor"), QColor("grey"))) , m_metalnessParameter(new QParameter(QStringLiteral("metalness"), 0.0f)) , m_roughnessParameter(new QParameter(QStringLiteral("roughness"), 0.0f)) - , m_environmentIrradianceParameter(new QParameter(QStringLiteral("skyIrradiance"), m_environmentIrradianceTexture)) - , m_environmentSpecularParameter(new QParameter(QStringLiteral("skySpecular"), m_environmentSpecularTexture)) + , m_environmentIrradianceParameter(new QParameter(QStringLiteral("envLight.irradiance"), m_environmentIrradianceTexture)) + , m_environmentSpecularParameter(new QParameter(QStringLiteral("envLight.specular"), m_environmentSpecularTexture)) , m_metalRoughEffect(new QEffect()) , m_metalRoughGL3Technique(new QTechnique()) , m_metalRoughGL3RenderPass(new QRenderPass()) diff --git a/src/extras/defaults/qtexturedmetalroughmaterial.cpp b/src/extras/defaults/qtexturedmetalroughmaterial.cpp index ea7c7b9d7..b8faff7ed 100644 --- a/src/extras/defaults/qtexturedmetalroughmaterial.cpp +++ b/src/extras/defaults/qtexturedmetalroughmaterial.cpp @@ -72,8 +72,8 @@ QTexturedMetalRoughMaterialPrivate::QTexturedMetalRoughMaterialPrivate() , m_roughnessParameter(new QParameter(QStringLiteral("roughnessMap"), m_roughnessTexture)) , m_ambientOcclusionParameter(new QParameter(QStringLiteral("ambientOcclusionMap"), m_ambientOcclusionTexture)) , m_normalParameter(new QParameter(QStringLiteral("normalMap"), m_normalTexture)) - , m_environmentIrradianceParameter(new QParameter(QStringLiteral("skyIrradiance"), m_environmentIrradianceTexture)) - , m_environmentSpecularParameter(new QParameter(QStringLiteral("skySpecular"), m_environmentSpecularTexture)) + , m_environmentIrradianceParameter(new QParameter(QStringLiteral("envLight.irradiance"), m_environmentIrradianceTexture)) + , m_environmentSpecularParameter(new QParameter(QStringLiteral("envLight.specular"), m_environmentSpecularTexture)) , m_metalRoughEffect(new QEffect()) , m_metalRoughGL3Technique(new QTechnique()) , m_metalRoughGL3RenderPass(new QRenderPass()) diff --git a/src/extras/shaders/gl3/light.inc.frag b/src/extras/shaders/gl3/light.inc.frag index 3047bdb3c..aaec83840 100644 --- a/src/extras/shaders/gl3/light.inc.frag +++ b/src/extras/shaders/gl3/light.inc.frag @@ -16,6 +16,13 @@ struct Light { uniform Light lights[MAX_LIGHTS]; uniform int lightCount; +// Pre-convolved environment maps +struct EnvironmentLight { + samplerCube irradiance; // For diffuse contribution + samplerCube specular; // For specular contribution +}; +uniform EnvironmentLight envLight; + void adsModelNormalMapped(const in vec3 worldPos, const in vec3 tsNormal, const in vec3 worldEye, diff --git a/src/extras/shaders/gl3/metalrough.frag b/src/extras/shaders/gl3/metalrough.frag index 197d3eec7..dc39108e0 100644 --- a/src/extras/shaders/gl3/metalrough.frag +++ b/src/extras/shaders/gl3/metalrough.frag @@ -61,10 +61,6 @@ out vec4 fragColor; uniform vec3 eyePosition; // World space eye position uniform float time; // Time in seconds -// Pre-convolved environment maps -uniform samplerCube skyIrradiance; // For diffuse contribution -uniform samplerCube skySpecular; // For specular contribution - // PBR Material maps uniform sampler2D baseColorMap; uniform sampler2D metalnessMap; @@ -85,6 +81,8 @@ uniform float exposure = 0.0; // Gamma correction uniform float gamma = 2.2; +#pragma include light.inc.frag + mat3 calcWorldSpaceToTangentSpaceMatrix(const in vec3 wNormal, const in vec4 wTangent) { // Make the tangent truly orthogonal to the normal by using Gram-Schmidt. @@ -176,7 +174,7 @@ vec3 pbrIblModel(const in vec3 wNormal, // Calculate diffuse component vec3 diffuseColor = (1.0 - metalness) * baseColor; - vec3 diffuse = diffuseColor * texture(skyIrradiance, l).rgb; + vec3 diffuse = diffuseColor * texture(envLight.irradiance, l).rgb; // Calculate specular component vec3 dielectricColor = vec3(0.04); @@ -184,7 +182,7 @@ vec3 pbrIblModel(const in vec3 wNormal, vec3 specularFactor = specularModel(F0, lDotH, lDotN, vDotN, n, h); float lod = roughnessToMipLevel(roughness); - vec3 specularSkyColor = textureLod(skySpecular, l, lod).rgb; + vec3 specularSkyColor = textureLod(envLight.specular, l, lod).rgb; vec3 specular = specularSkyColor * specularFactor; // Blend between diffuse and specular to conserve energy diff --git a/src/extras/shaders/gl3/metalroughuniform.frag b/src/extras/shaders/gl3/metalroughuniform.frag index 66201513a..5e776e84b 100644 --- a/src/extras/shaders/gl3/metalroughuniform.frag +++ b/src/extras/shaders/gl3/metalroughuniform.frag @@ -61,10 +61,6 @@ out vec4 fragColor; uniform vec3 eyePosition; // World space eye position uniform float time; // Time in seconds -// Pre-convolved environment maps -uniform samplerCube skyIrradiance; // For diffuse contribution -uniform samplerCube skySpecular; // For specular contribution - // PBR Material maps uniform vec4 baseColor; uniform float metalness; @@ -80,6 +76,8 @@ uniform float exposure = 0.0; // Gamma correction uniform float gamma = 2.2; +#pragma include light.inc.frag + mat3 calcWorldSpaceToTangentSpaceMatrix(const in vec3 wNormal, const in vec4 wTangent) { // Make the tangent truly orthogonal to the normal by using Gram-Schmidt. @@ -170,7 +168,7 @@ vec3 pbrIblModel(const in vec3 wNormal, // Calculate diffuse component vec3 diffuseColor = (1.0 - metalness) * baseColor; - vec3 diffuse = diffuseColor * texture(skyIrradiance, l).rgb; + vec3 diffuse = diffuseColor * texture(envLight.irradiance, l).rgb; // Calculate specular component vec3 dielectricColor = vec3(0.04); @@ -178,7 +176,7 @@ vec3 pbrIblModel(const in vec3 wNormal, vec3 specularFactor = specularModel(F0, lDotH, lDotN, vDotN, n, h); float lod = roughnessToMipLevel(roughness); - vec3 specularSkyColor = textureLod(skySpecular, l, lod).rgb; + vec3 specularSkyColor = textureLod(envLight.specular, l, lod).rgb; vec3 specular = specularSkyColor * specularFactor; // Blend between diffuse and specular to conserve energy |