39 return (
a.type < b.
type);
54 #ifdef __KERNEL_DEBUG__
55 pass_type_enum.
insert(
"traversed_nodes", PASS_BVH_TRAVERSED_NODES);
56 pass_type_enum.
insert(
"traverse_instances", PASS_BVH_TRAVERSED_INSTANCES);
57 pass_type_enum.
insert(
"bvh_intersections", PASS_BVH_INTERSECTIONS);
58 pass_type_enum.
insert(
"ray_bounces", PASS_RAY_BOUNCES);
85 return &pass_type_enum;
105 for (
size_t i = 0; i < passes.size(); i++) {
126 if (passes[i].
name.empty()) {
127 passes[i].name =
name;
203 #ifdef WITH_CYCLES_DEBUG
204 case PASS_BVH_TRAVERSED_NODES:
205 case PASS_BVH_TRAVERSED_INSTANCES:
206 case PASS_BVH_INTERSECTIONS:
207 case PASS_RAY_BOUNCES:
272 passes.push_back(pass);
285 if (
A.size() !=
B.size())
288 for (
int i = 0; i <
A.size(); i++)
297 for (
size_t i = 0; i < passes.size(); i++)
314 return expf(-2.0f *
v *
v);
320 return 0.35875f - 0.48829f *
cosf(
v) + 0.14128f *
cosf(2.0f *
v) - 0.01168f *
cosf(3.0f *
v);
372 SOCKET_FLOAT(pass_alpha_threshold,
"Pass Alpha Threshold", 0.0f);
386 SOCKET_BOOLEAN(denoising_data_pass,
"Generate Denoising Data Pass",
false);
387 SOCKET_BOOLEAN(denoising_clean_pass,
"Generate Denoising Clean Pass",
false);
388 SOCKET_BOOLEAN(denoising_prefiltered_pass,
"Generate Denoising Prefiltered Pass",
false);
389 SOCKET_INT(denoising_flags,
"Denoising Flags", 0);
390 SOCKET_BOOLEAN(use_adaptive_sampling,
"Use Adaptive Sampling",
false);
392 SOCKET_BOOLEAN(use_light_visibility,
"Use Light Visibility",
false);
397 static NodeEnum cryptomatte_passes_enum;
405 SOCKET_INT(cryptomatte_depth,
"Cryptomatte Depth", 0);
412 use_light_visibility =
false;
434 scene->update_stats->film.times.add_entry({
"update", time});
438 device_free(device, dscene,
scene);
458 bool have_cryptomatte =
false;
460 for (
size_t i = 0; i <
scene->
passes.size(); i++) {
475 int pass_flag = (1 << (pass.
type % 32));
573 #ifdef WITH_CYCLES_DEBUG
574 case PASS_BVH_TRAVERSED_NODES:
575 kfilm->pass_bvh_traversed_nodes = kfilm->
pass_stride;
577 case PASS_BVH_TRAVERSED_INSTANCES:
578 kfilm->pass_bvh_traversed_instances = kfilm->
pass_stride;
580 case PASS_BVH_INTERSECTIONS:
581 kfilm->pass_bvh_intersections = kfilm->
pass_stride;
583 case PASS_RAY_BOUNCES:
593 have_cryptomatte =
true;
618 if (pass.
type == display_pass) {
634 if (denoising_data_pass) {
638 if (denoising_clean_pass) {
643 if (denoising_prefiltered_pass) {
670 kfilm->
mist_inv_depth = (mist_depth > 0.0f) ? 1.0f / mist_depth : 0.0f;
694 shader->need_update_uvs =
true;
710 int num_color = 0, num_value = 0;
724 return (is_color ? num_color : num_value) - 1;
738 return denoising_data_offset;
743 return denoising_clean_offset;
748 return filter_table_offset;
typedef float(TangentPoint)[2]
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
ATTR_WARN_UNUSED_RESULT const BMVert * v
int get_denoising_data_offset() const
int get_pass_stride() const
int get_aov_offset(Scene *scene, string name, bool &is_color)
static void add_default(Scene *scene)
size_t get_filter_table_offset() const
void device_free(Device *device, DeviceScene *dscene, Scene *scene)
void device_update(Device *device, DeviceScene *dscene, Scene *scene)
int get_denoising_clean_offset() const
void tag_passes_update(Scene *scene, const vector< Pass > &passes_, bool update_passes=true)
void tag_update(Scene *scene, uint32_t flag)
void tag_update(Scene *scene, uint32_t flag)
size_t add_table(DeviceScene *dscene, vector< float > &data)
void remove_table(size_t *offset)
static bool contains(const vector< Pass > &passes, PassType)
static bool equals(const vector< Pass > &A, const vector< Pass > &B)
static void add(PassType type, vector< Pass > &passes, const char *name=NULL)
static float filter_func_gaussian(float v, float width)
static CCL_NAMESPACE_BEGIN bool compare_pass_order(const Pass &a, const Pass &b)
static float filter_func_blackman_harris(float v, float width)
static vector< float > filter_table(FilterType type, float width)
static NodeEnum * get_pass_type_enum()
static float filter_func_box(float, float)
#define CCL_NAMESPACE_END
void KERNEL_FUNCTION_FULL_NAME() shader(KernelGlobals *kg, uint4 *input, float4 *output, int type, int filter, int i, int offset, int sample)
#define FILTER_TABLE_SIZE
@ PASS_TRANSMISSION_DIRECT
@ PASS_TRANSMISSION_COLOR
@ PASS_TRANSMISSION_INDIRECT
@ PASS_ADAPTIVE_AUX_BUFFER
@ PASS_CATEGORY_LIGHT_END
@ DENOISING_PASS_SIZE_CLEAN
@ DENOISING_PASS_SIZE_BASE
@ DENOISING_PASS_SIZE_PREFILTERED
#define SOCKET_FLOAT(name, ui_name, default_value,...)
#define SOCKET_INT(name, ui_name, default_value,...)
#define SOCKET_BOOLEAN(name, ui_name, default_value,...)
#define SOCKET_STRING(name, ui_name, default_value,...)
#define SOCKET_ENUM(name, ui_name, values, default_value,...)
int pass_transmission_color
int pass_adaptive_aux_buffer
int pass_transmission_indirect
int pass_transmission_direct
int display_pass_components
int pass_bake_differential
float pass_alpha_threshold
int pass_diffuse_indirect
int display_divide_pass_stride
int use_display_pass_alpha
void insert(const char *x, int y)
static NodeType * add(const char *name, CreateFunc create, Type type=NONE, const NodeType *base=NULL)
vector< Shader * > shaders
LookupTables * lookup_tables
SceneUpdateStats * update_stats
GeometryManager * geometry_manager
void util_cdf_inverted(const int resolution, const float from, const float to, Functor functor, const bool make_symmetric, vector< float > &inv_cdf)
ccl_device_inline size_t align_up(size_t offset, size_t alignment)