mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-06-04 22:25:01 -06:00
rsx/overlays: Implement arrow rendering
This commit is contained in:
parent
7866c7195c
commit
7240cbfdab
47
rpcs3/Emu/RSX/Overlays/overlay_arrow.h
Normal file
47
rpcs3/Emu/RSX/Overlays/overlay_arrow.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "overlay_controls.h"
|
||||||
|
|
||||||
|
namespace rsx::overlays
|
||||||
|
{
|
||||||
|
template <int Anchor, int Base, int Edge0, int Edge1>
|
||||||
|
requires (Anchor >= 0 && Anchor < 4 && Base >= 0 && Base < 4 && Edge0 >= 0 && Edge0 < 4 && Edge1 >= 0 && Edge1 < 4)
|
||||||
|
struct arrow_base : public overlay_element
|
||||||
|
{
|
||||||
|
compiled_resource& get_compiled() override
|
||||||
|
{
|
||||||
|
if (is_compiled())
|
||||||
|
{
|
||||||
|
return compiled_resources;
|
||||||
|
}
|
||||||
|
|
||||||
|
overlay_element::get_compiled();
|
||||||
|
|
||||||
|
m_vertex_cache.resize(3);
|
||||||
|
m_vertex_cache[0] = compiled_resources.draw_commands[0].verts[Anchor];
|
||||||
|
m_vertex_cache[1] = compiled_resources.draw_commands[0].verts[Base];
|
||||||
|
m_vertex_cache[2] = compiled_resources.draw_commands[0].verts[Edge0] + compiled_resources.draw_commands[0].verts[Edge1];
|
||||||
|
m_vertex_cache[2] /= 2;
|
||||||
|
compiled_resources.draw_commands[0].verts.swap(m_vertex_cache);
|
||||||
|
compiled_resources.draw_commands[0].config.primitives = overlays::primitive_type::triangle_strip;
|
||||||
|
|
||||||
|
m_is_compiled = true;
|
||||||
|
return compiled_resources;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<vertex> m_vertex_cache;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct arrow_up : public arrow_base<2, 3, 0, 1>
|
||||||
|
{};
|
||||||
|
|
||||||
|
struct arrow_down : public arrow_base<0, 1, 2, 3>
|
||||||
|
{};
|
||||||
|
|
||||||
|
struct arrow_left : public arrow_base<1, 2, 3, 0>
|
||||||
|
{};
|
||||||
|
|
||||||
|
struct arrow_right : public arrow_base<3, 0, 1, 2>
|
||||||
|
{};
|
||||||
|
}
|
||||||
@ -95,6 +95,52 @@ struct vertex
|
|||||||
values[2] -= other.values[2];
|
values[2] -= other.values[2];
|
||||||
values[3] -= other.values[3];
|
values[3] -= other.values[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator /= (const vertex& other)
|
||||||
|
{
|
||||||
|
values[0] /= other.values[0];
|
||||||
|
values[1] /= other.values[1];
|
||||||
|
values[2] /= other.values[2];
|
||||||
|
values[3] /= other.values[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator /= (float rhs)
|
||||||
|
{
|
||||||
|
values[0] /= rhs;
|
||||||
|
values[1] /= rhs;
|
||||||
|
values[2] /= rhs;
|
||||||
|
values[3] /= rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator *= (const vertex& other)
|
||||||
|
{
|
||||||
|
values[0] *= other.values[0];
|
||||||
|
values[1] *= other.values[1];
|
||||||
|
values[2] *= other.values[2];
|
||||||
|
values[3] *= other.values[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator *= (float rhs)
|
||||||
|
{
|
||||||
|
values[0] *= rhs;
|
||||||
|
values[1] *= rhs;
|
||||||
|
values[2] *= rhs;
|
||||||
|
values[3] *= rhs;
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex operator + (const vertex& other) const
|
||||||
|
{
|
||||||
|
vertex result = *this;
|
||||||
|
result += other;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
vertex operator - (const vertex& other) const
|
||||||
|
{
|
||||||
|
vertex result = *this;
|
||||||
|
result -= other;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -711,6 +711,7 @@
|
|||||||
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_recvmessage_dialog.h" />
|
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_recvmessage_dialog.h" />
|
||||||
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_sendmessage_dialog.h" />
|
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_sendmessage_dialog.h" />
|
||||||
<ClInclude Include="Emu\RSX\Overlays\overlay_animated_icon.h" />
|
<ClInclude Include="Emu\RSX\Overlays\overlay_animated_icon.h" />
|
||||||
|
<ClInclude Include="Emu\RSX\Overlays\overlay_arrow.h" />
|
||||||
<ClInclude Include="Emu\RSX\Overlays\overlay_audio.h" />
|
<ClInclude Include="Emu\RSX\Overlays\overlay_audio.h" />
|
||||||
<ClInclude Include="Emu\RSX\Overlays\overlay_checkbox.h" />
|
<ClInclude Include="Emu\RSX\Overlays\overlay_checkbox.h" />
|
||||||
<ClInclude Include="Emu\RSX\Overlays\overlay_cursor.h" />
|
<ClInclude Include="Emu\RSX\Overlays\overlay_cursor.h" />
|
||||||
|
|||||||
@ -2869,6 +2869,9 @@
|
|||||||
<ClInclude Include="Emu\RSX\Overlays\overlay_select.h">
|
<ClInclude Include="Emu\RSX\Overlays\overlay_select.h">
|
||||||
<Filter>Emu\GPU\RSX\Overlays</Filter>
|
<Filter>Emu\GPU\RSX\Overlays</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="Emu\RSX\Overlays\overlay_arrow.h">
|
||||||
|
<Filter>Emu\GPU\RSX\Overlays</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Emu\RSX\Program\GLSLSnippets\GPUDeswizzle.glsl">
|
<None Include="Emu\RSX\Program\GLSLSnippets\GPUDeswizzle.glsl">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user