summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2017-02-21 14:43:15 +0100
committerKevin Ottens <kevin.ottens@kdab.com>2017-02-23 12:58:51 +0000
commit82ff575d3f7b7bc114106dbb23b148837c5e96f1 (patch)
treec1af21d9f928152f7932f703eae0e20f6fa5339b
parentfdf1ef6f6c44fc8c51e7a226418c336e0478fe01 (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.cpp4
-rw-r--r--src/extras/defaults/qtexturedmetalroughmaterial.cpp4
-rw-r--r--src/extras/shaders/gl3/light.inc.frag7
-rw-r--r--src/extras/shaders/gl3/metalrough.frag10
-rw-r--r--src/extras/shaders/gl3/metalroughuniform.frag10
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