mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-10-30 07:11:05 +00:00
Implement vertical marquee fade. (#261)
This commit is contained in:
parent
0426b79094
commit
342d696f99
7 changed files with 40 additions and 17 deletions
|
|
@ -1,15 +1,16 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define IMGUI_SHADER_MODIFIER_NONE 0
|
#define IMGUI_SHADER_MODIFIER_NONE 0
|
||||||
#define IMGUI_SHADER_MODIFIER_SCANLINE 1
|
#define IMGUI_SHADER_MODIFIER_SCANLINE 1
|
||||||
#define IMGUI_SHADER_MODIFIER_CHECKERBOARD 2
|
#define IMGUI_SHADER_MODIFIER_CHECKERBOARD 2
|
||||||
#define IMGUI_SHADER_MODIFIER_SCANLINE_BUTTON 3
|
#define IMGUI_SHADER_MODIFIER_SCANLINE_BUTTON 3
|
||||||
#define IMGUI_SHADER_MODIFIER_TEXT_SKEW 4
|
#define IMGUI_SHADER_MODIFIER_TEXT_SKEW 4
|
||||||
#define IMGUI_SHADER_MODIFIER_MARQUEE_FADE 5
|
#define IMGUI_SHADER_MODIFIER_HORIZONTAL_MARQUEE_FADE 5
|
||||||
#define IMGUI_SHADER_MODIFIER_GRAYSCALE 6
|
#define IMGUI_SHADER_MODIFIER_VERTICAL_MARQUEE_FADE 6
|
||||||
#define IMGUI_SHADER_MODIFIER_TITLE_BEVEL 7
|
#define IMGUI_SHADER_MODIFIER_GRAYSCALE 7
|
||||||
#define IMGUI_SHADER_MODIFIER_CATEGORY_BEVEL 8
|
#define IMGUI_SHADER_MODIFIER_TITLE_BEVEL 8
|
||||||
#define IMGUI_SHADER_MODIFIER_RECTANGLE_BEVEL 9
|
#define IMGUI_SHADER_MODIFIER_CATEGORY_BEVEL 9
|
||||||
|
#define IMGUI_SHADER_MODIFIER_RECTANGLE_BEVEL 10
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ float4 main(in Interpolators interpolators) : SV_Target
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_MARQUEE_FADE)
|
if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_HORIZONTAL_MARQUEE_FADE)
|
||||||
{
|
{
|
||||||
float minAlpha = saturate((interpolators.Position.x - g_PushConstants.BoundsMin.x) / g_PushConstants.Scale.x);
|
float minAlpha = saturate((interpolators.Position.x - g_PushConstants.BoundsMin.x) / g_PushConstants.Scale.x);
|
||||||
float maxAlpha = saturate((g_PushConstants.BoundsMax.x - interpolators.Position.x) / g_PushConstants.Scale.x);
|
float maxAlpha = saturate((g_PushConstants.BoundsMax.x - interpolators.Position.x) / g_PushConstants.Scale.x);
|
||||||
|
|
@ -143,6 +143,14 @@ float4 main(in Interpolators interpolators) : SV_Target
|
||||||
color.a *= minAlpha;
|
color.a *= minAlpha;
|
||||||
color.a *= maxAlpha;
|
color.a *= maxAlpha;
|
||||||
}
|
}
|
||||||
|
else if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_VERTICAL_MARQUEE_FADE)
|
||||||
|
{
|
||||||
|
float minAlpha = saturate((interpolators.Position.y - g_PushConstants.BoundsMin.y) / g_PushConstants.Scale.y);
|
||||||
|
float maxAlpha = saturate((g_PushConstants.BoundsMax.y - interpolators.Position.y) / g_PushConstants.Scale.y);
|
||||||
|
|
||||||
|
color.a *= minAlpha;
|
||||||
|
color.a *= maxAlpha;
|
||||||
|
}
|
||||||
else if (any(g_PushConstants.BoundsMin != g_PushConstants.BoundsMax))
|
else if (any(g_PushConstants.BoundsMin != g_PushConstants.BoundsMax))
|
||||||
{
|
{
|
||||||
float2 factor = saturate((interpolators.Position.xy - g_PushConstants.BoundsMin) / (g_PushConstants.BoundsMax - g_PushConstants.BoundsMin));
|
float2 factor = saturate((interpolators.Position.xy - g_PushConstants.BoundsMin) / (g_PushConstants.BoundsMax - g_PushConstants.BoundsMin));
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ void main(in float2 position : POSITION, in float2 uv : TEXCOORD, in float4 colo
|
||||||
if (position.y < g_PushConstants.Origin.y)
|
if (position.y < g_PushConstants.Origin.y)
|
||||||
position.x += g_PushConstants.Scale.x;
|
position.x += g_PushConstants.Scale.x;
|
||||||
}
|
}
|
||||||
else if (g_PushConstants.ShaderModifier != IMGUI_SHADER_MODIFIER_MARQUEE_FADE)
|
else if (g_PushConstants.ShaderModifier != IMGUI_SHADER_MODIFIER_HORIZONTAL_MARQUEE_FADE &&
|
||||||
|
g_PushConstants.ShaderModifier != IMGUI_SHADER_MODIFIER_VERTICAL_MARQUEE_FADE)
|
||||||
{
|
{
|
||||||
position.xy = g_PushConstants.Origin + (position.xy - g_PushConstants.Origin) * g_PushConstants.Scale;
|
position.xy = g_PushConstants.Origin + (position.xy - g_PushConstants.Origin) * g_PushConstants.Scale;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,7 @@ static void DrawAchievement(int rowIndex, float yOffset, Achievement& achievemen
|
||||||
ImVec2 marqueeMin = { textMarqueeX, min.y };
|
ImVec2 marqueeMin = { textMarqueeX, min.y };
|
||||||
ImVec2 marqueeMax = { max.x - Scale(10) /* timestamp margin X */, max.y };
|
ImVec2 marqueeMax = { max.x - Scale(10) /* timestamp margin X */, max.y };
|
||||||
|
|
||||||
SetMarqueeFade(marqueeMin, marqueeMax, Scale(32));
|
SetHorizontalMarqueeFade(marqueeMin, marqueeMax, Scale(32));
|
||||||
|
|
||||||
if (isSelected && textX + textSize.x >= max.x - Scale(10))
|
if (isSelected && textX + textSize.x >= max.x - Scale(10))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ void ResetTextSkew()
|
||||||
SetScale({ 1.0f, 1.0f });
|
SetScale({ 1.0f, 1.0f });
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale)
|
void SetHorizontalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale)
|
||||||
{
|
{
|
||||||
auto callbackData = AddImGuiCallback(ImGuiCallback::SetMarqueeFade);
|
auto callbackData = AddImGuiCallback(ImGuiCallback::SetMarqueeFade);
|
||||||
callbackData->setMarqueeFade.boundsMin[0] = min.x;
|
callbackData->setMarqueeFade.boundsMin[0] = min.x;
|
||||||
|
|
@ -88,10 +88,22 @@ void SetMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale)
|
||||||
callbackData->setMarqueeFade.boundsMax[0] = max.x;
|
callbackData->setMarqueeFade.boundsMax[0] = max.x;
|
||||||
callbackData->setMarqueeFade.boundsMax[1] = max.y;
|
callbackData->setMarqueeFade.boundsMax[1] = max.y;
|
||||||
|
|
||||||
SetShaderModifier(IMGUI_SHADER_MODIFIER_MARQUEE_FADE);
|
SetShaderModifier(IMGUI_SHADER_MODIFIER_HORIZONTAL_MARQUEE_FADE);
|
||||||
SetScale({ fadeScale, 1.0f });
|
SetScale({ fadeScale, 1.0f });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetVerticalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale)
|
||||||
|
{
|
||||||
|
auto callbackData = AddImGuiCallback(ImGuiCallback::SetMarqueeFade);
|
||||||
|
callbackData->setMarqueeFade.boundsMin[0] = min.x;
|
||||||
|
callbackData->setMarqueeFade.boundsMin[1] = min.y;
|
||||||
|
callbackData->setMarqueeFade.boundsMax[0] = max.x;
|
||||||
|
callbackData->setMarqueeFade.boundsMax[1] = max.y;
|
||||||
|
|
||||||
|
SetShaderModifier(IMGUI_SHADER_MODIFIER_VERTICAL_MARQUEE_FADE);
|
||||||
|
SetScale({ 1.0f, fadeScale });
|
||||||
|
}
|
||||||
|
|
||||||
void ResetMarqueeFade()
|
void ResetMarqueeFade()
|
||||||
{
|
{
|
||||||
ResetGradient();
|
ResetGradient();
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,8 @@ void SetOrigin(ImVec2 origin);
|
||||||
void SetScale(ImVec2 scale);
|
void SetScale(ImVec2 scale);
|
||||||
void SetTextSkew(float yCenter, float skewScale);
|
void SetTextSkew(float yCenter, float skewScale);
|
||||||
void ResetTextSkew();
|
void ResetTextSkew();
|
||||||
void SetMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale);
|
void SetHorizontalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale);
|
||||||
|
void SetVerticalMarqueeFade(ImVec2 min, ImVec2 max, float fadeScale);
|
||||||
void ResetMarqueeFade();
|
void ResetMarqueeFade();
|
||||||
void SetOutline(float outline);
|
void SetOutline(float outline);
|
||||||
void ResetOutline();
|
void ResetOutline();
|
||||||
|
|
|
||||||
|
|
@ -797,7 +797,7 @@ static void DrawDescriptionContainer()
|
||||||
ImVec2 textMin = { g_aspectRatioOffsetX + Scale(CONTAINER_X), textPos.y };
|
ImVec2 textMin = { g_aspectRatioOffsetX + Scale(CONTAINER_X), textPos.y };
|
||||||
ImVec2 textMax = { g_aspectRatioOffsetX + Scale(CONTAINER_X) + Scale(CONTAINER_WIDTH), g_aspectRatioOffsetY + Scale(CONTAINER_Y) + Scale(CONTAINER_HEIGHT) };
|
ImVec2 textMax = { g_aspectRatioOffsetX + Scale(CONTAINER_X) + Scale(CONTAINER_WIDTH), g_aspectRatioOffsetY + Scale(CONTAINER_Y) + Scale(CONTAINER_HEIGHT) };
|
||||||
|
|
||||||
SetMarqueeFade(textMin, textMax, Scale(32));
|
SetHorizontalMarqueeFade(textMin, textMax, Scale(32));
|
||||||
DrawTextWithMarquee(g_seuratFont, fontSize, textPos, textMin, textMax, colWhite, g_creditsStr.c_str(), g_installerEndTime, 0.9, Scale(200));
|
DrawTextWithMarquee(g_seuratFont, fontSize, textPos, textMin, textMax, colWhite, g_creditsStr.c_str(), g_installerEndTime, 0.9, Scale(200));
|
||||||
ResetMarqueeFade();
|
ResetMarqueeFade();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue