diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-05-21 01:08:27 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-05-21 01:48:21 +0300 |
commit | 2b0613b948c2de2d31044ee4f8f82463732b1f15 (patch) | |
tree | 28115d6d77efd943e7ed5381ec12ee2e21d1c33a /source/blender | |
parent | 148ed4e05eafd3642d7f8f16f7c28a2267bcf4b8 (diff) |
Fix: GPU_shader_export fails /w some lamp attrs
first/last vars missed some values.
D1309 by @NHA
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/gpu/GPU_material.h | 95 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_material.c | 2 | ||||
-rw-r--r-- | source/blender/python/intern/gpu.c | 23 |
3 files changed, 79 insertions, 41 deletions
diff --git a/source/blender/gpu/GPU_material.h b/source/blender/gpu/GPU_material.h index 1fb2518c07c..ee6e02547e7 100644 --- a/source/blender/gpu/GPU_material.h +++ b/source/blender/gpu/GPU_material.h @@ -121,47 +121,62 @@ typedef struct GPUNodeStack { short sockettype; } GPUNodeStack; + +#define GPU_DYNAMIC_GROUP_FROM_TYPE(f) ((f) & 0xFFFF0000) + +#define GPU_DYNAMIC_GROUP_MISC 0x00010000 +#define GPU_DYNAMIC_GROUP_LAMP 0x00020000 +#define GPU_DYNAMIC_GROUP_OBJECT 0x00030000 +#define GPU_DYNAMIC_GROUP_SAMPLER 0x00040000 +#define GPU_DYNAMIC_GROUP_MIST 0x00050000 +#define GPU_DYNAMIC_GROUP_WORLD 0x00060000 +#define GPU_DYNAMIC_GROUP_MAT 0x00070000 + typedef enum GPUDynamicType { - GPU_DYNAMIC_NONE = 0, - GPU_DYNAMIC_OBJECT_VIEWMAT = 1, - GPU_DYNAMIC_OBJECT_MAT = 2, - GPU_DYNAMIC_OBJECT_VIEWIMAT = 3, - GPU_DYNAMIC_OBJECT_IMAT = 4, - GPU_DYNAMIC_OBJECT_COLOR = 5, - GPU_DYNAMIC_OBJECT_AUTOBUMPSCALE = 15, - - GPU_DYNAMIC_LAMP_FIRST = 6, - GPU_DYNAMIC_LAMP_DYNVEC = 6, - GPU_DYNAMIC_LAMP_DYNCO = 7, - GPU_DYNAMIC_LAMP_DYNIMAT = 8, - GPU_DYNAMIC_LAMP_DYNPERSMAT = 9, - GPU_DYNAMIC_LAMP_DYNENERGY = 10, - GPU_DYNAMIC_LAMP_DYNCOL = 11, - GPU_DYNAMIC_LAMP_LAST = 11, - GPU_DYNAMIC_SAMPLER_2DBUFFER = 12, - GPU_DYNAMIC_SAMPLER_2DIMAGE = 13, - GPU_DYNAMIC_SAMPLER_2DSHADOW = 14, - GPU_DYNAMIC_LAMP_DISTANCE = 16, - GPU_DYNAMIC_LAMP_ATT1 = 17, - GPU_DYNAMIC_LAMP_ATT2 = 18, - GPU_DYNAMIC_LAMP_SPOTSIZE = 19, - GPU_DYNAMIC_LAMP_SPOTBLEND = 20, - GPU_DYNAMIC_MIST_ENABLE = 21, - GPU_DYNAMIC_MIST_START = 22, - GPU_DYNAMIC_MIST_DISTANCE = 23, - GPU_DYNAMIC_MIST_INTENSITY = 24, - GPU_DYNAMIC_MIST_TYPE = 25, - GPU_DYNAMIC_MIST_COLOR = 26, - GPU_DYNAMIC_HORIZON_COLOR = 27, - GPU_DYNAMIC_AMBIENT_COLOR = 28, - GPU_DYNAMIC_MAT_DIFFRGB = 29, - GPU_DYNAMIC_MAT_REF = 30, - GPU_DYNAMIC_MAT_SPECRGB = 31, - GPU_DYNAMIC_MAT_SPEC = 32, - GPU_DYNAMIC_MAT_HARD = 33, - GPU_DYNAMIC_MAT_EMIT = 34, - GPU_DYNAMIC_MAT_AMB = 35, - GPU_DYNAMIC_MAT_ALPHA = 36, + + GPU_DYNAMIC_NONE = 0, + + GPU_DYNAMIC_OBJECT_VIEWMAT = 1 | GPU_DYNAMIC_GROUP_OBJECT, + GPU_DYNAMIC_OBJECT_MAT = 2 | GPU_DYNAMIC_GROUP_OBJECT, + GPU_DYNAMIC_OBJECT_VIEWIMAT = 3 | GPU_DYNAMIC_GROUP_OBJECT, + GPU_DYNAMIC_OBJECT_IMAT = 4 | GPU_DYNAMIC_GROUP_OBJECT, + GPU_DYNAMIC_OBJECT_COLOR = 5 | GPU_DYNAMIC_GROUP_OBJECT, + GPU_DYNAMIC_OBJECT_AUTOBUMPSCALE = 6 | GPU_DYNAMIC_GROUP_OBJECT, + + GPU_DYNAMIC_LAMP_DYNVEC = 1 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_DYNCO = 2 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_DYNIMAT = 3 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_DYNPERSMAT = 4 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_DYNENERGY = 5 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_DYNCOL = 6 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_DISTANCE = 7 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_ATT1 = 8 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_ATT2 = 9 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_SPOTSIZE = 10 | GPU_DYNAMIC_GROUP_LAMP, + GPU_DYNAMIC_LAMP_SPOTBLEND = 11 | GPU_DYNAMIC_GROUP_LAMP, + + GPU_DYNAMIC_SAMPLER_2DBUFFER = 1 | GPU_DYNAMIC_GROUP_SAMPLER, + GPU_DYNAMIC_SAMPLER_2DIMAGE = 2 | GPU_DYNAMIC_GROUP_SAMPLER, + GPU_DYNAMIC_SAMPLER_2DSHADOW = 3 | GPU_DYNAMIC_GROUP_SAMPLER, + + GPU_DYNAMIC_MIST_ENABLE = 1 | GPU_DYNAMIC_GROUP_MIST, + GPU_DYNAMIC_MIST_START = 2 | GPU_DYNAMIC_GROUP_MIST, + GPU_DYNAMIC_MIST_DISTANCE = 3 | GPU_DYNAMIC_GROUP_MIST, + GPU_DYNAMIC_MIST_INTENSITY = 4 | GPU_DYNAMIC_GROUP_MIST, + GPU_DYNAMIC_MIST_TYPE = 5 | GPU_DYNAMIC_GROUP_MIST, + GPU_DYNAMIC_MIST_COLOR = 6 | GPU_DYNAMIC_GROUP_MIST, + + GPU_DYNAMIC_HORIZON_COLOR = 1 | GPU_DYNAMIC_GROUP_WORLD, + GPU_DYNAMIC_AMBIENT_COLOR = 2 | GPU_DYNAMIC_GROUP_WORLD, + + GPU_DYNAMIC_MAT_DIFFRGB = 1 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_REF = 2 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_SPECRGB = 3 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_SPEC = 4 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_HARD = 5 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_EMIT = 6 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_AMB = 7 | GPU_DYNAMIC_GROUP_MAT, + GPU_DYNAMIC_MAT_ALPHA = 8 | GPU_DYNAMIC_GROUP_MAT } GPUDynamicType; GPUNodeLink *GPU_attribute(CustomDataType type, const char *name); diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 774dee9ebc2..bd17fb0b1aa 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -2305,7 +2305,7 @@ GPUShaderExport *GPU_shader_export(struct Scene *scene, struct Material *ma) break; } - if (uniform->type >= GPU_DYNAMIC_LAMP_FIRST && uniform->type <= GPU_DYNAMIC_LAMP_LAST) + if (GPU_DYNAMIC_GROUP_FROM_TYPE(uniform->type) == GPU_DYNAMIC_GROUP_LAMP) uniform->lamp = input->dynamicdata; } diff --git a/source/blender/python/intern/gpu.c b/source/blender/python/intern/gpu.c index b2dc7e866ff..f933c02390c 100644 --- a/source/blender/python/intern/gpu.c +++ b/source/blender/python/intern/gpu.c @@ -79,7 +79,17 @@ static PyObject *PyInit_gpu(void) if (m == NULL) return NULL; + /* device constant groups */ + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_MISC); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_LAMP); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_OBJECT); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_SAMPLER); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_MIST); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_WORLD); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_GROUP_MAT); + /* device constants */ + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_NONE); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_OBJECT_VIEWMAT); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_OBJECT_MAT); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_OBJECT_VIEWIMAT); @@ -92,6 +102,11 @@ static PyObject *PyInit_gpu(void) PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_DYNPERSMAT); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_DYNENERGY); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_DYNCOL); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_ATT1); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_ATT2); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_DISTANCE); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_SPOTBLEND); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_LAMP_SPOTSIZE); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_SAMPLER_2DBUFFER); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_SAMPLER_2DIMAGE); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_SAMPLER_2DSHADOW); @@ -103,6 +118,14 @@ static PyObject *PyInit_gpu(void) PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MIST_COLOR); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_HORIZON_COLOR); PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_AMBIENT_COLOR); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_ALPHA); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_AMB); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_DIFFRGB); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_EMIT); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_HARD); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_REF); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_SPEC); + PY_MODULE_ADD_CONSTANT(m, GPU_DYNAMIC_MAT_SPECRGB); PY_MODULE_ADD_CONSTANT(m, GPU_DATA_1I); PY_MODULE_ADD_CONSTANT(m, GPU_DATA_1F); |