Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/osl/osl_shader.cpp
| Show First 20 Lines • Show All 178 Lines • ▼ Show 20 Lines | #endif | ||||
| sc.type = bsdf->sc.type; | sc.type = bsdf->sc.type; | ||||
| sc.N = bsdf->sc.N; | sc.N = bsdf->sc.N; | ||||
| sc.T = bsdf->sc.T; | sc.T = bsdf->sc.T; | ||||
| sc.data0 = bsdf->sc.data0; | sc.data0 = bsdf->sc.data0; | ||||
| sc.data1 = bsdf->sc.data1; | sc.data1 = bsdf->sc.data1; | ||||
| sc.prim = bsdf->sc.prim; | sc.prim = bsdf->sc.prim; | ||||
| #ifdef __HAIR__ | #ifdef __HAIR__ | ||||
| sc.offset = bsdf->sc.offset; | sc.data2 = bsdf->sc.data2; | ||||
| #endif | #endif | ||||
| /* add */ | /* add */ | ||||
| if(sc.sample_weight > CLOSURE_WEIGHT_CUTOFF && sd->num_closure < MAX_CLOSURE) { | if(sc.sample_weight > CLOSURE_WEIGHT_CUTOFF && sd->num_closure < MAX_CLOSURE) { | ||||
| sd->closure[sd->num_closure++] = sc; | sd->closure[sd->num_closure++] = sc; | ||||
| sd->flag |= bsdf->shaderdata_flag(); | sd->flag |= bsdf->shaderdata_flag(); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| case CClosurePrimitive::Emissive: { | case CClosurePrimitive::Emissive: { | ||||
| /* sample weight */ | /* sample weight */ | ||||
| float sample_weight = fabsf(average(weight)); | float sample_weight = fabsf(average(weight)); | ||||
| sc.sample_weight = sample_weight; | sc.sample_weight = sample_weight; | ||||
| sc.type = CLOSURE_EMISSION_ID; | sc.type = CLOSURE_EMISSION_ID; | ||||
| sc.data0 = 0.0f; | sc.data0 = 0.0f; | ||||
| sc.data1 = 0.0f; | sc.data1 = 0.0f; | ||||
| sc.data2 = 0.0f; | |||||
| sc.prim = NULL; | sc.prim = NULL; | ||||
| /* flag */ | /* flag */ | ||||
| if(sd->num_closure < MAX_CLOSURE) { | if(sd->num_closure < MAX_CLOSURE) { | ||||
| sd->closure[sd->num_closure++] = sc; | sd->closure[sd->num_closure++] = sc; | ||||
| sd->flag |= SD_EMISSION; | sd->flag |= SD_EMISSION; | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| case CClosurePrimitive::AmbientOcclusion: { | case CClosurePrimitive::AmbientOcclusion: { | ||||
| /* sample weight */ | /* sample weight */ | ||||
| float sample_weight = fabsf(average(weight)); | float sample_weight = fabsf(average(weight)); | ||||
| sc.sample_weight = sample_weight; | sc.sample_weight = sample_weight; | ||||
| sc.type = CLOSURE_AMBIENT_OCCLUSION_ID; | sc.type = CLOSURE_AMBIENT_OCCLUSION_ID; | ||||
| sc.data0 = 0.0f; | sc.data0 = 0.0f; | ||||
| sc.data1 = 0.0f; | sc.data1 = 0.0f; | ||||
| sc.data2 = 0.0f; | |||||
| sc.prim = NULL; | sc.prim = NULL; | ||||
| if(sd->num_closure < MAX_CLOSURE) { | if(sd->num_closure < MAX_CLOSURE) { | ||||
| sd->closure[sd->num_closure++] = sc; | sd->closure[sd->num_closure++] = sc; | ||||
| sd->flag |= SD_AO; | sd->flag |= SD_AO; | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| case CClosurePrimitive::Holdout: { | case CClosurePrimitive::Holdout: { | ||||
| sc.sample_weight = 0.0f; | sc.sample_weight = 0.0f; | ||||
| sc.type = CLOSURE_HOLDOUT_ID; | sc.type = CLOSURE_HOLDOUT_ID; | ||||
| sc.data0 = 0.0f; | sc.data0 = 0.0f; | ||||
| sc.data1 = 0.0f; | sc.data1 = 0.0f; | ||||
| sc.data2 = 0.0f; | |||||
| sc.prim = NULL; | sc.prim = NULL; | ||||
| if(sd->num_closure < MAX_CLOSURE) { | if(sd->num_closure < MAX_CLOSURE) { | ||||
| sd->closure[sd->num_closure++] = sc; | sd->closure[sd->num_closure++] = sc; | ||||
| sd->flag |= SD_HOLDOUT; | sd->flag |= SD_HOLDOUT; | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 320 Lines • Show Last 20 Lines | |||||