forked from bartvdbraak/blender
Fix small code issue pointed out by nico_ga, was doing negation on unsigned type,
didn't seem to break anything though.
This commit is contained in:
parent
361ffc5784
commit
3ce32c3fec
@ -151,7 +151,7 @@ __device void shader_setup_from_sample(KernelGlobals *kg, ShaderData *sd,
|
|||||||
instanced = true;
|
instanced = true;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
sd->object = -sd->object-1;
|
sd->object = ~sd->object;
|
||||||
#ifdef __INSTANCING__
|
#ifdef __INSTANCING__
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -109,7 +109,7 @@ void LightManager::device_update_distribution(Device *device, DeviceScene *dscen
|
|||||||
|
|
||||||
/* triangles */
|
/* triangles */
|
||||||
size_t offset = 0;
|
size_t offset = 0;
|
||||||
size_t j = 0;
|
int j = 0;
|
||||||
|
|
||||||
foreach(Object *object, scene->objects) {
|
foreach(Object *object, scene->objects) {
|
||||||
Mesh *mesh = object->mesh;
|
Mesh *mesh = object->mesh;
|
||||||
@ -128,7 +128,10 @@ void LightManager::device_update_distribution(Device *device, DeviceScene *dscen
|
|||||||
/* sum area */
|
/* sum area */
|
||||||
if(have_emission) {
|
if(have_emission) {
|
||||||
Transform tfm = object->tfm;
|
Transform tfm = object->tfm;
|
||||||
int object_id = (mesh->transform_applied)? -j-1: j;
|
int object_id = j;
|
||||||
|
|
||||||
|
if(mesh->transform_applied)
|
||||||
|
object_id = ~object_id;
|
||||||
|
|
||||||
for(size_t i = 0; i < mesh->triangles.size(); i++) {
|
for(size_t i = 0; i < mesh->triangles.size(); i++) {
|
||||||
Shader *shader = scene->shaders[mesh->shader[i]];
|
Shader *shader = scene->shaders[mesh->shader[i]];
|
||||||
@ -161,9 +164,9 @@ void LightManager::device_update_distribution(Device *device, DeviceScene *dscen
|
|||||||
if(!multi_light) {
|
if(!multi_light) {
|
||||||
float lightarea = (totarea > 0.0f)? totarea/scene->lights.size(): 1.0f;
|
float lightarea = (totarea > 0.0f)? totarea/scene->lights.size(): 1.0f;
|
||||||
|
|
||||||
for(size_t i = 0; i < scene->lights.size(); i++, offset++) {
|
for(int i = 0; i < scene->lights.size(); i++, offset++) {
|
||||||
distribution[offset].x = totarea;
|
distribution[offset].x = totarea;
|
||||||
distribution[offset].y = __int_as_float(-i-1);
|
distribution[offset].y = __int_as_float(~(int)i);
|
||||||
distribution[offset].z = 1.0f;
|
distribution[offset].z = 1.0f;
|
||||||
distribution[offset].w = scene->lights[i]->size;
|
distribution[offset].w = scene->lights[i]->size;
|
||||||
totarea += lightarea;
|
totarea += lightarea;
|
||||||
|
Loading…
Reference in New Issue
Block a user