PyGPU: call 'GPU_shader_bind' in 'GPUShader.uniform_' methods
This simplifies python code. When we call a method like shader.uniform_float("color", (1,1,1,1)), we expect the shader's uniform to be updated regardless of whether the shader is bound or not. And `batch.draw()` already calls `GPU_shader_bind` inside. Differential Revision: https://developer.blender.org/D15929
This commit is contained in:
parent
2fffd7d7a8
commit
2ce8b01c59
|
@ -134,7 +134,6 @@ batch = batch_for_shader(shader, 'LINES', {"pos": coords})
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
shader.uniform_float("color", (1, 1, 0, 1))
|
||||
batch.draw(shader)
|
||||
|
||||
|
|
|
@ -58,7 +58,6 @@ batch = batch_for_shader(
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
matrix = bpy.context.region_data.perspective_matrix
|
||||
shader.uniform_float("u_ViewProjectionMatrix", matrix)
|
||||
shader.uniform_float("u_Scale", 10)
|
||||
|
|
|
@ -41,7 +41,6 @@ batch = batch_for_shader(shader, 'TRIS', {"position": coords})
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
matrix = bpy.context.region_data.perspective_matrix
|
||||
shader.uniform_float("viewProjectionMatrix", matrix)
|
||||
shader.uniform_float("brightness", 0.5)
|
||||
|
|
|
@ -22,7 +22,6 @@ batch = batch_for_shader(shader, 'LINES', {"pos": coords}, indices=indices)
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
shader.uniform_float("color", (1, 0, 0, 1))
|
||||
batch.draw(shader)
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ batch = batch_for_shader(shader, 'TRIS', {"pos": vertices}, indices=indices)
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
shader.uniform_float("color", (0, 0.5, 0.5, 1.0))
|
||||
batch.draw(shader)
|
||||
|
||||
|
|
|
@ -56,7 +56,6 @@ batch = batch_for_shader(
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
shader.uniform_sampler("image", texture)
|
||||
batch.draw(shader)
|
||||
|
||||
|
|
|
@ -76,7 +76,6 @@ batch = batch_for_shader(
|
|||
|
||||
|
||||
def draw():
|
||||
shader.bind()
|
||||
shader.uniform_float("modelMatrix", Matrix.Translation((1, 2, 3)) @ Matrix.Scale(3, 4))
|
||||
shader.uniform_float("viewProjectionMatrix", bpy.context.region_data.perspective_matrix)
|
||||
shader.uniform_sampler("image", offscreen.texture_color)
|
||||
|
|
|
@ -742,7 +742,6 @@ class Gizmo(StructRNA):
|
|||
matrix = self.matrix_world
|
||||
|
||||
batch, shader = shape
|
||||
shader.bind()
|
||||
|
||||
if select_id is not None:
|
||||
gpu.select.load_id(select_id)
|
||||
|
|
|
@ -78,7 +78,6 @@ def draw_texture_2d(texture, position, width, height):
|
|||
gpu.matrix.scale((width, height))
|
||||
|
||||
shader = gpu.shader.from_builtin('IMAGE')
|
||||
shader.bind()
|
||||
|
||||
if isinstance(texture, int):
|
||||
# Call the legacy bgl to not break the existing API
|
||||
|
|
|
@ -19,7 +19,6 @@ def draw_callback_px(self, context):
|
|||
gpu.state.blend_set('ALPHA')
|
||||
gpu.state.line_width_set(2.0)
|
||||
batch = batch_for_shader(shader, 'LINE_STRIP', {"pos": self.mouse_path})
|
||||
shader.bind()
|
||||
shader.uniform_float("color", (0.0, 0.0, 0.0, 0.5))
|
||||
batch.draw(shader)
|
||||
|
||||
|
|
|
@ -270,6 +270,7 @@ static PyObject *pygpu_shader_uniform_vector_float(BPyGPUShader *self, PyObject
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
GPU_shader_uniform_vector(self->shader, location, length, count, pybuffer.buf);
|
||||
|
||||
PyBuffer_Release(&pybuffer);
|
||||
|
@ -292,6 +293,7 @@ static PyObject *pygpu_shader_uniform_vector_int(BPyGPUShader *self, PyObject *a
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
GPU_shader_uniform_vector_int(self->shader, location, length, count, pybuffer.buf);
|
||||
|
||||
PyBuffer_Release(&pybuffer);
|
||||
|
@ -359,6 +361,7 @@ static PyObject *pygpu_shader_uniform_bool(BPyGPUShader *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
GPU_shader_uniform_vector_int(self->shader, location, length, 1, values);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
|
@ -428,6 +431,7 @@ static PyObject *pygpu_shader_uniform_float(BPyGPUShader *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
GPU_shader_uniform_vector(self->shader, location, length, 1, values);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
|
@ -499,6 +503,7 @@ static PyObject *pygpu_shader_uniform_int(BPyGPUShader *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
GPU_shader_uniform_vector_int(self->shader, location, length, 1, values);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
|
@ -522,6 +527,7 @@ static PyObject *pygpu_shader_uniform_sampler(BPyGPUShader *self, PyObject *args
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
int slot = GPU_shader_get_texture_binding(self->shader, name);
|
||||
GPU_texture_bind(py_texture->tex, slot);
|
||||
GPU_shader_uniform_1i(self->shader, name, slot);
|
||||
|
@ -556,6 +562,7 @@ static PyObject *pygpu_shader_uniform_block(BPyGPUShader *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
GPU_shader_bind(self->shader);
|
||||
GPU_uniformbuf_bind(py_ubo->ubo, binding);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
|
|
Loading…
Reference in New Issue