mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-11-01 21:07:52 +00:00
renderer_opengl: Use GLvec3/GLvec4 aliases for commonly used types.
This commit is contained in:
parent
8e9318f20a
commit
aaa7beeda8
4 changed files with 18 additions and 14 deletions
|
@ -920,7 +920,7 @@ void RasterizerOpenGL::SyncGlobalAmbient() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerOpenGL::SyncLightingLUT(unsigned lut_index) {
|
void RasterizerOpenGL::SyncLightingLUT(unsigned lut_index) {
|
||||||
std::array<std::array<GLfloat, 4>, 256> new_data;
|
std::array<GLvec4, 256> new_data;
|
||||||
|
|
||||||
for (unsigned offset = 0; offset < new_data.size(); ++offset) {
|
for (unsigned offset = 0; offset < new_data.size(); ++offset) {
|
||||||
new_data[offset][0] = Pica::g_state.lighting.luts[(lut_index * 4) + 0][offset].ToFloat();
|
new_data[offset][0] = Pica::g_state.lighting.luts[(lut_index * 4) + 0][offset].ToFloat();
|
||||||
|
@ -969,7 +969,7 @@ void RasterizerOpenGL::SyncLightAmbient(int light_index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerOpenGL::SyncLightPosition(int light_index) {
|
void RasterizerOpenGL::SyncLightPosition(int light_index) {
|
||||||
std::array<GLfloat, 3> position = {
|
GLvec3 position = {
|
||||||
Pica::float16::FromRaw(Pica::g_state.regs.lighting.light[light_index].x).ToFloat32(),
|
Pica::float16::FromRaw(Pica::g_state.regs.lighting.light[light_index].x).ToFloat32(),
|
||||||
Pica::float16::FromRaw(Pica::g_state.regs.lighting.light[light_index].y).ToFloat32(),
|
Pica::float16::FromRaw(Pica::g_state.regs.lighting.light[light_index].y).ToFloat32(),
|
||||||
Pica::float16::FromRaw(Pica::g_state.regs.lighting.light[light_index].z).ToFloat32() };
|
Pica::float16::FromRaw(Pica::g_state.regs.lighting.light[light_index].z).ToFloat32() };
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "video_core/rasterizer_interface.h"
|
#include "video_core/rasterizer_interface.h"
|
||||||
#include "video_core/renderer_opengl/gl_rasterizer_cache.h"
|
#include "video_core/renderer_opengl/gl_rasterizer_cache.h"
|
||||||
#include "video_core/renderer_opengl/gl_state.h"
|
#include "video_core/renderer_opengl/gl_state.h"
|
||||||
|
#include "video_core/renderer_opengl/pica_to_gl.h"
|
||||||
#include "video_core/shader/shader_interpreter.h"
|
#include "video_core/shader/shader_interpreter.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -288,27 +289,27 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LightSrc {
|
struct LightSrc {
|
||||||
std::array<GLfloat, 3> specular_0;
|
GLvec3 specular_0;
|
||||||
INSERT_PADDING_WORDS(1);
|
INSERT_PADDING_WORDS(1);
|
||||||
std::array<GLfloat, 3> specular_1;
|
GLvec3 specular_1;
|
||||||
INSERT_PADDING_WORDS(1);
|
INSERT_PADDING_WORDS(1);
|
||||||
std::array<GLfloat, 3> diffuse;
|
GLvec3 diffuse;
|
||||||
INSERT_PADDING_WORDS(1);
|
INSERT_PADDING_WORDS(1);
|
||||||
std::array<GLfloat, 3> ambient;
|
GLvec3 ambient;
|
||||||
INSERT_PADDING_WORDS(1);
|
INSERT_PADDING_WORDS(1);
|
||||||
std::array<GLfloat, 3> position;
|
GLvec3 position;
|
||||||
INSERT_PADDING_WORDS(1);
|
INSERT_PADDING_WORDS(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Uniform structure for the Uniform Buffer Object, all members must be 16-byte aligned
|
/// Uniform structure for the Uniform Buffer Object, all members must be 16-byte aligned
|
||||||
struct UniformData {
|
struct UniformData {
|
||||||
// A vec4 color for each of the six tev stages
|
// A vec4 color for each of the six tev stages
|
||||||
std::array<GLfloat, 4> const_color[6];
|
GLvec4 const_color[6];
|
||||||
std::array<GLfloat, 4> tev_combiner_buffer_color;
|
GLvec4 tev_combiner_buffer_color;
|
||||||
GLint alphatest_ref;
|
GLint alphatest_ref;
|
||||||
GLfloat depth_offset;
|
GLfloat depth_offset;
|
||||||
INSERT_PADDING_WORDS(2);
|
INSERT_PADDING_WORDS(2);
|
||||||
std::array<GLfloat, 3> lighting_global_ambient;
|
GLvec3 lighting_global_ambient;
|
||||||
INSERT_PADDING_WORDS(1);
|
INSERT_PADDING_WORDS(1);
|
||||||
LightSrc light_src[8];
|
LightSrc light_src[8];
|
||||||
};
|
};
|
||||||
|
@ -434,5 +435,5 @@ private:
|
||||||
OGLFramebuffer framebuffer;
|
OGLFramebuffer framebuffer;
|
||||||
|
|
||||||
std::array<OGLTexture, 6> lighting_lut;
|
std::array<OGLTexture, 6> lighting_lut;
|
||||||
std::array<std::array<std::array<GLfloat, 4>, 256>, 6> lighting_lut_data;
|
std::array<std::array<GLvec4, 256>, 6> lighting_lut_data;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
|
|
||||||
#include "video_core/pica.h"
|
#include "video_core/pica.h"
|
||||||
|
|
||||||
|
using GLvec3 = std::array<GLfloat, 3>;
|
||||||
|
using GLvec4 = std::array<GLfloat, 4>;
|
||||||
|
|
||||||
namespace PicaToGL {
|
namespace PicaToGL {
|
||||||
|
|
||||||
inline GLenum TextureFilterMode(Pica::Regs::TextureConfig::TextureFilter mode) {
|
inline GLenum TextureFilterMode(Pica::Regs::TextureConfig::TextureFilter mode) {
|
||||||
|
@ -175,7 +178,7 @@ inline GLenum StencilOp(Pica::Regs::StencilAction action) {
|
||||||
return stencil_op_table[(unsigned)action];
|
return stencil_op_table[(unsigned)action];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::array<GLfloat, 4> ColorRGBA8(const u32 color) {
|
inline GLvec4 ColorRGBA8(const u32 color) {
|
||||||
return { { (color >> 0 & 0xFF) / 255.0f,
|
return { { (color >> 0 & 0xFF) / 255.0f,
|
||||||
(color >> 8 & 0xFF) / 255.0f,
|
(color >> 8 & 0xFF) / 255.0f,
|
||||||
(color >> 16 & 0xFF) / 255.0f,
|
(color >> 16 & 0xFF) / 255.0f,
|
||||||
|
|
Loading…
Reference in a new issue