GPU Python API: shader.uniform_float
The existing alternative is to use a buffer and call uniform_vector_float which is overkill for such a simple operation.
This commit is contained in:
@@ -93,6 +93,7 @@ void GPU_shader_uniform_vector_int(
|
|||||||
|
|
||||||
void GPU_shader_uniform_buffer(GPUShader *shader, int location, struct GPUUniformBuffer *ubo);
|
void GPU_shader_uniform_buffer(GPUShader *shader, int location, struct GPUUniformBuffer *ubo);
|
||||||
void GPU_shader_uniform_texture(GPUShader *shader, int location, struct GPUTexture *tex);
|
void GPU_shader_uniform_texture(GPUShader *shader, int location, struct GPUTexture *tex);
|
||||||
|
void GPU_shader_uniform_float(GPUShader *shader, int location, float value);
|
||||||
void GPU_shader_uniform_int(GPUShader *shader, int location, int value);
|
void GPU_shader_uniform_int(GPUShader *shader, int location, int value);
|
||||||
void GPU_shader_geometry_stage_primitive_io(GPUShader *shader, int input, int output, int number);
|
void GPU_shader_geometry_stage_primitive_io(GPUShader *shader, int input, int output, int number);
|
||||||
|
|
||||||
|
|||||||
@@ -582,6 +582,14 @@ int GPU_shader_get_program(GPUShader *shader)
|
|||||||
return (int)shader->program;
|
return (int)shader->program;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GPU_shader_uniform_float(GPUShader *UNUSED(shader), int location, float value)
|
||||||
|
{
|
||||||
|
if (location == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
glUniform1f(location, value);
|
||||||
|
}
|
||||||
|
|
||||||
void GPU_shader_uniform_vector(GPUShader *UNUSED(shader), int location, int length, int arraysize, const float *value)
|
void GPU_shader_uniform_vector(GPUShader *UNUSED(shader), int location, int length, int arraysize, const float *value)
|
||||||
{
|
{
|
||||||
if (location == -1 || value == NULL)
|
if (location == -1 || value == NULL)
|
||||||
|
|||||||
@@ -323,6 +323,34 @@ static PyObject *bpygpu_shader_uniform_vector_int(
|
|||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(bpygpu_shader_uniform_float_doc,
|
||||||
|
".. method:: uniform_float(location, value)\n"
|
||||||
|
"\n"
|
||||||
|
" Set uniform value.\n"
|
||||||
|
"\n"
|
||||||
|
" :param location: builtin identifier.\n"
|
||||||
|
" :type location: `int`\n"
|
||||||
|
" :param value: uniform value.\n"
|
||||||
|
" :type value: `float`\n"
|
||||||
|
);
|
||||||
|
static PyObject *bpygpu_shader_uniform_float(
|
||||||
|
BPyGPUShader *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int location;
|
||||||
|
float value;
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(
|
||||||
|
args, "if:GPUShader.uniform_float",
|
||||||
|
&location, &value))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
GPU_shader_uniform_float(self->shader, location, value);
|
||||||
|
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
PyDoc_STRVAR(bpygpu_shader_uniform_int_doc,
|
PyDoc_STRVAR(bpygpu_shader_uniform_int_doc,
|
||||||
".. method:: uniform_int(location, value)\n"
|
".. method:: uniform_int(location, value)\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -408,6 +436,9 @@ static struct PyMethodDef bpygpu_shader_methods[] = {
|
|||||||
{"uniform_vector_int",
|
{"uniform_vector_int",
|
||||||
(PyCFunction)bpygpu_shader_uniform_vector_int,
|
(PyCFunction)bpygpu_shader_uniform_vector_int,
|
||||||
METH_VARARGS, bpygpu_shader_uniform_vector_int_doc},
|
METH_VARARGS, bpygpu_shader_uniform_vector_int_doc},
|
||||||
|
{"uniform_float",
|
||||||
|
(PyCFunction)bpygpu_shader_uniform_float,
|
||||||
|
METH_VARARGS, bpygpu_shader_uniform_float_doc},
|
||||||
{"uniform_int",
|
{"uniform_int",
|
||||||
(PyCFunction)bpygpu_shader_uniform_int,
|
(PyCFunction)bpygpu_shader_uniform_int,
|
||||||
METH_VARARGS, bpygpu_shader_uniform_int_doc},
|
METH_VARARGS, bpygpu_shader_uniform_int_doc},
|
||||||
|
|||||||
Reference in New Issue
Block a user