This commit is contained in:
ManDude
2022-01-10 02:56:43 +00:00
parent 873354c7ba
commit 83e9950870
4 changed files with 1505 additions and 23 deletions
File diff suppressed because it is too large Load Diff
@@ -77,7 +77,7 @@ SpriteRenderer::SpriteRenderer(const std::string& name, BucketId my_id)
(void*)offsetof(SpriteVertex3D, flags_matrix) // offset in array (why is this a pointer...)
);
glEnableVertexAttribArray(3);
glEnableVertexAttribArray(4);
glVertexAttribIPointer(4, // location 0 in the shader
1, // 3 floats per vert
GL_UNSIGNED_BYTE, // floats
@@ -1102,17 +1102,21 @@ void SpriteRenderer::do_3d_block_cpu(u32 count,
*/
}
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindVertexArray(m_ogl.vao);
// render!
glBindBuffer(GL_ARRAY_BUFFER, m_ogl.vertex_buffer);
glBufferSubData(GL_ARRAY_BUFFER, 0, count * sizeof(SpriteVertex3D), m_vertices_3d.data());
glBufferSubData(GL_ARRAY_BUFFER, 0, count * sizeof(SpriteVertex3D) * 6, m_vertices_3d.data());
glActiveTexture(GL_TEXTURE0);
glDrawArrays(GL_TRIANGLES, 0, count);
glDrawArrays(GL_TRIANGLES, 0, count * 6);
glBindVertexArray(0);
int n_tris = (count / 3);
int n_tris = (count * 6 / 3);
prof.add_tri(n_tris);
prof.add_draw_call(1);
}
@@ -3,7 +3,7 @@
out vec4 color;
in vec4 fragment_color;
// in vec2 tex_coord;
in vec2 tex_coord;
// in flat uvec2 tex_info;
@@ -42,7 +42,7 @@ void main() {
// vec4 tex_color = fragment_color * T0 * 2.0;
vec4 tex_color = fragment_color * 1.0;
if (tex_color.a < 0.016) {
discard;
// discard;
}
color = tex_color;
color = vec4(1.0, 0, 1.0, 1.0);
}
@@ -21,7 +21,7 @@ uniform vec4 xyz_array[4];
uniform vec4 st_array[4];
out vec4 fragment_color;
// out vec3 tex_coord;
out vec3 tex_coord;
// putting all texture info stuff here so it's easier to copy-paste
// layout (location = 3) in uvec2 tex_info_in;
@@ -66,7 +66,7 @@ vec4 sprite_transform2(vec4 root, vec4 off, mat4 cam, mat3 sprite_rot, float sx,
pos.xyz += offset.xyz;
vec4 transformed_pos = matrix_transform(cam, pos);
float Q = pfog0 / transformed_pos.w();
float Q = pfog0 / transformed_pos.w;
transformed_pos.xyz *= Q;
vec4 offset_pos = transformed_pos + hvdf_off;
offset_pos.w = max(offset_pos.w, fog_max);
@@ -221,26 +221,14 @@ void main() {
// packet.sprite_giftag = use_first_giftag ? m_frame_data.sprite_2d_giftag : m_frame_data.sprite_2d_giftag2;
// tex_coord = st_array[vert_id].xyz;
// correct xy offset
transformed.xy -= (2048.);
// correct z scale
transformed.z /= (16777216);
transformed.z *= 2;
transformed.z -= 1;
// correct xy scale
transformed.x /= (256);
transformed.y /= -(128);
tex_coord = st_array[vert_id].xyz;
// hack
transformed.xyz *= transformed.w;
gl_Position = transformed;
// scissoring area adjust
gl_Position.y *= 512.0/448.0;
// gl_Position.y *= 512.0/448.0;
// fragment_color = vec4(rgba_in.x, rgba_in.y, rgba_in.z, rgba_in.w * 2.);
// tex_coord = tex_coord_in;
// tex_info = tex_info_in;