diff options
Diffstat (limited to 'intern/cycles/kernel/kernel_types.h')
-rw-r--r-- | intern/cycles/kernel/kernel_types.h | 89 |
1 files changed, 54 insertions, 35 deletions
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h index 1045b0add73..11445aa1c93 100644 --- a/intern/cycles/kernel/kernel_types.h +++ b/intern/cycles/kernel/kernel_types.h @@ -64,13 +64,13 @@ CCL_NAMESPACE_BEGIN #define __SUBSURFACE__ #define __CMJ__ #define __VOLUME__ +#define __SHADOW_RECORD_ALL__ #endif #ifdef __KERNEL_CUDA__ #define __KERNEL_SHADING__ #define __KERNEL_ADV_SHADING__ -/* Disabled for now, compile errors */ -//#define __BRANCHED_PATH__ +#define __BRANCHED_PATH__ /* Experimental on GPU */ //#define __VOLUME__ @@ -92,26 +92,24 @@ CCL_NAMESPACE_BEGIN #endif #ifdef __KERNEL_OPENCL_AMD__ -#define __SVM__ -#define __EMISSION__ -#define __IMAGE_TEXTURES__ -#define __PROCEDURAL_TEXTURES__ -#define __EXTRA_NODES__ -#define __HOLDOUT__ -#define __NORMAL_MAP__ -//#define __BACKGROUND_MIS__ -//#define __LAMP_MIS__ -//#define __AO__ -//#define __ANISOTROPIC__ +#define __CL_USE_NATIVE__ +#define __KERNEL_SHADING__ +//__KERNEL_ADV_SHADING__ +#define __MULTI_CLOSURE__ +#define __TRANSPARENT_SHADOWS__ +#define __PASSES__ +#define __BACKGROUND_MIS__ +#define __LAMP_MIS__ +#define __AO__ +#define __ANISOTROPIC__ //#define __CAMERA_MOTION__ //#define __OBJECT_MOTION__ //#define __HAIR__ -//#define __MULTI_CLOSURE__ -//#define __TRANSPARENT_SHADOWS__ -//#define __PASSES__ +//end __KERNEL_ADV_SHADING__ #endif #ifdef __KERNEL_OPENCL_INTEL_CPU__ +#define __CL_USE_NATIVE__ #define __KERNEL_SHADING__ #define __KERNEL_ADV_SHADING__ #endif @@ -154,12 +152,6 @@ CCL_NAMESPACE_BEGIN #define __HAIR__ #endif -/* Sanity check */ - -#if defined(__KERNEL_OPENCL_NEED_ADVANCED_SHADING__) && !defined(__MULTI_CLOSURE__) -#error "OpenCL: mismatch between advanced shading flags in device_opencl.cpp and kernel_types.h" -#endif - /* Random Numbers */ typedef uint RNG; @@ -168,7 +160,35 @@ typedef uint RNG; typedef enum ShaderEvalType { SHADER_EVAL_DISPLACE, - SHADER_EVAL_BACKGROUND + SHADER_EVAL_BACKGROUND, + /* bake types */ + SHADER_EVAL_BAKE, /* no real shade, it's used in the code to + * differentiate the type of shader eval from the above + */ + /* data passes */ + SHADER_EVAL_NORMAL, + SHADER_EVAL_UV, + SHADER_EVAL_DIFFUSE_COLOR, + SHADER_EVAL_GLOSSY_COLOR, + SHADER_EVAL_TRANSMISSION_COLOR, + SHADER_EVAL_SUBSURFACE_COLOR, + SHADER_EVAL_EMISSION, + + /* light passes */ + SHADER_EVAL_AO, + SHADER_EVAL_COMBINED, + SHADER_EVAL_SHADOW, + SHADER_EVAL_DIFFUSE_DIRECT, + SHADER_EVAL_GLOSSY_DIRECT, + SHADER_EVAL_TRANSMISSION_DIRECT, + SHADER_EVAL_SUBSURFACE_DIRECT, + SHADER_EVAL_DIFFUSE_INDIRECT, + SHADER_EVAL_GLOSSY_INDIRECT, + SHADER_EVAL_TRANSMISSION_INDIRECT, + SHADER_EVAL_SUBSURFACE_INDIRECT, + + /* extra */ + SHADER_EVAL_ENVIRONMENT, } ShaderEvalType; /* Path Tracing @@ -184,10 +204,8 @@ enum PathTraceDimension { PRNG_UNUSED_0 = 5, PRNG_UNUSED_1 = 6, /* for some reason (6, 7) is a bad sobol pattern */ PRNG_UNUSED_2 = 7, /* with a low number of samples (< 64) */ - PRNG_BASE_NUM = 8, -#else - PRNG_BASE_NUM = 4, #endif + PRNG_BASE_NUM = 8, PRNG_BSDF_U = 0, PRNG_BSDF_V = 1, @@ -195,7 +213,7 @@ enum PathTraceDimension { PRNG_LIGHT = 3, PRNG_LIGHT_U = 4, PRNG_LIGHT_V = 5, - PRNG_LIGHT_F = 6, + PRNG_UNUSED_3 = 6, PRNG_TERMINATE = 7, #ifdef __VOLUME__ @@ -289,7 +307,8 @@ typedef enum PassType { PASS_MIST = 2097152, PASS_SUBSURFACE_DIRECT = 4194304, PASS_SUBSURFACE_INDIRECT = 8388608, - PASS_SUBSURFACE_COLOR = 16777216 + PASS_SUBSURFACE_COLOR = 16777216, + PASS_LIGHT = 33554432, /* no real pass, used to force use_light_pass */ } PassType; #define PASS_ALL (~0) @@ -494,15 +513,17 @@ typedef enum AttributeStandard { /* Closure data */ +#ifdef __MULTI_CLOSURE__ #define MAX_CLOSURE 64 +#else +#define MAX_CLOSURE 1 +#endif typedef struct ShaderClosure { ClosureType type; float3 weight; -#ifdef __MULTI_CLOSURE__ float sample_weight; -#endif float data0; float data1; @@ -612,6 +633,9 @@ typedef struct ShaderData { /* ray bounce depth */ int ray_depth; + /* ray transparent depth */ + int transparent_depth; + #ifdef __RAY_DIFFERENTIALS__ /* differential of P. these are orthogonal to Ng, not N */ differential3 dP; @@ -634,15 +658,10 @@ typedef struct ShaderData { Transform ob_itfm; #endif -#ifdef __MULTI_CLOSURE__ /* Closure data, we store a fixed array of closures */ ShaderClosure closure[MAX_CLOSURE]; int num_closure; float randb_closure; -#else - /* Closure data, with a single sampled closure for low memory usage */ - ShaderClosure closure; -#endif /* ray start position, only set for backgrounds */ float3 ray_P; |