Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/light.cpp
| Context not available. | |||||
| float3 co = light->co; | float3 co = light->co; | ||||
| int shader_id = scene->shader_manager->get_shader_id(scene->lights[i]->shader); | int shader_id = scene->shader_manager->get_shader_id(scene->lights[i]->shader); | ||||
| float samples = __int_as_float(light->samples); | float samples = __int_as_float(light->samples); | ||||
| float max_bounces = __int_as_float(light->max_bounces); | |||||
| if(!light->cast_shadow) | if(!light->cast_shadow) | ||||
| shader_id &= ~SHADER_CAST_SHADOW; | shader_id &= ~SHADER_CAST_SHADOW; | ||||
| Context not available. | |||||
| light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), radius, invarea, 0.0f); | light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), radius, invarea, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 2] = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 2] = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 4] = make_float4(max_bounces, 0.0f, 0.0f, 0.0f); | |||||
| } | } | ||||
| else if(light->type == LIGHT_DISTANT) { | else if(light->type == LIGHT_DISTANT) { | ||||
| shader_id &= ~SHADER_AREA_LIGHT; | shader_id &= ~SHADER_AREA_LIGHT; | ||||
| Context not available. | |||||
| light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), radius, cosangle, invarea); | light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), radius, cosangle, invarea); | ||||
| light_data[i*LIGHT_SIZE + 2] = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 2] = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 4] = make_float4(max_bounces, 0.0f, 0.0f, 0.0f); | |||||
| } | } | ||||
| else if(light->type == LIGHT_BACKGROUND) { | else if(light->type == LIGHT_BACKGROUND) { | ||||
| uint visibility = scene->background->visibility; | uint visibility = scene->background->visibility; | ||||
| Context not available. | |||||
| light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 2] = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 2] = make_float4(0.0f, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 4] = make_float4(max_bounces, 0.0f, 0.0f, 0.0f); | |||||
| } | } | ||||
| else if(light->type == LIGHT_AREA) { | else if(light->type == LIGHT_AREA) { | ||||
| float3 axisu = light->axisu*(light->sizeu*light->size); | float3 axisu = light->axisu*(light->sizeu*light->size); | ||||
| Context not available. | |||||
| light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), axisu.x, axisu.y, axisu.z); | light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), axisu.x, axisu.y, axisu.z); | ||||
| light_data[i*LIGHT_SIZE + 2] = make_float4(invarea, axisv.x, axisv.y, axisv.z); | light_data[i*LIGHT_SIZE + 2] = make_float4(invarea, axisv.x, axisv.y, axisv.z); | ||||
| light_data[i*LIGHT_SIZE + 3] = make_float4(samples, dir.x, dir.y, dir.z); | light_data[i*LIGHT_SIZE + 3] = make_float4(samples, dir.x, dir.y, dir.z); | ||||
| light_data[i*LIGHT_SIZE + 4] = make_float4(max_bounces, 0.0f, 0.0f, 0.0f); | |||||
| } | } | ||||
| else if(light->type == LIGHT_SPOT) { | else if(light->type == LIGHT_SPOT) { | ||||
| shader_id &= ~SHADER_AREA_LIGHT; | shader_id &= ~SHADER_AREA_LIGHT; | ||||
| Context not available. | |||||
| light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), radius, invarea, spot_angle); | light_data[i*LIGHT_SIZE + 1] = make_float4(__int_as_float(shader_id), radius, invarea, spot_angle); | ||||
| light_data[i*LIGHT_SIZE + 2] = make_float4(spot_smooth, dir.x, dir.y, dir.z); | light_data[i*LIGHT_SIZE + 2] = make_float4(spot_smooth, dir.x, dir.y, dir.z); | ||||
| light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | light_data[i*LIGHT_SIZE + 3] = make_float4(samples, 0.0f, 0.0f, 0.0f); | ||||
| light_data[i*LIGHT_SIZE + 4] = make_float4(max_bounces, 0.0f, 0.0f, 0.0f); | |||||
| } | } | ||||
| } | } | ||||
| Context not available. | |||||