Browse Source
Merge pull request #3376 from ReinUsesLisp/point-sprite
gl_rasterizer: Implement GL_POINT_SPRITE
pull/15/merge
bunnei
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
9 additions and
1 deletions
-
src/video_core/engines/maxwell_3d.h
-
src/video_core/renderer_opengl/gl_rasterizer.cpp
-
src/video_core/renderer_opengl/gl_state.cpp
-
src/video_core/renderer_opengl/gl_state.h
|
|
|
@ -862,7 +862,11 @@ public: |
|
|
|
|
|
|
|
float point_size; |
|
|
|
|
|
|
|
INSERT_UNION_PADDING_WORDS(0x7); |
|
|
|
INSERT_UNION_PADDING_WORDS(0x1); |
|
|
|
|
|
|
|
u32 point_sprite_enable; |
|
|
|
|
|
|
|
INSERT_UNION_PADDING_WORDS(0x5); |
|
|
|
|
|
|
|
u32 zeta_enable; |
|
|
|
|
|
|
|
@ -1494,6 +1498,7 @@ ASSERT_REG_POSITION(vb_element_base, 0x50D); |
|
|
|
ASSERT_REG_POSITION(vb_base_instance, 0x50E); |
|
|
|
ASSERT_REG_POSITION(clip_distance_enabled, 0x544); |
|
|
|
ASSERT_REG_POSITION(point_size, 0x546); |
|
|
|
ASSERT_REG_POSITION(point_sprite_enable, 0x548); |
|
|
|
ASSERT_REG_POSITION(zeta_enable, 0x54E); |
|
|
|
ASSERT_REG_POSITION(multisample_control, 0x54F); |
|
|
|
ASSERT_REG_POSITION(condition, 0x554); |
|
|
|
|
|
|
|
@ -1220,6 +1220,7 @@ void RasterizerOpenGL::SyncPointState() { |
|
|
|
// Limit the point size to 1 since nouveau sometimes sets a point size of 0 (and that's invalid
|
|
|
|
// in OpenGL).
|
|
|
|
state.point.program_control = regs.vp_point_size.enable != 0; |
|
|
|
state.point.sprite = regs.point_sprite_enable != 0; |
|
|
|
state.point.size = std::max(1.0f, regs.point_size); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -128,6 +128,7 @@ void OpenGLState::ApplyClipDistances() { |
|
|
|
|
|
|
|
void OpenGLState::ApplyPointSize() { |
|
|
|
Enable(GL_PROGRAM_POINT_SIZE, cur_state.point.program_control, point.program_control); |
|
|
|
Enable(GL_POINT_SPRITE, cur_state.point.sprite, point.sprite); |
|
|
|
if (UpdateValue(cur_state.point.size, point.size)) { |
|
|
|
glPointSize(point.size); |
|
|
|
} |
|
|
|
|
|
|
|
@ -132,6 +132,7 @@ public: |
|
|
|
|
|
|
|
struct { |
|
|
|
bool program_control = false; // GL_PROGRAM_POINT_SIZE |
|
|
|
bool sprite = false; // GL_POINT_SPRITE |
|
|
|
GLfloat size = 1.0f; // GL_POINT_SIZE |
|
|
|
} point; |
|
|
|
|
|
|
|
|