Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/intern/gpu_codegen.c
| Show First 20 Lines • Show All 846 Lines • ▼ Show 20 Lines | void GPU_pass_update_uniforms(GPUPass *pass) | ||||
| GPUInput *input; | GPUInput *input; | ||||
| GPUShader *shader = pass->shader; | GPUShader *shader = pass->shader; | ||||
| ListBase *inputs = &pass->inputs; | ListBase *inputs = &pass->inputs; | ||||
| if (!shader) | if (!shader) | ||||
| return; | return; | ||||
| /* pass dynamic inputs to opengl, others were removed */ | /* pass dynamic inputs to opengl, others were removed */ | ||||
| for (input = inputs->first; input; input = input->next) | for (input = inputs->first; input; input = input->next) { | ||||
| if (!(input->ima || input->tex || input->prv)) | if (!(input->ima || input->tex || input->prv)) { | ||||
| if (input->dynamictype == GPU_DYNAMIC_MAT_HARD) { | |||||
| // The hardness is actually a short pointer, so we convert it here | |||||
| float val = (float)(*(short*)input->dynamicvec); | |||||
| GPU_shader_uniform_vector(shader, input->shaderloc, 1, 1, &val); | |||||
| } | |||||
| else { | |||||
| GPU_shader_uniform_vector(shader, input->shaderloc, input->type, 1, | GPU_shader_uniform_vector(shader, input->shaderloc, input->type, 1, | ||||
| input->dynamicvec); | input->dynamicvec); | ||||
| } | } | ||||
| } | |||||
| } | |||||
| } | |||||
| void GPU_pass_unbind(GPUPass *pass) | void GPU_pass_unbind(GPUPass *pass) | ||||
| { | { | ||||
| GPUInput *input; | GPUInput *input; | ||||
| GPUShader *shader = pass->shader; | GPUShader *shader = pass->shader; | ||||
| ListBase *inputs = &pass->inputs; | ListBase *inputs = &pass->inputs; | ||||
| if (!shader) | if (!shader) | ||||
| ▲ Show 20 Lines • Show All 612 Lines • Show Last 20 Lines | |||||