mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 12:49:34 +02:00
Cleaning the Model rendering path from any use of glMaterial
This commit is contained in:
parent
7be1f41659
commit
614e1aa6ae
10 changed files with 38 additions and 10 deletions
|
@ -34,4 +34,10 @@ void packDeferredFragmentLightmap(vec3 normal, float alpha, vec3 diffuse, vec3 s
|
||||||
gl_FragData[2] = vec4(emissive, shininess / 128.0);
|
gl_FragData[2] = vec4(emissive, shininess / 128.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void packDeferredFragmentTranslucent(vec3 normal, float alpha, vec3 diffuse, vec3 specular, float shininess) {
|
||||||
|
gl_FragData[0] = vec4(diffuse.rgb, alpha);
|
||||||
|
// gl_FragData[1] = vec4(normal, 0.0) * 0.5 + vec4(0.5, 0.5, 0.5, 1.0);
|
||||||
|
// gl_FragData[2] = vec4(specular, shininess / 128.0);
|
||||||
|
}
|
||||||
|
|
||||||
<@endif@>
|
<@endif@>
|
||||||
|
|
|
@ -169,7 +169,8 @@ void DeferredLightingEffect::render() {
|
||||||
QOpenGLFramebufferObject* freeFBO = DependencyManager::get<GlowEffect>()->getFreeFramebufferObject();
|
QOpenGLFramebufferObject* freeFBO = DependencyManager::get<GlowEffect>()->getFreeFramebufferObject();
|
||||||
freeFBO->bind();
|
freeFBO->bind();
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
glEnable(GL_FRAMEBUFFER_SRGB);
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, primaryFBO->texture());
|
glBindTexture(GL_TEXTURE_2D, primaryFBO->texture());
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE1);
|
glActiveTexture(GL_TEXTURE1);
|
||||||
|
@ -371,6 +372,7 @@ void DeferredLightingEffect::render() {
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
|
||||||
freeFBO->release();
|
freeFBO->release();
|
||||||
|
glDisable(GL_FRAMEBUFFER_SRGB);
|
||||||
|
|
||||||
glDisable(GL_CULL_FACE);
|
glDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ vec3 getMaterialSpecular(Material m) { return m._specular.rgb; }
|
||||||
float getMaterialShininess(Material m) { return m._specular.a; }
|
float getMaterialShininess(Material m) { return m._specular.a; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<@if GLPROFILE == PC_GL@>
|
<@if GLPROFILE == PC_GL@>
|
||||||
uniform materialBuffer {
|
uniform materialBuffer {
|
||||||
Material mat;
|
Material mat;
|
||||||
|
|
|
@ -23,7 +23,7 @@ void main(void) {
|
||||||
normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0));
|
normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0));
|
||||||
|
|
||||||
// pass along the diffuse color
|
// pass along the diffuse color
|
||||||
gl_FrontColor = gl_Color * gl_FrontMaterial.diffuse;
|
gl_FrontColor = gl_Color;
|
||||||
|
|
||||||
// and the texture coordinates
|
// and the texture coordinates
|
||||||
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
||||||
|
|
|
@ -29,7 +29,7 @@ void main(void) {
|
||||||
normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0));
|
normal = normalize(gl_ModelViewMatrix * vec4(gl_Normal, 0.0));
|
||||||
|
|
||||||
// pass along the diffuse color
|
// pass along the diffuse color
|
||||||
gl_FrontColor = gl_Color * gl_FrontMaterial.diffuse;
|
gl_FrontColor = gl_Color;
|
||||||
|
|
||||||
// and the texture coordinates
|
// and the texture coordinates
|
||||||
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
||||||
|
|
|
@ -36,7 +36,7 @@ void main(void) {
|
||||||
interpolatedTangent = gl_ModelViewMatrix * vec4(tangent, 0.0);
|
interpolatedTangent = gl_ModelViewMatrix * vec4(tangent, 0.0);
|
||||||
|
|
||||||
// pass along the diffuse color
|
// pass along the diffuse color
|
||||||
gl_FrontColor = gl_Color * gl_FrontMaterial.diffuse;
|
gl_FrontColor = gl_Color;
|
||||||
|
|
||||||
// and the texture coordinates
|
// and the texture coordinates
|
||||||
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
||||||
|
|
|
@ -31,7 +31,7 @@ void main(void) {
|
||||||
interpolatedTangent = gl_ModelViewMatrix * vec4(tangent, 0.0);
|
interpolatedTangent = gl_ModelViewMatrix * vec4(tangent, 0.0);
|
||||||
|
|
||||||
// pass along the diffuse color
|
// pass along the diffuse color
|
||||||
gl_FrontColor = gl_Color * gl_FrontMaterial.diffuse;
|
gl_FrontColor = gl_Color;
|
||||||
|
|
||||||
// and the texture coordinates
|
// and the texture coordinates
|
||||||
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
||||||
|
|
|
@ -12,10 +12,29 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
|
<@include DeferredBufferWrite.slh@>
|
||||||
|
|
||||||
|
<@include Material.slh@>
|
||||||
|
|
||||||
// the diffuse texture
|
// the diffuse texture
|
||||||
uniform sampler2D diffuseMap;
|
uniform sampler2D diffuseMap;
|
||||||
|
|
||||||
|
varying vec4 normal;
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
|
|
||||||
|
// Fetch diffuse map
|
||||||
|
vec4 diffuse = texture2D(diffuseMap, gl_TexCoord[0].st);
|
||||||
|
|
||||||
|
Material mat = getMaterial();
|
||||||
|
|
||||||
|
packDeferredFragmentTranslucent(
|
||||||
|
normalize(normal.xyz),
|
||||||
|
getMaterialOpacity(mat) * diffuse.a,
|
||||||
|
getMaterialDiffuse(mat) * diffuse.rgb,
|
||||||
|
getMaterialSpecular(mat),
|
||||||
|
getMaterialShininess(mat));
|
||||||
|
|
||||||
// set the diffuse data
|
// set the diffuse data
|
||||||
gl_FragData[0] = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].st);
|
// gl_FragData[0] = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].st);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,8 +38,8 @@ void main(void) {
|
||||||
normal = normalize(gl_ModelViewMatrix * normal);
|
normal = normalize(gl_ModelViewMatrix * normal);
|
||||||
|
|
||||||
// pass along the diffuse color
|
// pass along the diffuse color
|
||||||
gl_FrontColor = gl_FrontMaterial.diffuse;
|
gl_FrontColor = gl_Color;
|
||||||
|
|
||||||
// and the texture coordinates
|
// and the texture coordinates
|
||||||
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,8 @@ void main(void) {
|
||||||
interpolatedTangent = gl_ModelViewMatrix * interpolatedTangent;
|
interpolatedTangent = gl_ModelViewMatrix * interpolatedTangent;
|
||||||
|
|
||||||
// pass along the diffuse color
|
// pass along the diffuse color
|
||||||
gl_FrontColor = gl_FrontMaterial.diffuse;
|
gl_FrontColor = gl_Color;
|
||||||
|
|
||||||
// and the texture coordinates
|
// and the texture coordinates
|
||||||
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
gl_TexCoord[0] = texcoordMatrices[0] * vec4(gl_MultiTexCoord0.xy, 0.0, 1.0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue