Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/intern/gpu_material.c
| Show First 20 Lines • Show All 282 Lines • ▼ Show 20 Lines | for (LinkData *link = gpumaterial->first; link; link = link->next) { | ||||
| MEM_freeN(material); | MEM_freeN(material); | ||||
| } | } | ||||
| BLI_freelistN(gpumaterial); | BLI_freelistN(gpumaterial); | ||||
| } | } | ||||
| void GPU_material_bind( | void GPU_material_bind( | ||||
| GPUMaterial *material, int oblay, int viewlay, double time, int mipmap, | GPUMaterial *material, int oblay, int viewlay, double time, int mipmap, | ||||
| float viewmat[4][4], float viewinv[4][4], float camerafactors[4], bool scenelock) | float viewmat[4][4], float viewinv[4][4], float camerafactors[4]) | ||||
| { | { | ||||
| if (material->pass) { | if (material->pass) { | ||||
| GPUShader *shader = GPU_pass_shader(material->pass); | GPUShader *shader = GPU_pass_shader(material->pass); | ||||
| SceneRenderLayer *srl = scenelock ? BLI_findlink(&material->scene->r.layers, material->scene->r.actlay) : NULL; | |||||
| if (srl) | |||||
| viewlay &= srl->lay; | |||||
| /* handle layer lamps */ | /* handle layer lamps */ | ||||
| if (material->type == GPU_MATERIAL_TYPE_MESH) { | if (material->type == GPU_MATERIAL_TYPE_MESH) { | ||||
| for (LinkData *nlink = material->lamps.first; nlink; nlink = nlink->next) { | for (LinkData *nlink = material->lamps.first; nlink; nlink = nlink->next) { | ||||
| GPULamp *lamp = nlink->data; | GPULamp *lamp = nlink->data; | ||||
| if ((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay)) && | if ((lamp->lay & viewlay) && (!(lamp->mode & LA_LAYER) || (lamp->lay & oblay)) && | ||||
| GPU_lamp_visible(lamp, srl, material->ma)) | GPU_lamp_visible(lamp, material->ma)) | ||||
| { | { | ||||
| lamp->dynenergy = lamp->energy; | lamp->dynenergy = lamp->energy; | ||||
| copy_v3_v3(lamp->dyncol, lamp->col); | copy_v3_v3(lamp->dyncol, lamp->col); | ||||
| } | } | ||||
| else { | else { | ||||
| lamp->dynenergy = 0.0f; | lamp->dynenergy = 0.0f; | ||||
| lamp->dyncol[0] = lamp->dyncol[1] = lamp->dyncol[2] = 0.0f; | lamp->dyncol[0] = lamp->dyncol[1] = lamp->dyncol[2] = 0.0f; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 2,488 Lines • Show Last 20 Lines | |||||