Skip to content

Commit

Permalink
Correct portrait rotation offsets
Browse files Browse the repository at this point in the history
  • Loading branch information
ns6089 committed Aug 31, 2024
1 parent 440a33f commit f41242f
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ cbuffer rotate_texture_steps_cbuffer : register(b1) {

vertex_t main_vs(uint vertex_id : SV_VertexID)
{
return generate_fullscreen_triangle_vertex(vertex_id, subsample_offset.x, rotate_texture_steps);
return generate_fullscreen_triangle_vertex(vertex_id, subsample_offset, rotate_texture_steps);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ cbuffer rotate_texture_steps_cbuffer : register(b1) {

vertex_t main_vs(uint vertex_id : SV_VertexID)
{
return generate_fullscreen_triangle_vertex(vertex_id, subsample_offset / 2, rotate_texture_steps);
return generate_fullscreen_triangle_vertex(vertex_id, subsample_offset, rotate_texture_steps);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ cbuffer rotate_texture_steps_cbuffer : register(b1) {

vertex_t main_vs(uint vertex_id : SV_VertexID)
{
return generate_fullscreen_triangle_vertex(vertex_id, rotate_texture_steps);
return generate_fullscreen_triangle_vertex(vertex_id, float2(0, 0), rotate_texture_steps);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ cbuffer rotate_texture_steps_cbuffer : register(b1) {

vertex_t main_vs(uint vertex_id : SV_VertexID)
{
return generate_fullscreen_triangle_vertex(vertex_id, rotate_texture_steps);
return generate_fullscreen_triangle_vertex(vertex_id, float2(0, 0), rotate_texture_steps);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ cbuffer color_matrix_cbuffer : register(b3) {

vertex_t main_vs(uint vertex_id : SV_VertexID)
{
vertex_t output = generate_fullscreen_triangle_vertex(vertex_id % 3, rotate_texture_steps);
vertex_t output = generate_fullscreen_triangle_vertex(vertex_id % 3, float2(0, 0), rotate_texture_steps);

output.viewport = vertex_id / 3;

Expand Down
2 changes: 1 addition & 1 deletion src_assets/windows/assets/shaders/directx/cursor_vs.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ cbuffer rotate_texture_steps_cbuffer : register(b2) {

vertex_t main_vs(uint vertex_id : SV_VertexID)
{
return generate_fullscreen_triangle_vertex(vertex_id, rotate_texture_steps);
return generate_fullscreen_triangle_vertex(vertex_id, float2(0, 0), rotate_texture_steps);
}
15 changes: 6 additions & 9 deletions src_assets/windows/assets/shaders/directx/include/base_vs.hlsl
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
#include "include/base_vs_types.hlsl"

#if defined(LEFT_SUBSAMPLING)
vertex_t generate_fullscreen_triangle_vertex(uint vertex_id, float subsample_offset, int rotate_texture_steps)
#elif defined(LEFT_SUBSAMPLING_SCALE)
vertex_t generate_fullscreen_triangle_vertex(uint vertex_id, float2 halfsample_offset, int rotate_texture_steps)
#elif defined(TOPLEFT_SUBSAMPLING)
vertex_t generate_fullscreen_triangle_vertex(uint vertex_id, float2 subsample_offset, int rotate_texture_steps)
#else
vertex_t generate_fullscreen_triangle_vertex(uint vertex_id, int rotate_texture_steps)
#endif
{
vertex_t output;
float2 tex_coord;
Expand All @@ -32,11 +24,16 @@ vertex_t generate_fullscreen_triangle_vertex(uint vertex_id, int rotate_texture_
sin(rotation_radians), cos(rotation_radians) };
float2 rotation_center = { 0.5, 0.5 };
tex_coord = round(rotation_center + mul(rotation_matrix, tex_coord - rotation_center));

if (rotate_texture_steps % 2) {
subsample_offset.xy = subsample_offset.yx;
}
}

#if defined(LEFT_SUBSAMPLING)
output.tex_right_left_center = float3(tex_coord.x, tex_coord.x - subsample_offset, tex_coord.y);
output.tex_right_left_center = float3(tex_coord.x, tex_coord.x - subsample_offset.x, tex_coord.y);
#elif defined(LEFT_SUBSAMPLING_SCALE)
float2 halfsample_offset = subsample_offset / 2;
float3 right_center_left = float3(tex_coord.x + halfsample_offset.x,
tex_coord.x - halfsample_offset.x,
tex_coord.x - 3 * halfsample_offset.x);
Expand Down

0 comments on commit f41242f

Please sign in to comment.