Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/types.h
| Show First 20 Lines • Show All 203 Lines • ▼ Show 20 Lines | enum PathRayFlag : uint32_t { | ||||
| PATH_RAY_TRANSPARENT = (1U << 6U), | PATH_RAY_TRANSPARENT = (1U << 6U), | ||||
| PATH_RAY_VOLUME_SCATTER = (1U << 7U), | PATH_RAY_VOLUME_SCATTER = (1U << 7U), | ||||
| /* Shadow ray visibility. */ | /* Shadow ray visibility. */ | ||||
| PATH_RAY_SHADOW_OPAQUE = (1U << 8U), | PATH_RAY_SHADOW_OPAQUE = (1U << 8U), | ||||
| PATH_RAY_SHADOW_TRANSPARENT = (1U << 9U), | PATH_RAY_SHADOW_TRANSPARENT = (1U << 9U), | ||||
| PATH_RAY_SHADOW = (PATH_RAY_SHADOW_OPAQUE | PATH_RAY_SHADOW_TRANSPARENT), | PATH_RAY_SHADOW = (PATH_RAY_SHADOW_OPAQUE | PATH_RAY_SHADOW_TRANSPARENT), | ||||
| /* Special flag to tag unaligned BVH nodes. | |||||
| * Only set and used in BVH nodes to distinguish how to interpret bounding box information stored | |||||
| * in the node (either it should be intersected as AABB or as OBBU). */ | |||||
| PATH_RAY_NODE_UNALIGNED = (1U << 10U), | |||||
| /* Subset of flags used for ray visibility for intersection. | /* Subset of flags used for ray visibility for intersection. | ||||
| * | * | ||||
| * NOTE: SHADOW_CATCHER macros below assume there are no more than | * NOTE: SHADOW_CATCHER macros below assume there are no more than | ||||
| * 16 visibility bits. */ | * 16 visibility bits. */ | ||||
| PATH_RAY_ALL_VISIBILITY = ((1U << 11U) - 1U), | PATH_RAY_ALL_VISIBILITY = ((1U << 10U) - 1U), | ||||
| /* Special flag to tag unaligned BVH nodes. | |||||
| * Only set and used in BVH nodes to distinguish how to interpret bounding box information stored | |||||
| * in the node (either it should be intersected as AABB or as OBBU). | |||||
| * So this can overlap with path flags. */ | |||||
| PATH_RAY_NODE_UNALIGNED = (1U << 10U), | |||||
| /* -------------------------------------------------------------------- | /* -------------------------------------------------------------------- | ||||
| * Path flags. | * Path flags. | ||||
| */ | */ | ||||
| /* Surface had transmission component at previous bounce. Used for light tree | |||||
| * traversal and culling to be consistent with MIS pdf at the next bounce. */ | |||||
| PATH_RAY_MIS_HAD_TRANSMISSION = (1U << 10U), | |||||
| /* Don't apply multiple importance sampling weights to emission from | /* Don't apply multiple importance sampling weights to emission from | ||||
| * lamp or surface hits, because they were not direct light sampled. */ | * lamp or surface hits, because they were not direct light sampled. */ | ||||
| PATH_RAY_MIS_SKIP = (1U << 11U), | PATH_RAY_MIS_SKIP = (1U << 11U), | ||||
| /* Diffuse bounce earlier in the path, skip SSS to improve performance | /* Diffuse bounce earlier in the path, skip SSS to improve performance | ||||
| * and avoid branching twice with disk sampling SSS. */ | * and avoid branching twice with disk sampling SSS. */ | ||||
| PATH_RAY_DIFFUSE_ANCESTOR = (1U << 12U), | PATH_RAY_DIFFUSE_ANCESTOR = (1U << 12U), | ||||
| ▲ Show 20 Lines • Show All 222 Lines • ▼ Show 20 Lines | typedef enum ShaderFlag { | ||||
| SHADER_EXCLUDE_ANY = (SHADER_EXCLUDE_DIFFUSE | SHADER_EXCLUDE_GLOSSY | SHADER_EXCLUDE_TRANSMIT | | SHADER_EXCLUDE_ANY = (SHADER_EXCLUDE_DIFFUSE | SHADER_EXCLUDE_GLOSSY | SHADER_EXCLUDE_TRANSMIT | | ||||
| SHADER_EXCLUDE_CAMERA | SHADER_EXCLUDE_SCATTER | | SHADER_EXCLUDE_CAMERA | SHADER_EXCLUDE_SCATTER | | ||||
| SHADER_EXCLUDE_SHADOW_CATCHER), | SHADER_EXCLUDE_SHADOW_CATCHER), | ||||
| SHADER_MASK = ~(SHADER_SMOOTH_NORMAL | SHADER_CAST_SHADOW | SHADER_AREA_LIGHT | SHADER_USE_MIS | | SHADER_MASK = ~(SHADER_SMOOTH_NORMAL | SHADER_CAST_SHADOW | SHADER_AREA_LIGHT | SHADER_USE_MIS | | ||||
| SHADER_EXCLUDE_ANY) | SHADER_EXCLUDE_ANY) | ||||
| } ShaderFlag; | } ShaderFlag; | ||||
| enum EmissionSampling { | |||||
| EMISSION_SAMPLING_NONE = 0, | |||||
| EMISSION_SAMPLING_AUTO = 1, | |||||
| EMISSION_SAMPLING_FRONT = 2, | |||||
| EMISSION_SAMPLING_BACK = 3, | |||||
| EMISSION_SAMPLING_FRONT_BACK = 4, | |||||
| EMISSION_SAMPLING_NUM | |||||
| }; | |||||
| /* Light Type */ | /* Light Type */ | ||||
| typedef enum LightType { | typedef enum LightType { | ||||
| LIGHT_POINT, | LIGHT_POINT, | ||||
| LIGHT_DISTANT, | LIGHT_DISTANT, | ||||
| LIGHT_BACKGROUND, | LIGHT_BACKGROUND, | ||||
| LIGHT_AREA, | LIGHT_AREA, | ||||
| LIGHT_SPOT, | LIGHT_SPOT, | ||||
| ▲ Show 20 Lines • Show All 297 Lines • ▼ Show 20 Lines | enum ShaderDataFlag { | ||||
| /* Shader has non-zero volume extinction. */ | /* Shader has non-zero volume extinction. */ | ||||
| SD_EXTINCTION = (1 << 6), | SD_EXTINCTION = (1 << 6), | ||||
| /* Shader has have volume phase (scatter) closure. */ | /* Shader has have volume phase (scatter) closure. */ | ||||
| SD_SCATTER = (1 << 7), | SD_SCATTER = (1 << 7), | ||||
| /* Shader has transparent closure. */ | /* Shader has transparent closure. */ | ||||
| SD_TRANSPARENT = (1 << 9), | SD_TRANSPARENT = (1 << 9), | ||||
| /* BSDF requires LCG for evaluation. */ | /* BSDF requires LCG for evaluation. */ | ||||
| SD_BSDF_NEEDS_LCG = (1 << 10), | SD_BSDF_NEEDS_LCG = (1 << 10), | ||||
| /* BSDF has a transmissive component. */ | |||||
| SD_BSDF_HAS_TRANSMISSION = (1 << 11), | |||||
| SD_CLOSURE_FLAGS = (SD_EMISSION | SD_BSDF | SD_BSDF_HAS_EVAL | SD_BSSRDF | SD_HOLDOUT | | SD_CLOSURE_FLAGS = (SD_EMISSION | SD_BSDF | SD_BSDF_HAS_EVAL | SD_BSSRDF | SD_HOLDOUT | | ||||
| SD_EXTINCTION | SD_SCATTER | SD_BSDF_NEEDS_LCG), | SD_EXTINCTION | SD_SCATTER | SD_BSDF_NEEDS_LCG | SD_BSDF_HAS_TRANSMISSION), | ||||
| /* Shader flags. */ | /* Shader flags. */ | ||||
| /* direct light sample */ | /* Use front side for direct light sampling. */ | ||||
| SD_USE_MIS = (1 << 16), | SD_MIS_FRONT = (1 << 16), | ||||
| /* Has transparent shadow. */ | /* Has transparent shadow. */ | ||||
| SD_HAS_TRANSPARENT_SHADOW = (1 << 17), | SD_HAS_TRANSPARENT_SHADOW = (1 << 17), | ||||
| /* Has volume shader. */ | /* Has volume shader. */ | ||||
| SD_HAS_VOLUME = (1 << 18), | SD_HAS_VOLUME = (1 << 18), | ||||
| /* Has only volume shader, no surface. */ | /* Has only volume shader, no surface. */ | ||||
| SD_HAS_ONLY_VOLUME = (1 << 19), | SD_HAS_ONLY_VOLUME = (1 << 19), | ||||
| /* Has heterogeneous volume. */ | /* Has heterogeneous volume. */ | ||||
| SD_HETEROGENEOUS_VOLUME = (1 << 20), | SD_HETEROGENEOUS_VOLUME = (1 << 20), | ||||
| Show All 12 Lines | enum ShaderDataFlag { | ||||
| /* Has constant emission (value stored in __shaders) */ | /* Has constant emission (value stored in __shaders) */ | ||||
| SD_HAS_CONSTANT_EMISSION = (1 << 27), | SD_HAS_CONSTANT_EMISSION = (1 << 27), | ||||
| /* Needs to access attributes for volume rendering */ | /* Needs to access attributes for volume rendering */ | ||||
| SD_NEED_VOLUME_ATTRIBUTES = (1 << 28), | SD_NEED_VOLUME_ATTRIBUTES = (1 << 28), | ||||
| /* Shader has emission */ | /* Shader has emission */ | ||||
| SD_HAS_EMISSION = (1 << 29), | SD_HAS_EMISSION = (1 << 29), | ||||
| /* Shader has raytracing */ | /* Shader has raytracing */ | ||||
| SD_HAS_RAYTRACE = (1 << 30), | SD_HAS_RAYTRACE = (1 << 30), | ||||
| /* Use back side for direct light sampling. */ | |||||
| SD_MIS_BACK = (1 << 31), | |||||
| SD_SHADER_FLAGS = (SD_USE_MIS | SD_HAS_TRANSPARENT_SHADOW | SD_HAS_VOLUME | SD_HAS_ONLY_VOLUME | | SD_SHADER_FLAGS = (SD_MIS_FRONT | SD_HAS_TRANSPARENT_SHADOW | SD_HAS_VOLUME | | ||||
| SD_HETEROGENEOUS_VOLUME | SD_HAS_BSSRDF_BUMP | SD_VOLUME_EQUIANGULAR | | SD_HAS_ONLY_VOLUME | SD_HETEROGENEOUS_VOLUME | SD_HAS_BSSRDF_BUMP | | ||||
| SD_VOLUME_MIS | SD_VOLUME_CUBIC | SD_HAS_BUMP | SD_HAS_DISPLACEMENT | | SD_VOLUME_EQUIANGULAR | SD_VOLUME_MIS | SD_VOLUME_CUBIC | SD_HAS_BUMP | | ||||
| SD_HAS_CONSTANT_EMISSION | SD_NEED_VOLUME_ATTRIBUTES | SD_HAS_EMISSION | | SD_HAS_DISPLACEMENT | SD_HAS_CONSTANT_EMISSION | SD_NEED_VOLUME_ATTRIBUTES | | ||||
| SD_HAS_RAYTRACE) | SD_HAS_EMISSION | SD_HAS_RAYTRACE | SD_MIS_BACK) | ||||
| }; | }; | ||||
| /* Object flags. */ | /* Object flags. */ | ||||
| enum ShaderDataObjectFlag { | enum ShaderDataObjectFlag { | ||||
| /* Holdout for camera rays. */ | /* Holdout for camera rays. */ | ||||
| SD_OBJECT_HOLDOUT_MASK = (1 << 0), | SD_OBJECT_HOLDOUT_MASK = (1 << 0), | ||||
| /* Has object motion blur. */ | /* Has object motion blur. */ | ||||
| SD_OBJECT_MOTION = (1 << 1), | SD_OBJECT_MOTION = (1 << 1), | ||||
| ▲ Show 20 Lines • Show All 435 Lines • ▼ Show 20 Lines | typedef struct KernelCurveSegment { | ||||
| int prim; | int prim; | ||||
| int type; | int type; | ||||
| } KernelCurveSegment; | } KernelCurveSegment; | ||||
| static_assert_align(KernelCurveSegment, 8); | static_assert_align(KernelCurveSegment, 8); | ||||
| typedef struct KernelSpotLight { | typedef struct KernelSpotLight { | ||||
| float radius; | float radius; | ||||
| float invarea; | float invarea; | ||||
| float spot_angle; | float cos_half_spot_angle; | ||||
| float spot_smooth; | float spot_smooth; | ||||
| float dir[3]; | packed_float3 dir; | ||||
| float pad; | float pad; | ||||
| } KernelSpotLight; | } KernelSpotLight; | ||||
| /* PointLight is SpotLight with only radius and invarea being used. */ | /* PointLight is SpotLight with only radius and invarea being used. */ | ||||
| typedef struct KernelAreaLight { | typedef struct KernelAreaLight { | ||||
| float axisu[3]; | packed_float3 extentu; | ||||
| float invarea; | float invarea; | ||||
| float axisv[3]; | packed_float3 extentv; | ||||
| float tan_spread; | float tan_spread; | ||||
| float dir[3]; | packed_float3 dir; | ||||
| float normalize_spread; | float normalize_spread; | ||||
| } KernelAreaLight; | } KernelAreaLight; | ||||
| typedef struct KernelDistantLight { | typedef struct KernelDistantLight { | ||||
| float radius; | float radius; | ||||
| float cosangle; | float cosangle; | ||||
| float invarea; | float invarea; | ||||
| float pad; | float pad; | ||||
| } KernelDistantLight; | } KernelDistantLight; | ||||
| typedef struct KernelLight { | typedef struct KernelLight { | ||||
| int type; | int type; | ||||
| float co[3]; | packed_float3 co; | ||||
| int shader_id; | int shader_id; | ||||
| float max_bounces; | float max_bounces; | ||||
| float random; | float random; | ||||
| float strength[3]; | float strength[3]; | ||||
| int use_caustics; | int use_caustics; | ||||
| int lightgroup; | int lightgroup; | ||||
| Transform tfm; | Transform tfm; | ||||
| Transform itfm; | Transform itfm; | ||||
| ▲ Show 20 Lines • Show All 277 Lines • Show Last 20 Lines | |||||