mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 09:24:00 +02:00
Working edition and emissive edge on fade element enter/leave
This commit is contained in:
parent
6a31dc2659
commit
fb33b8d1c1
3 changed files with 40 additions and 42 deletions
|
@ -22,8 +22,8 @@ struct FadeParameters
|
|||
{
|
||||
vec4 _baseInvSizeAndLevel;
|
||||
vec4 _noiseInvSizeAndLevel;
|
||||
vec3 _innerEdgeColor;
|
||||
vec3 _outerEdgeColor;
|
||||
vec4 _innerEdgeColor;
|
||||
vec4 _outerEdgeColor;
|
||||
vec2 _edgeWidthInvWidth;
|
||||
int _invertBase;
|
||||
float _padding;
|
||||
|
@ -108,16 +108,15 @@ void applyFade(vec3 position, out vec3 emissive) {
|
|||
if (alpha < 0) {
|
||||
discard;
|
||||
}
|
||||
/*
|
||||
|
||||
float edgeMask = alpha * fadeParameters[fadeCategory]._edgeWidthInvWidth.y;
|
||||
float edgeAlpha = 1.0-clamp(edgeMask, 0, 1);
|
||||
|
||||
edgeMask = step(edgeMask, 1.f);
|
||||
//edgeMask = step(edgeMask, 1.f);
|
||||
edgeMask = edgeMask > 1.f ? 0.f : 1.f;
|
||||
edgeAlpha *= edgeAlpha; // Square to have a nice ease out
|
||||
emissive = mix(fadeParameters[fadeCategory]._innerEdgeColor, fadeParameters[fadeCategory]._outerEdgeColor, edgeAlpha);
|
||||
emissive *= edgeMask;
|
||||
*/
|
||||
emissive = vec3(0,0,0);
|
||||
vec4 color = mix(fadeParameters[fadeCategory]._innerEdgeColor, fadeParameters[fadeCategory]._outerEdgeColor, edgeAlpha);
|
||||
emissive = color.rgb * edgeMask * color.a;
|
||||
}
|
||||
<@endfunc@>
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
#include <Interpolate.h>
|
||||
#include <gpu/Context.h>
|
||||
|
||||
#define FADE_MIN_SCALE 0.001f
|
||||
#define FADE_MAX_SCALE 100000.f
|
||||
|
||||
void FadeSwitchJob::configure(const Config& config) {
|
||||
_parameters->_isEditEnabled = config.editFade;
|
||||
}
|
||||
|
@ -100,17 +103,17 @@ void FadeJobConfig::setDuration(float value) {
|
|||
}
|
||||
|
||||
void FadeJobConfig::setBaseSizeX(float value) {
|
||||
baseSize[editedCategory].x = value;
|
||||
baseSize[editedCategory].x = FADE_MIN_SCALE*powf(FADE_MAX_SCALE/ FADE_MIN_SCALE, value);
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
void FadeJobConfig::setBaseSizeY(float value) {
|
||||
baseSize[editedCategory].y = value;
|
||||
baseSize[editedCategory].y = FADE_MIN_SCALE*powf(FADE_MAX_SCALE / FADE_MIN_SCALE, value);
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
void FadeJobConfig::setBaseSizeZ(float value) {
|
||||
baseSize[editedCategory].z = value;
|
||||
baseSize[editedCategory].z = FADE_MIN_SCALE*powf(FADE_MAX_SCALE / FADE_MIN_SCALE, value);
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
|
@ -125,17 +128,17 @@ void FadeJobConfig::setBaseInverted(bool value) {
|
|||
}
|
||||
|
||||
void FadeJobConfig::setNoiseSizeX(float value) {
|
||||
noiseSize[editedCategory].x = value;
|
||||
noiseSize[editedCategory].x = FADE_MIN_SCALE*powf(FADE_MAX_SCALE / FADE_MIN_SCALE, value);
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
void FadeJobConfig::setNoiseSizeY(float value) {
|
||||
noiseSize[editedCategory].y = value;
|
||||
noiseSize[editedCategory].y = FADE_MIN_SCALE*powf(FADE_MAX_SCALE / FADE_MIN_SCALE, value);
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
void FadeJobConfig::setNoiseSizeZ(float value) {
|
||||
noiseSize[editedCategory].z = value;
|
||||
noiseSize[editedCategory].z = FADE_MIN_SCALE*powf(FADE_MAX_SCALE / FADE_MIN_SCALE, value);
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
|
@ -145,7 +148,7 @@ void FadeJobConfig::setNoiseLevel(float value) {
|
|||
}
|
||||
|
||||
void FadeJobConfig::setEdgeWidth(float value) {
|
||||
edgeWidth[editedCategory] = value;
|
||||
edgeWidth[editedCategory] = value * value;
|
||||
emit dirty();
|
||||
}
|
||||
|
||||
|
@ -214,12 +217,8 @@ void FadeConfigureJob::configure(const Config& config) {
|
|||
configuration._invertBase = config.baseInverted[i];
|
||||
configuration._edgeWidthInvWidth.x = config.edgeWidth[i];
|
||||
configuration._edgeWidthInvWidth.y = 1.f / configuration._edgeWidthInvWidth.x;
|
||||
configuration._innerEdgeColor.r = config.edgeInnerColor[i].r * config.edgeInnerColor[i].a;
|
||||
configuration._innerEdgeColor.g = config.edgeInnerColor[i].g * config.edgeInnerColor[i].a;
|
||||
configuration._innerEdgeColor.b = config.edgeInnerColor[i].b * config.edgeInnerColor[i].a;
|
||||
configuration._outerEdgeColor.r = config.edgeOuterColor[i].r * config.edgeOuterColor[i].a;
|
||||
configuration._outerEdgeColor.g = config.edgeOuterColor[i].g * config.edgeOuterColor[i].a;
|
||||
configuration._outerEdgeColor.b = config.edgeOuterColor[i].b * config.edgeOuterColor[i].a;
|
||||
configuration._innerEdgeColor = config.edgeInnerColor[i];
|
||||
configuration._outerEdgeColor = config.edgeOuterColor[i];
|
||||
}
|
||||
_isBufferDirty = true;
|
||||
}
|
||||
|
|
|
@ -127,11 +127,11 @@ public:
|
|||
|
||||
int editedCategory{ ELEMENT_ENTER_LEAVE_DOMAIN };
|
||||
glm::vec3 baseSize[EVENT_CATEGORY_COUNT]{
|
||||
{ 1.0f, 1.0f, 1.0f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_OWNER
|
||||
{ 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_TRESPASSER
|
||||
{ 1.0f, 1.0f, 1.0f }, // USER_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f }, // AVATAR_CHANGE
|
||||
{ 0.35f, 0.35f, 0.35f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 0.35f, 0.35f, 0.35f }, // BUBBLE_ISECT_OWNER
|
||||
{ 0.35f, 0.35f, 0.35f }, // BUBBLE_ISECT_TRESPASSER
|
||||
{ 0.35f, 0.35f, 0.35f }, // USER_ENTER_LEAVE_DOMAIN
|
||||
{ 0.35f, 0.35f, 0.35f }, // AVATAR_CHANGE
|
||||
};
|
||||
float baseLevel[EVENT_CATEGORY_COUNT]{
|
||||
1.0f, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
|
@ -148,11 +148,11 @@ public:
|
|||
false, // AVATAR_CHANGE
|
||||
};
|
||||
glm::vec3 noiseSize[EVENT_CATEGORY_COUNT]{
|
||||
{ 1.0f, 1.0f, 1.0f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_OWNER
|
||||
{ 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_TRESPASSER
|
||||
{ 1.0f, 1.0f, 1.0f }, // USER_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f }, // AVATAR_CHANGE
|
||||
{ 0.35f, 0.35f, 0.35f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 0.35f, 0.35f, 0.35f }, // BUBBLE_ISECT_OWNER
|
||||
{ 0.35f, 0.35f, 0.35f }, // BUBBLE_ISECT_TRESPASSER
|
||||
{ 0.35f, 0.35f, 0.35f }, // USER_ENTER_LEAVE_DOMAIN
|
||||
{ 0.35f, 0.35f, 0.35f }, // AVATAR_CHANGE
|
||||
};
|
||||
float noiseLevel[EVENT_CATEGORY_COUNT]{
|
||||
1.0f, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
|
@ -169,22 +169,22 @@ public:
|
|||
3.0f, // AVATAR_CHANGE
|
||||
};
|
||||
float edgeWidth[EVENT_CATEGORY_COUNT]{
|
||||
0.1f, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
0.1f, // BUBBLE_ISECT_OWNER
|
||||
0.1f, // BUBBLE_ISECT_TRESPASSER
|
||||
0.1f, // USER_ENTER_LEAVE_DOMAIN
|
||||
0.1f, // AVATAR_CHANGE
|
||||
0.05f, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
0.05f, // BUBBLE_ISECT_OWNER
|
||||
0.05f, // BUBBLE_ISECT_TRESPASSER
|
||||
0.05f, // USER_ENTER_LEAVE_DOMAIN
|
||||
0.05f, // AVATAR_CHANGE
|
||||
};
|
||||
glm::vec4 edgeInnerColor[EVENT_CATEGORY_COUNT]{
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_OWNER
|
||||
{ 78.f / 255.f, 215.f / 255.f, 255.f / 255.f, 0.0f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 31.f / 255.f, 198.f / 255.f, 166.f / 255.f, 1.0f }, // BUBBLE_ISECT_OWNER
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_TRESPASSER
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // USER_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // AVATAR_CHANGE
|
||||
};
|
||||
glm::vec4 edgeOuterColor[EVENT_CATEGORY_COUNT]{
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_OWNER
|
||||
{ 78.f / 255.f, 215.f / 255.f, 255.f / 255.f, 1.0f }, // ELEMENT_ENTER_LEAVE_DOMAIN
|
||||
{ 31.f / 255.f, 198.f / 255.f, 166.f / 255.f, 1.0f }, // BUBBLE_ISECT_OWNER
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // BUBBLE_ISECT_TRESPASSER
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // USER_ENTER_LEAVE_DOMAIN
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f }, // AVATAR_CHANGE
|
||||
|
@ -245,8 +245,8 @@ struct FadeParameters
|
|||
{
|
||||
glm::vec4 _baseInvSizeAndLevel;
|
||||
glm::vec4 _noiseInvSizeAndLevel;
|
||||
glm::vec3 _innerEdgeColor;
|
||||
glm::vec3 _outerEdgeColor;
|
||||
glm::vec4 _innerEdgeColor;
|
||||
glm::vec4 _outerEdgeColor;
|
||||
glm::vec2 _edgeWidthInvWidth;
|
||||
glm::int32 _invertBase;
|
||||
glm::float32 _padding;
|
||||
|
|
Loading…
Reference in a new issue