71 lines
1.8 KiB
C++
71 lines
1.8 KiB
C++
#include "graphics_primitive.hpp"
|
|
#include "cover.hpp"
|
|
#include "ta_parameter.hpp"
|
|
#include "playlist.hpp"
|
|
#include "texture.hpp"
|
|
|
|
namespace scene::tracker::cover {
|
|
|
|
constexpr float texture_width = 1.0 / 128.0;
|
|
constexpr float texture_height = 1.0 / 128.0;
|
|
|
|
constexpr inline vec3 transform_position(const vec2& p,
|
|
float x, float y, float z)
|
|
{
|
|
return {
|
|
x + p.x * 128,
|
|
y + p.y * 128,
|
|
z
|
|
};
|
|
}
|
|
|
|
constexpr inline vec2 transform_texture(const vec2& t)
|
|
{
|
|
return {
|
|
(0 + t.x * 72) * texture_width,
|
|
(0 + t.y * 72) * texture_height,
|
|
};
|
|
}
|
|
|
|
constexpr vec2 vtx[] = {
|
|
{0, 0},
|
|
{1, 0},
|
|
{1, 1},
|
|
{0, 1},
|
|
};
|
|
|
|
void draw(ta_multiwriter& multi, float x, float y)
|
|
{
|
|
uint32_t texture_size = tsp_instruction_word::texture_u_size::from_int(128)
|
|
| tsp_instruction_word::texture_v_size::from_int(128)
|
|
| tsp_instruction_word::dst_alpha_instr::zero;
|
|
|
|
global_polygon_textured(multi.op,
|
|
para_control::list_type::translucent,
|
|
texture::offset::cover1,
|
|
texture_size,
|
|
texture_control_word::pixel_format::_565);
|
|
|
|
float z = 1.0 / 10.0f;
|
|
|
|
int base_color = 0xffffff;
|
|
|
|
vec3 ap = transform_position(vtx[0], x, y, z);
|
|
vec3 bp = transform_position(vtx[1], x, y, z);
|
|
vec3 cp = transform_position(vtx[2], x, y, z);
|
|
vec3 dp = transform_position(vtx[3], x, y, z);
|
|
|
|
vec2 at = transform_texture(vtx[0]);
|
|
vec2 bt = transform_texture(vtx[1]);
|
|
vec2 ct = transform_texture(vtx[2]);
|
|
vec2 dt = transform_texture(vtx[3]);
|
|
|
|
quad_type_3(multi.op,
|
|
ap, at,
|
|
bp, bt,
|
|
cp, ct,
|
|
dp, dt,
|
|
base_color);
|
|
}
|
|
}
|