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:
Brecht Van Lommel 2012-01-18 22:36:12 +00:00
parent 361ffc5784
commit 3ce32c3fec
2 changed files with 8 additions and 5 deletions

@ -151,7 +151,7 @@ __device void shader_setup_from_sample(KernelGlobals *kg, ShaderData *sd,
instanced = true;
else
#endif
sd->object = -sd->object-1;
sd->object = ~sd->object;
#ifdef __INSTANCING__
}
#endif

@ -109,7 +109,7 @@ void LightManager::device_update_distribution(Device *device, DeviceScene *dscen
/* triangles */
size_t offset = 0;
size_t j = 0;
int j = 0;
foreach(Object *object, scene->objects) {
Mesh *mesh = object->mesh;
@ -128,7 +128,10 @@ void LightManager::device_update_distribution(Device *device, DeviceScene *dscen
/* sum area */
if(have_emission) {
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++) {
Shader *shader = scene->shaders[mesh->shader[i]];
@ -161,9 +164,9 @@ void LightManager::device_update_distribution(Device *device, DeviceScene *dscen
if(!multi_light) {
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].y = __int_as_float(-i-1);
distribution[offset].y = __int_as_float(~(int)i);
distribution[offset].z = 1.0f;
distribution[offset].w = scene->lights[i]->size;
totarea += lightarea;