[Bf-blender-cvs] [a59c17e3f2f] cycles-x: Cycles X: cleanup for moving AO settings to only be part of integrator
Brecht Van Lommel
noreply at git.blender.org
Mon Jun 7 18:39:36 CEST 2021
Commit: a59c17e3f2f1cf746c6ba77c8a3ab62d3cf5ab2a
Author: Brecht Van Lommel
Date: Fri Jun 4 19:00:17 2021 +0200
Branches: cycles-x
https://developer.blender.org/rBa59c17e3f2f1cf746c6ba77c8a3ab62d3cf5ab2a
Cycles X: cleanup for moving AO settings to only be part of integrator
===================================================================
M intern/cycles/blender/addon/ui.py
M intern/cycles/blender/blender_session.cpp
M intern/cycles/blender/blender_shader.cpp
M intern/cycles/blender/blender_sync.cpp
M intern/cycles/blender/blender_sync.h
M intern/cycles/kernel/integrator/integrator_intersect_closest.h
M intern/cycles/kernel/integrator/integrator_shade_background.h
M intern/cycles/kernel/kernel_shader.h
M intern/cycles/kernel/kernel_types.h
M intern/cycles/kernel/svm/svm_ao.h
M intern/cycles/render/background.cpp
M intern/cycles/render/background.h
M intern/cycles/render/integrator.cpp
M intern/cycles/render/integrator.h
M source/blender/editors/object/object_bake_api.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index 6f764c84fba..2d59de13fc0 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -681,7 +681,6 @@ class CYCLES_RENDER_PT_filter(CyclesButtonsPanel, Panel):
col = layout.column(heading="Include")
col.prop(view_layer, "use_sky", text="Environment")
- col.prop(view_layer, "use_ao", text="Ambient Occlusion")
col.prop(view_layer, "use_solid", text="Surfaces")
col.prop(view_layer, "use_strand", text="Hair")
col.prop(view_layer, "use_volumes", text="Volumes")
@@ -1328,34 +1327,6 @@ class CYCLES_WORLD_PT_volume(CyclesButtonsPanel, Panel):
panel_node_draw(layout, world, 'OUTPUT_WORLD', 'Volume')
-class CYCLES_WORLD_PT_ambient_occlusion(CyclesButtonsPanel, Panel):
- bl_label = "Ambient Occlusion"
- bl_context = "world"
- bl_options = {'DEFAULT_CLOSED'}
-
- @classmethod
- def poll(cls, context):
- return context.world and CyclesButtonsPanel.poll(context)
-
- def draw_header(self, context):
- light = context.world.light_settings
- self.layout.prop(light, "use_ambient_occlusion", text="")
-
- def draw(self, context):
- layout = self.layout
- layout.use_property_split = True
- layout.use_property_decorate = False
-
- light = context.world.light_settings
- scene = context.scene
-
- col = layout.column()
- sub = col.column()
- sub.active = light.use_ambient_occlusion or scene.render.use_simplify
- sub.prop(light, "ao_factor", text="Factor")
- col.prop(light, "distance", text="Distance")
-
-
class CYCLES_WORLD_PT_mist(CyclesButtonsPanel, Panel):
bl_label = "Mist Pass"
bl_context = "world"
@@ -2138,7 +2109,6 @@ classes = (
CYCLES_WORLD_PT_preview,
CYCLES_WORLD_PT_surface,
CYCLES_WORLD_PT_volume,
- CYCLES_WORLD_PT_ambient_occlusion,
CYCLES_WORLD_PT_mist,
CYCLES_WORLD_PT_ray_visibility,
CYCLES_WORLD_PT_settings,
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 3f1a47da5aa..8ee976fceab 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -607,8 +607,6 @@ static int bake_pass_filter_get(const int pass_filter)
if ((pass_filter & BL::BakeSettings::pass_filter_EMIT) != 0)
flag |= BAKE_FILTER_EMISSION;
- if ((pass_filter & BL::BakeSettings::pass_filter_AO) != 0)
- flag |= BAKE_FILTER_AO;
return flag;
}
diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp
index e6f2829913b..681cc8bf894 100644
--- a/intern/cycles/blender/blender_shader.cpp
+++ b/intern/cycles/blender/blender_shader.cpp
@@ -17,6 +17,7 @@
#include "render/background.h"
#include "render/colorspace.h"
#include "render/graph.h"
+#include "render/integrator.h"
#include "render/light.h"
#include "render/nodes.h"
#include "render/osl.h"
@@ -1367,6 +1368,7 @@ void BlenderSync::sync_materials(BL::Depsgraph &b_depsgraph, bool update_all)
void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d, bool update_all)
{
Background *background = scene->background;
+ Integrator *integrator = scene->integrator;
BL::World b_world = b_scene.world();
@@ -1462,9 +1464,8 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
/* AO */
BL::WorldLighting b_light = b_world.light_settings();
- background->set_use_ao(b_light.use_ambient_occlusion());
- background->set_ao_factor(b_light.ao_factor());
- background->set_ao_distance(b_light.distance());
+ integrator->set_ao_factor(b_light.ao_factor());
+ integrator->set_ao_distance(b_light.distance());
/* visibility */
PointerRNA cvisibility = RNA_pointer_get(&b_world.ptr, "cycles_visibility");
@@ -1479,9 +1480,8 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
background->set_visibility(visibility);
}
else {
- background->set_use_ao(false);
- background->set_ao_factor(0.0f);
- background->set_ao_distance(FLT_MAX);
+ integrator->set_ao_factor(1.0f);
+ integrator->set_ao_distance(10.0f);
}
shader->set_graph(graph);
@@ -1503,7 +1503,6 @@ void BlenderSync::sync_world(BL::Depsgraph &b_depsgraph, BL::SpaceView3D &b_v3d,
background->set_use_shader(view_layer.use_background_shader ||
viewport_parameters.use_custom_shader());
- background->set_use_ao(background->get_use_ao() && view_layer.use_background_ao);
background->tag_update(scene);
}
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 74aeecc605d..15908c3329d 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -444,7 +444,6 @@ void BlenderSync::sync_view_layer(BL::ViewLayer &b_view_layer)
/* Filter. */
view_layer.use_background_shader = b_view_layer.use_sky();
- view_layer.use_background_ao = b_view_layer.use_ao();
/* Always enable surfaces for baking, otherwise there is nothing to bake to. */
view_layer.use_surfaces = b_view_layer.use_solid() || scene->bake_manager->get_baking();
view_layer.use_hair = b_view_layer.use_strand();
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index ef8dcf00403..bbfaa1764fd 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -99,11 +99,8 @@ class BlenderSync {
BL::Scene &b_scene,
bool background);
static bool get_session_pause(BL::Scene &b_scene, bool background);
- static BufferParams get_buffer_params(BL::SpaceView3D &b_v3d,
- BL::RegionView3D &b_rv3d,
- Camera *cam,
- int width,
- int height);
+ static BufferParams get_buffer_params(
+ BL::SpaceView3D &b_v3d, BL::RegionView3D &b_rv3d, Camera *cam, int width, int height);
static PassType get_pass_type(BL::RenderPass &b_pass);
@@ -236,7 +233,6 @@ class BlenderSync {
RenderLayerInfo()
: material_override(PointerRNA_NULL),
use_background_shader(true),
- use_background_ao(true),
use_surfaces(true),
use_hair(true),
use_volumes(true),
@@ -248,7 +244,6 @@ class BlenderSync {
string name;
BL::Material material_override;
bool use_background_shader;
- bool use_background_ao;
bool use_surfaces;
bool use_hair;
bool use_volumes;
diff --git a/intern/cycles/kernel/integrator/integrator_intersect_closest.h b/intern/cycles/kernel/integrator/integrator_intersect_closest.h
index 725e03448e8..4a6cc2478be 100644
--- a/intern/cycles/kernel/integrator/integrator_intersect_closest.h
+++ b/intern/cycles/kernel/integrator/integrator_intersect_closest.h
@@ -95,7 +95,7 @@ ccl_device void integrator_intersect_closest(INTEGRATOR_STATE_ARGS)
/* Trick to use short AO rays to approximate indirect light at the end of the path. */
if (path_state_ao_bounce(INTEGRATOR_STATE_PASS)) {
- ray.t = kernel_data.background.ao_distance;
+ ray.t = kernel_data.integrator.ao_bounces_distance;
}
/* Scene Intersection. */
diff --git a/intern/cycles/kernel/integrator/integrator_shade_background.h b/intern/cycles/kernel/integrator/integrator_shade_background.h
index b3559a1b04c..49666fea536 100644
--- a/intern/cycles/kernel/integrator/integrator_shade_background.h
+++ b/intern/cycles/kernel/integrator/integrator_shade_background.h
@@ -116,7 +116,7 @@ ccl_device_inline void integrate_background(INTEGRATOR_STATE_ARGS,
/* When using the ao bounces approximation, adjust background
* shader intensity with ao factor. */
if (path_state_ao_bounce(INTEGRATOR_STATE_PASS)) {
- L *= kernel_data.background.ao_bounces_factor;
+ L *= kernel_data.integrator.ao_bounces_factor;
}
/* Write to render buffer. */
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h
index 48ff1d83a8b..e6ebd1a068d 100644
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@ -892,28 +892,6 @@ ccl_device float3 shader_bsdf_average_normal(const KernelGlobals *kg, const Shad
return (is_zero(N)) ? sd->N : normalize(N);
}
-ccl_device float3 shader_bsdf_ao(const KernelGlobals *kg,
- const ShaderData *sd,
- float ao_factor,
- float3 *N_)
-{
- float3 eval = zero_float3();
- float3 N = zero_float3();
-
- for (int i = 0; i < sd->num_closure; i++) {
- const ShaderClosure *sc = &sd->closure[i];
-
- if (CLOSURE_IS_BSDF_DIFFUSE(sc->type)) {
- const DiffuseBsdf *bsdf = (const DiffuseBsdf *)sc;
- eval += sc->weight * ao_factor;
- N += bsdf->N * fabsf(average(sc->weight));
- }
- }
-
- *N_ = (is_zero(N)) ? sd->N : normalize(N);
- return eval;
-}
-
#ifdef __SUBSURFACE__
ccl_device float3 shader_bssrdf_normal(const ShaderData *sd)
{
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index 44e2f35c7ac..d5647c9d297 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -1279,11 +1279,6 @@ typedef struct KernelBackground {
int transparent;
float transparent_roughness_squared_threshold;
- /* ambient occlusion */
- float ao_factor;
- float ao_distance;
- float ao_bounces_factor;
-
/* portal sampling */
float portal_weight;
int num_portals;
@@ -1301,13 +1296,15 @@ typedef struct KernelBackground {
int map_res_y;
int use_mis;
+
+ /* Padding */
+ int pad1, pad2, pad3;
} KernelBackground;
static_assert_align(KernelBackground, 16);
typedef struct KernelIntegrator {
/* emission */
int use_direct_light;
- int use_ambient_occlusion;
int num_distribution;
int num_all_lights;
float pdf_triangles;
@@ -132
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list