mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 22:16:58 +02:00
fixing the web enitites lighting, still need to solve the sRGB for it, starting to introduce the unlit feature to the overlays
This commit is contained in:
parent
37f16e9c86
commit
615f4028c4
9 changed files with 29 additions and 100 deletions
|
@ -90,22 +90,21 @@ static const std::string DEFAULT_OCCLUSION_SHADER{
|
||||||
static const std::string DEFAULT_EMISSIVE_SHADER{
|
static const std::string DEFAULT_EMISSIVE_SHADER{
|
||||||
"vec4 getFragmentColor() {"
|
"vec4 getFragmentColor() {"
|
||||||
" DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);"
|
" DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);"
|
||||||
" return (frag.mode != FRAG_MODE_LIGHTMAPPED ? vec4(pow(frag.emissive, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));"
|
" return (frag.mode == FRAG_MODE_SHADED ? vec4(pow(frag.emissive, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));"
|
||||||
" }"
|
" }"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::string DEFAULT_UNLIT_SHADER{
|
static const std::string DEFAULT_UNLIT_SHADER{
|
||||||
"vec4 getFragmentColor() {"
|
"vec4 getFragmentColor() {"
|
||||||
" DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);"
|
" DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);"
|
||||||
" return vec4(pow(vec3(frag.diffuseVal.w), vec3(1.0 / 2.2)), 1.0);"
|
" return (frag.mode == FRAG_MODE_UNLIT ? vec4(pow(frag.diffuse, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));"
|
||||||
// " return (frag.mode == FRAG_MODE_UNLIT ? vec4(pow(frag.diffuse, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));"
|
|
||||||
" }"
|
" }"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const std::string DEFAULT_LIGHTMAP_SHADER{
|
static const std::string DEFAULT_LIGHTMAP_SHADER{
|
||||||
"vec4 getFragmentColor() {"
|
"vec4 getFragmentColor() {"
|
||||||
" DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);"
|
" DeferredFragment frag = unpackDeferredFragmentNoPosition(uv);"
|
||||||
" return (frag.mode == FRAG_MODE_LIGHTMAPPED ? vec4(frag.emissive, 1.0) : vec4(vec3(0.0), 1.0));"
|
" return (frag.mode == FRAG_MODE_LIGHTMAPPED ? vec4(pow(frag.emissive, vec3(1.0 / 2.2)), 1.0) : vec4(vec3(0.0), 1.0));"
|
||||||
" }"
|
" }"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -39,12 +39,13 @@
|
||||||
#include "model_lightmap_specular_map_frag.h"
|
#include "model_lightmap_specular_map_frag.h"
|
||||||
#include "model_translucent_frag.h"
|
#include "model_translucent_frag.h"
|
||||||
#include "model_translucent_emissive_frag.h"
|
#include "model_translucent_emissive_frag.h"
|
||||||
|
#include "model_translucent_unlit_frag.h"
|
||||||
|
|
||||||
#include "overlay3D_vert.h"
|
#include "overlay3D_vert.h"
|
||||||
#include "overlay3D_frag.h"
|
#include "overlay3D_frag.h"
|
||||||
#include "overlay3D_translucent_frag.h"
|
#include "overlay3D_translucent_frag.h"
|
||||||
#include "overlay3D_emissive_frag.h"
|
#include "overlay3D_unlit_frag.h"
|
||||||
#include "overlay3D_translucent_emissive_frag.h"
|
#include "overlay3D_translucent_unlit_frag.h"
|
||||||
|
|
||||||
#include "drawOpaqueStencil_frag.h"
|
#include "drawOpaqueStencil_frag.h"
|
||||||
|
|
||||||
|
@ -103,8 +104,8 @@ void initOverlay3DPipelines(ShapePlumber& plumber) {
|
||||||
auto vertex = gpu::Shader::createVertex(std::string(overlay3D_vert));
|
auto vertex = gpu::Shader::createVertex(std::string(overlay3D_vert));
|
||||||
auto pixel = gpu::Shader::createPixel(std::string(overlay3D_frag));
|
auto pixel = gpu::Shader::createPixel(std::string(overlay3D_frag));
|
||||||
auto pixelTranslucent = gpu::Shader::createPixel(std::string(overlay3D_translucent_frag));
|
auto pixelTranslucent = gpu::Shader::createPixel(std::string(overlay3D_translucent_frag));
|
||||||
auto pixelEmissive = gpu::Shader::createPixel(std::string(overlay3D_emissive_frag));
|
auto pixelEmissive = gpu::Shader::createPixel(std::string(overlay3D_unlit_frag));
|
||||||
auto pixelTranslucentEmissive = gpu::Shader::createPixel(std::string(overlay3D_translucent_emissive_frag));
|
auto pixelTranslucentEmissive = gpu::Shader::createPixel(std::string(overlay3D_translucent_unlit_frag));
|
||||||
|
|
||||||
auto opaqueProgram = gpu::Shader::createProgram(vertex, pixel);
|
auto opaqueProgram = gpu::Shader::createProgram(vertex, pixel);
|
||||||
auto translucentProgram = gpu::Shader::createProgram(vertex, pixelTranslucent);
|
auto translucentProgram = gpu::Shader::createProgram(vertex, pixelTranslucent);
|
||||||
|
@ -209,6 +210,7 @@ void initDeferredPipelines(render::ShapePlumber& plumber) {
|
||||||
auto modelNormalSpecularMapPixel = gpu::Shader::createPixel(std::string(model_normal_specular_map_frag));
|
auto modelNormalSpecularMapPixel = gpu::Shader::createPixel(std::string(model_normal_specular_map_frag));
|
||||||
auto modelTranslucentPixel = gpu::Shader::createPixel(std::string(model_translucent_frag));
|
auto modelTranslucentPixel = gpu::Shader::createPixel(std::string(model_translucent_frag));
|
||||||
auto modelTranslucentEmissivePixel = gpu::Shader::createPixel(std::string(model_translucent_emissive_frag));
|
auto modelTranslucentEmissivePixel = gpu::Shader::createPixel(std::string(model_translucent_emissive_frag));
|
||||||
|
auto modelTranslucentUnlitPixel = gpu::Shader::createPixel(std::string(model_translucent_unlit_frag));
|
||||||
auto modelShadowPixel = gpu::Shader::createPixel(std::string(model_shadow_frag));
|
auto modelShadowPixel = gpu::Shader::createPixel(std::string(model_shadow_frag));
|
||||||
auto modelLightmapPixel = gpu::Shader::createPixel(std::string(model_lightmap_frag));
|
auto modelLightmapPixel = gpu::Shader::createPixel(std::string(model_lightmap_frag));
|
||||||
auto modelLightmapNormalMapPixel = gpu::Shader::createPixel(std::string(model_lightmap_normal_map_frag));
|
auto modelLightmapNormalMapPixel = gpu::Shader::createPixel(std::string(model_lightmap_normal_map_frag));
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
<@include gpu/Config.slh@>
|
|
||||||
<$VERSION_HEADER$>
|
|
||||||
// Generated on <$_SCRIBE_DATE$>
|
|
||||||
//
|
|
||||||
// model_translucent_emissive.frag
|
|
||||||
// fragment shader
|
|
||||||
//
|
|
||||||
// Created by Zach Pomerantz on 2/3/2016.
|
|
||||||
// Copyright 2016 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
<@include model/Material.slh@>
|
|
||||||
|
|
||||||
uniform sampler2D albedoMap;
|
|
||||||
|
|
||||||
in vec2 _texCoord0;
|
|
||||||
in vec3 _color;
|
|
||||||
in float _alpha;
|
|
||||||
|
|
||||||
out vec4 _fragColor;
|
|
||||||
|
|
||||||
void main(void) {
|
|
||||||
vec4 albedo = texture(albedoMap, _texCoord0);
|
|
||||||
|
|
||||||
Material mat = getMaterial();
|
|
||||||
vec3 fragColor = getMaterialAlbedo(mat) * albedo.rgb * _color;
|
|
||||||
float fragOpacity = getMaterialOpacity(mat) * albedo.a * _alpha;
|
|
||||||
|
|
||||||
_fragColor = vec4(fragColor, fragOpacity);
|
|
||||||
}
|
|
|
@ -71,6 +71,9 @@ void main(void) {
|
||||||
fragRoughness,
|
fragRoughness,
|
||||||
fragOpacity);
|
fragOpacity);
|
||||||
|
|
||||||
|
if (gl_FragCoord.x > 1000) {
|
||||||
|
color = vec4(fragAlbedo, color.w);
|
||||||
|
}
|
||||||
// Apply standard tone mapping
|
// Apply standard tone mapping
|
||||||
_fragColor = vec4(pow(color.xyz, vec3(1.0 / 2.2)), color.w);
|
_fragColor = vec4(pow(color.xyz, vec3(1.0 / 2.2)), color.w);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
<@include gpu/Config.slh@>
|
|
||||||
<$VERSION_HEADER$>
|
|
||||||
// Generated on <$_SCRIBE_DATE$>
|
|
||||||
//
|
|
||||||
// overlay3D_emissive.frag
|
|
||||||
// fragment shader
|
|
||||||
//
|
|
||||||
// Created by Zach Pomerantz on 2/2/2016.
|
|
||||||
// Copyright 2016 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
uniform sampler2D originalTexture;
|
|
||||||
|
|
||||||
in vec2 _texCoord0;
|
|
||||||
in vec3 _color;
|
|
||||||
|
|
||||||
out vec4 _fragColor;
|
|
||||||
|
|
||||||
void main(void) {
|
|
||||||
vec4 albedo = texture(originalTexture, _texCoord0);
|
|
||||||
|
|
||||||
if (albedo.a <= 0.1) {
|
|
||||||
discard;
|
|
||||||
}
|
|
||||||
vec4 color = vec4(albedo.rgb * _color, albedo.a);
|
|
||||||
|
|
||||||
// Apply standard tone mapping
|
|
||||||
_fragColor = vec4(pow(color.xyz, vec3(1.0 / 2.2)), color.w);
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
<@include gpu/Config.slh@>
|
|
||||||
<$VERSION_HEADER$>
|
|
||||||
// Generated on <$_SCRIBE_DATE$>
|
|
||||||
//
|
|
||||||
// overlay3D_translucent_emissive.frag
|
|
||||||
// fragment shader
|
|
||||||
//
|
|
||||||
// Created by Zach Pomerantz on 2/2/2016.
|
|
||||||
// Copyright 2016 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
uniform sampler2D originalTexture;
|
|
||||||
|
|
||||||
in vec2 _texCoord0;
|
|
||||||
in vec3 _color;
|
|
||||||
in float _alpha;
|
|
||||||
|
|
||||||
out vec4 _fragColor;
|
|
||||||
|
|
||||||
void main(void) {
|
|
||||||
vec4 albedo = texture(originalTexture, _texCoord0);
|
|
||||||
|
|
||||||
_fragColor = vec4(albedo.rgb * _color, albedo.a * _alpha);
|
|
||||||
}
|
|
|
@ -32,6 +32,10 @@ void main(void) {
|
||||||
vec2 texCoord = _texCoord0.st / _texCoord0.q;
|
vec2 texCoord = _texCoord0.st / _texCoord0.q;
|
||||||
DeferredFragment frag = unpackDeferredFragment(deferredTransform, texCoord);
|
DeferredFragment frag = unpackDeferredFragment(deferredTransform, texCoord);
|
||||||
|
|
||||||
|
if (frag.mode == FRAG_MODE_UNLIT) {
|
||||||
|
discard;
|
||||||
|
}
|
||||||
|
|
||||||
mat4 invViewMat = deferredTransform.viewInverse;
|
mat4 invViewMat = deferredTransform.viewInverse;
|
||||||
|
|
||||||
// Kill if in front of the light volume
|
// Kill if in front of the light volume
|
||||||
|
|
|
@ -25,6 +25,14 @@ in vec2 _texCoord0;
|
||||||
void main(void) {
|
void main(void) {
|
||||||
vec4 texel = texture(originalTexture, _texCoord0.st);
|
vec4 texel = texture(originalTexture, _texCoord0.st);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
packDeferredFragmentUnlit(
|
||||||
|
normalize(_normal),
|
||||||
|
texel.a,
|
||||||
|
texel.rgb);
|
||||||
|
|
||||||
|
/*
|
||||||
packDeferredFragmentLightmap(
|
packDeferredFragmentLightmap(
|
||||||
normalize(_normal),
|
normalize(_normal),
|
||||||
texel.a,
|
texel.a,
|
||||||
|
@ -33,4 +41,5 @@ void main(void) {
|
||||||
DEFAULT_METALLIC,
|
DEFAULT_METALLIC,
|
||||||
DEFAULT_SPECULAR,
|
DEFAULT_SPECULAR,
|
||||||
texel.rgb);
|
texel.rgb);
|
||||||
|
*/
|
||||||
}
|
}
|
|
@ -32,6 +32,10 @@ void main(void) {
|
||||||
vec2 texCoord = _texCoord0.st / _texCoord0.q;
|
vec2 texCoord = _texCoord0.st / _texCoord0.q;
|
||||||
DeferredFragment frag = unpackDeferredFragment(deferredTransform, texCoord);
|
DeferredFragment frag = unpackDeferredFragment(deferredTransform, texCoord);
|
||||||
|
|
||||||
|
if (frag.mode == FRAG_MODE_UNLIT) {
|
||||||
|
discard;
|
||||||
|
}
|
||||||
|
|
||||||
mat4 invViewMat = deferredTransform.viewInverse;
|
mat4 invViewMat = deferredTransform.viewInverse;
|
||||||
|
|
||||||
// Kill if in front of the light volume
|
// Kill if in front of the light volume
|
||||||
|
|
Loading…
Reference in a new issue