mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-03-15 18:19:58 -05:00
Fixed the forward/backward scattering effects.
This commit is contained in:
@@ -43,6 +43,7 @@ uniform vec2 textureOffset;
|
||||
uniform float colorFilterValue;
|
||||
|
||||
uniform vec3 sunPosition;
|
||||
uniform vec3 sunPositionObj;
|
||||
uniform vec3 camPositionObj;
|
||||
uniform float _nightFactor;
|
||||
uniform float zFightingPercentage;
|
||||
@@ -73,11 +74,11 @@ Fragment getFragment() {
|
||||
}
|
||||
|
||||
vec4 colorBckwrd = texture(ringTextureBckwrd, texCoord);
|
||||
vec4 colorFwrd = texture(ringTextureFwrd, texCoord);
|
||||
vec4 colorFwrd = vec4(0.8, 0.8, 0.8, 1.0) * texture(ringTextureFwrd, texCoord);
|
||||
vec4 colorMult = texture(ringTextureColor, texCoord);
|
||||
vec4 transparency = texture(ringTextureTransparency, texCoord);
|
||||
|
||||
float lerpFactor = (1.f + dot(camPositionObj.xyz, sunPosition.xyz)) * 0.5f;
|
||||
float lerpFactor = dot(camPositionObj, sunPositionObj);
|
||||
|
||||
// Jon Colors:
|
||||
//vec4 diffuse = mix(colorFwrd * vec4(1, 0.88, 0.82, 1.0), colorBckwrd * vec4(1, 0.88, 0.82, 1.0), lerpFactor);
|
||||
|
||||
@@ -59,11 +59,11 @@ namespace {
|
||||
"zFightingPercentage"
|
||||
};
|
||||
|
||||
constexpr const std::array<const char*, 14> UniformNamesAdvancedRings = {
|
||||
constexpr const std::array<const char*, 15> UniformNamesAdvancedRings = {
|
||||
"modelViewProjectionMatrix", "textureOffset", "colorFilterValue", "_nightFactor",
|
||||
"sunPosition", "camPositionObj", "ringTextureFwrd", "ringTextureBckwrd",
|
||||
"ringTextureUnlit", "ringTextureColor", "ringTextureTransparency", "shadowMatrix",
|
||||
"shadowMapTexture", "zFightingPercentage"
|
||||
"sunPosition", "sunPositionObj", "camPositionObj", "ringTextureFwrd",
|
||||
"ringTextureBckwrd", "ringTextureUnlit", "ringTextureColor",
|
||||
"ringTextureTransparency", "shadowMatrix", "shadowMapTexture", "zFightingPercentage"
|
||||
};
|
||||
|
||||
constexpr const std::array<const char*, 3> GeomUniformNames = {
|
||||
@@ -476,6 +476,17 @@ void RingsComponent::draw(const RenderData& data,
|
||||
_shader->setUniform(_uniformCacheAdvancedRings.colorFilterValue, _colorFilter);
|
||||
_shader->setUniform(_uniformCacheAdvancedRings.nightFactor, _nightFactor);
|
||||
_shader->setUniform(_uniformCacheAdvancedRings.sunPosition, _sunPosition);
|
||||
|
||||
const glm::dmat4 inverseModelTransform = glm::inverse(modelTransform);
|
||||
|
||||
glm::vec3 sunPositionObjectSpace = glm::normalize(
|
||||
glm::vec3(inverseModelTransform * glm::vec4(_sunPosition, 0.0))
|
||||
);
|
||||
|
||||
_shader->setUniform(
|
||||
_uniformCacheAdvancedRings.sunPositionObj,
|
||||
sunPositionObjectSpace
|
||||
);
|
||||
_shader->setUniform(
|
||||
_uniformCacheAdvancedRings.zFightingPercentage,
|
||||
_zFightingPercentage
|
||||
|
||||
@@ -97,7 +97,7 @@ private:
|
||||
sunPosition, ringTexture, shadowMatrix, shadowMapTexture, zFightingPercentage
|
||||
) _uniformCache;
|
||||
UniformCache(modelViewProjectionMatrix, textureOffset, colorFilterValue, nightFactor,
|
||||
sunPosition, camPositionObj, ringTextureFwrd, ringTextureBckwrd,
|
||||
sunPosition, sunPositionObj, camPositionObj, ringTextureFwrd, ringTextureBckwrd,
|
||||
ringTextureUnlit, ringTextureColor, ringTextureTransparency, shadowMatrix,
|
||||
shadowMapTexture, zFightingPercentage
|
||||
) _uniformCacheAdvancedRings;
|
||||
|
||||
Reference in New Issue
Block a user