Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/blender/blender_light.cpp')
-rw-r--r--intern/cycles/blender/blender_light.cpp205
1 files changed, 0 insertions, 205 deletions
diff --git a/intern/cycles/blender/blender_light.cpp b/intern/cycles/blender/blender_light.cpp
deleted file mode 100644
index 4df1e720dde..00000000000
--- a/intern/cycles/blender/blender_light.cpp
+++ /dev/null
@@ -1,205 +0,0 @@
-
-
-/*
- * Copyright 2011-2013 Blender Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "render/light.h"
-
-#include "blender/blender_sync.h"
-#include "blender/blender_util.h"
-
-#include "util/util_hash.h"
-
-CCL_NAMESPACE_BEGIN
-
-void BlenderSync::sync_light(BL::Object &b_parent,
- int persistent_id[OBJECT_PERSISTENT_ID_SIZE],
- BObjectInfo &b_ob_info,
- int random_id,
- Transform &tfm,
- bool *use_portal)
-{
- /* test if we need to sync */
- ObjectKey key(b_parent, persistent_id, b_ob_info.real_object, false);
- BL::Light b_light(b_ob_info.object_data);
-
- Light *light = light_map.find(key);
-
- /* Check if the transform was modified, in case a linked collection is moved we do not get a
- * specific depsgraph update (T88515). This also mimics the behavior for Objects. */
- const bool tfm_updated = (light && light->get_tfm() != tfm);
-
- /* Update if either object or light data changed. */
- if (!light_map.add_or_update(&light, b_ob_info.real_object, b_parent, key) && !tfm_updated) {
- Shader *shader;
- if (!shader_map.add_or_update(&shader, b_light)) {
- if (light->get_is_portal())
- *use_portal = true;
- return;
- }
- }
-
- /* type */
- switch (b_light.type()) {
- case BL::Light::type_POINT: {
- BL::PointLight b_point_light(b_light);
- light->set_size(b_point_light.shadow_soft_size());
- light->set_light_type(LIGHT_POINT);
- break;
- }
- case BL::Light::type_SPOT: {
- BL::SpotLight b_spot_light(b_light);
- light->set_size(b_spot_light.shadow_soft_size());
- light->set_light_type(LIGHT_SPOT);
- light->set_spot_angle(b_spot_light.spot_size());
- light->set_spot_smooth(b_spot_light.spot_blend());
- break;
- }
- /* Hemi were removed from 2.8 */
- // case BL::Light::type_HEMI: {
- // light->type = LIGHT_DISTANT;
- // light->size = 0.0f;
- // break;
- // }
- case BL::Light::type_SUN: {
- BL::SunLight b_sun_light(b_light);
- light->set_angle(b_sun_light.angle());
- light->set_light_type(LIGHT_DISTANT);
- break;
- }
- case BL::Light::type_AREA: {
- BL::AreaLight b_area_light(b_light);
- light->set_size(1.0f);
- light->set_axisu(transform_get_column(&tfm, 0));
- light->set_axisv(transform_get_column(&tfm, 1));
- light->set_sizeu(b_area_light.size());
- light->set_spread(b_area_light.spread());
- switch (b_area_light.shape()) {
- case BL::AreaLight::shape_SQUARE:
- light->set_sizev(light->get_sizeu());
- light->set_round(false);
- break;
- case BL::AreaLight::shape_RECTANGLE:
- light->set_sizev(b_area_light.size_y());
- light->set_round(false);
- break;
- case BL::AreaLight::shape_DISK:
- light->set_sizev(light->get_sizeu());
- light->set_round(true);
- break;
- case BL::AreaLight::shape_ELLIPSE:
- light->set_sizev(b_area_light.size_y());
- light->set_round(true);
- break;
- }
- light->set_light_type(LIGHT_AREA);
- break;
- }
- }
-
- /* strength */
- float3 strength = get_float3(b_light.color()) * BL::PointLight(b_light).energy();
- light->set_strength(strength);
-
- /* location and (inverted!) direction */
- light->set_co(transform_get_column(&tfm, 3));
- light->set_dir(-transform_get_column(&tfm, 2));
- light->set_tfm(tfm);
-
- /* shader */
- array<Node *> used_shaders;
- find_shader(b_light, used_shaders, scene->default_light);
- light->set_shader(static_cast<Shader *>(used_shaders[0]));
-
- /* shadow */
- PointerRNA clight = RNA_pointer_get(&b_light.ptr, "cycles");
- light->set_cast_shadow(get_boolean(clight, "cast_shadow"));
- light->set_use_mis(get_boolean(clight, "use_multiple_importance_sampling"));
-
- light->set_max_bounces(get_int(clight, "max_bounces"));
-
- if (b_ob_info.real_object != b_ob_info.iter_object) {
- light->set_random_id(random_id);
- }
- else {
- light->set_random_id(hash_uint2(hash_string(b_ob_info.real_object.name().c_str()), 0));
- }
-
- if (light->get_light_type() == LIGHT_AREA)
- light->set_is_portal(get_boolean(clight, "is_portal"));
- else
- light->set_is_portal(false);
-
- if (light->get_is_portal())
- *use_portal = true;
-
- /* visibility */
- uint visibility = object_ray_visibility(b_ob_info.real_object);
- light->set_use_camera((visibility & PATH_RAY_CAMERA) != 0);
- light->set_use_diffuse((visibility & PATH_RAY_DIFFUSE) != 0);
- light->set_use_glossy((visibility & PATH_RAY_GLOSSY) != 0);
- light->set_use_transmission((visibility & PATH_RAY_TRANSMIT) != 0);
- light->set_use_scatter((visibility & PATH_RAY_VOLUME_SCATTER) != 0);
- light->set_is_shadow_catcher(b_ob_info.real_object.is_shadow_catcher());
-
- /* tag */
- light->tag_update(scene);
-}
-
-void BlenderSync::sync_background_light(BL::SpaceView3D &b_v3d, bool use_portal)
-{
- BL::World b_world = b_scene.world();
-
- if (b_world) {
- PointerRNA cworld = RNA_pointer_get(&b_world.ptr, "cycles");
-
- enum SamplingMethod { SAMPLING_NONE = 0, SAMPLING_AUTOMATIC, SAMPLING_MANUAL, SAMPLING_NUM };
- int sampling_method = get_enum(cworld, "sampling_method", SAMPLING_NUM, SAMPLING_AUTOMATIC);
- bool sample_as_light = (sampling_method != SAMPLING_NONE);
-
- if (sample_as_light || use_portal) {
- /* test if we need to sync */
- Light *light;
- ObjectKey key(b_world, 0, b_world, false);
-
- if (light_map.add_or_update(&light, b_world, b_world, key) || world_recalc ||
- b_world.ptr.data != world_map) {
- light->set_light_type(LIGHT_BACKGROUND);
- if (sampling_method == SAMPLING_MANUAL) {
- light->set_map_resolution(get_int(cworld, "sample_map_resolution"));
- }
- else {
- light->set_map_resolution(0);
- }
- light->set_shader(scene->default_background);
- light->set_use_mis(sample_as_light);
- light->set_max_bounces(get_int(cworld, "max_bounces"));
-
- /* force enable light again when world is resynced */
- light->set_is_enabled(true);
-
- light->tag_update(scene);
- light_map.set_recalc(b_world);
- }
- }
- }
-
- world_map = b_world.ptr.data;
- world_recalc = false;
- viewport_parameters = BlenderViewportParameters(b_v3d, use_developer_ui);
-}
-
-CCL_NAMESPACE_END