Python API: add material to uniforms from gpu.export_shader.
Reviewed By: brecht Differential Revision: https://developer.blender.org/D1457
This commit is contained in:
parent
4bbc0731a0
commit
6bd248cd65
|
@ -282,6 +282,7 @@ typedef struct GPUInputUniform {
|
|||
GPUDataType datatype; /* type of uniform data */
|
||||
struct Object *lamp; /* when type=GPU_DYNAMIC_LAMP_... or GPU_DYNAMIC_SAMPLER_2DSHADOW */
|
||||
struct Image *image; /* when type=GPU_DYNAMIC_SAMPLER_2DIMAGE */
|
||||
struct Material *material;/* when type=GPU_DYNAMIC_MAT_... */
|
||||
int texnumber; /* when type=GPU_DYNAMIC_SAMPLER, texture number: 0.. */
|
||||
unsigned char *texpixels; /* for internally generated texture, pixel data in RGBA format */
|
||||
int texsize; /* size in pixel of the texture in texpixels buffer:
|
||||
|
|
|
@ -1615,22 +1615,22 @@ void GPU_shadeinput_set(GPUMaterial *mat, Material *ma, GPUShadeInput *shi)
|
|||
shi->gpumat = mat;
|
||||
shi->mat = ma;
|
||||
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(&ma->r, GPU_DYNAMIC_MAT_DIFFRGB, NULL), &shi->rgb);
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(&ma->specr, GPU_DYNAMIC_MAT_SPECRGB, NULL), &shi->specrgb);
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(&ma->mirr, GPU_DYNAMIC_MAT_MIR, NULL), &shi->mir);
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(&ma->r, GPU_DYNAMIC_MAT_DIFFRGB, ma), &shi->rgb);
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(&ma->specr, GPU_DYNAMIC_MAT_SPECRGB, ma), &shi->specrgb);
|
||||
GPU_link(mat, "set_rgb", GPU_dynamic_uniform(&ma->mirr, GPU_DYNAMIC_MAT_MIR, ma), &shi->mir);
|
||||
GPU_link(mat, "set_rgba_zero", &shi->refcol);
|
||||
GPU_link(mat, "shade_norm", GPU_builtin(GPU_VIEW_NORMAL), &shi->vn);
|
||||
|
||||
if (mat->alpha)
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->alpha, GPU_DYNAMIC_MAT_ALPHA, NULL), &shi->alpha);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->alpha, GPU_DYNAMIC_MAT_ALPHA, ma), &shi->alpha);
|
||||
else
|
||||
GPU_link(mat, "set_value", GPU_uniform(&one), &shi->alpha);
|
||||
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->ref, GPU_DYNAMIC_MAT_REF, NULL), &shi->refl);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->spec, GPU_DYNAMIC_MAT_SPEC, NULL), &shi->spec);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->emit, GPU_DYNAMIC_MAT_EMIT, NULL), &shi->emit);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform((float *)&ma->har, GPU_DYNAMIC_MAT_HARD, NULL), &shi->har);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->amb, GPU_DYNAMIC_MAT_AMB, NULL), &shi->amb);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->ref, GPU_DYNAMIC_MAT_REF, ma), &shi->refl);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->spec, GPU_DYNAMIC_MAT_SPEC, ma), &shi->spec);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->emit, GPU_DYNAMIC_MAT_EMIT, ma), &shi->emit);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform((float *)&ma->har, GPU_DYNAMIC_MAT_HARD, ma), &shi->har);
|
||||
GPU_link(mat, "set_value", GPU_dynamic_uniform(&ma->amb, GPU_DYNAMIC_MAT_AMB, ma), &shi->amb);
|
||||
GPU_link(mat, "set_value", GPU_uniform(&ma->spectra), &shi->spectra);
|
||||
GPU_link(mat, "shade_view", GPU_builtin(GPU_VIEW_POSITION), &shi->view);
|
||||
GPU_link(mat, "vcol_attribute", GPU_attribute(CD_MCOL, ""), &shi->vcol);
|
||||
|
@ -2710,6 +2710,9 @@ GPUShaderExport *GPU_shader_export(struct Scene *scene, struct Material *ma)
|
|||
|
||||
if (GPU_DYNAMIC_GROUP_FROM_TYPE(uniform->type) == GPU_DYNAMIC_GROUP_LAMP)
|
||||
uniform->lamp = input->dynamicdata;
|
||||
|
||||
if (GPU_DYNAMIC_GROUP_FROM_TYPE(uniform->type) == GPU_DYNAMIC_GROUP_MAT)
|
||||
uniform->material = input->dynamicdata;
|
||||
}
|
||||
|
||||
if (uniform->type != GPU_DYNAMIC_NONE)
|
||||
|
|
|
@ -261,6 +261,9 @@ static PyObject *GPU_export_shader(PyObject *UNUSED(self), PyObject *args, PyObj
|
|||
if (uniform->lamp) {
|
||||
PY_DICT_ADD_ID(dict, uniform, lamp);
|
||||
}
|
||||
if (uniform->material) {
|
||||
PY_DICT_ADD_ID(dict, uniform, material);
|
||||
}
|
||||
if (uniform->image) {
|
||||
PY_DICT_ADD_ID(dict, uniform, image);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue