Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2020-09-10 16:51:20 +0300
committerClément Foucault <foucault.clem@gmail.com>2020-09-10 16:55:14 +0300
commit72f63ba7e9be0c41dff4c3ed3c4fb527b607dbc3 (patch)
tree5d81dd72fe9651aefb3c0804ce8f45074794be20 /source
parent7f4799a18931a1b9f8edd970cd4bb30bf1577d40 (diff)
GPUState: Fix Point Size issues
The point size was not updated in the right branch and setting the point size via GPU_point_size was effectively disabling its use.
Diffstat (limited to 'source')
-rw-r--r--source/blender/gpu/intern/gpu_state.cc7
-rw-r--r--source/blender/gpu/opengl/gl_state.cc4
2 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/gpu/intern/gpu_state.cc b/source/blender/gpu/intern/gpu_state.cc
index 529c8795327..07eacc06bcf 100644
--- a/source/blender/gpu/intern/gpu_state.cc
+++ b/source/blender/gpu/intern/gpu_state.cc
@@ -173,12 +173,15 @@ void GPU_line_width(float width)
void GPU_point_size(float size)
{
- SET_MUTABLE_STATE(point_size, size * PIXELSIZE);
+ GPUStateManager *stack = Context::get()->state_manager;
+ auto &state = stack->mutable_state;
+ /* Set point size sign negative to disable. */
+ state.point_size = size * signf(state.point_size);
}
/* Programmable point size
* - shaders set their own point size when enabled
- * - use glPointSize when disabled */
+ * - use GPU_point_size when disabled */
/* TODO remove and use program point size everywhere */
void GPU_program_point_size(bool enable)
{
diff --git a/source/blender/gpu/opengl/gl_state.cc b/source/blender/gpu/opengl/gl_state.cc
index 03762edac93..487cd4369cc 100644
--- a/source/blender/gpu/opengl/gl_state.cc
+++ b/source/blender/gpu/opengl/gl_state.cc
@@ -141,13 +141,13 @@ void GLStateManager::set_mutable_state(const GPUStateMutable &state)
GPUStateMutable changed = state ^ current_mutable_;
/* TODO remove, should be uniform. */
- if (changed.point_size != 0) {
+ if (changed.point_size != 0.0f) {
if (state.point_size > 0.0f) {
glEnable(GL_PROGRAM_POINT_SIZE);
- glPointSize(state.point_size);
}
else {
glDisable(GL_PROGRAM_POINT_SIZE);
+ glPointSize(fabsf(state.point_size));
}
}