Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/closure/bsdf_ashikhmin_shirley.h
| /* | /* | ||||
| * Copyright 2011-2014 Blender Foundation | * Copyright 2011-2014 Blender Foundation | ||||
| * | * | ||||
| * Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| * you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
| * You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
| * | * | ||||
| * http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
| * | * | ||||
| * Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
| * distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| * See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| #ifndef __BSDF_ASHIKHMIN_SHIRLEY_H__ | |||||
| #define __BSDF_ASHIKHMIN_SHIRLEY_H__ | |||||
| /* | /* | ||||
| ASHIKHMIN SHIRLEY BSDF | * ASHIKHMIN SHIRLEY BSDF | ||||
| * | |||||
| Implementation of | * Implementation of | ||||
| Michael Ashikhmin and Peter Shirley: "An Anisotropic Phong BRDF Model" (2000) | * Michael Ashikhmin and Peter Shirley: "An Anisotropic Phong BRDF Model" (2000) | ||||
| * | |||||
| The Fresnel factor is missing to get a separable bsdf (intensity*color), as is | * The Fresnel factor is missing to get a separable bsdf (intensity*color), as is | ||||
| the case with all other microfacet-based BSDF implementations in Cycles. | * the case with all other microfacet-based BSDF implementations in Cycles. | ||||
| * | |||||
| Other than that, the implementation directly follows the paper. | * Other than that, the implementation directly follows the paper. | ||||
| */ | */ | ||||
| #pragma once | |||||
| CCL_NAMESPACE_BEGIN | CCL_NAMESPACE_BEGIN | ||||
| ccl_device int bsdf_ashikhmin_shirley_setup(MicrofacetBsdf *bsdf) | ccl_device int bsdf_ashikhmin_shirley_setup(MicrofacetBsdf *bsdf) | ||||
| { | { | ||||
| bsdf->alpha_x = clamp(bsdf->alpha_x, 1e-4f, 1.0f); | bsdf->alpha_x = clamp(bsdf->alpha_x, 1e-4f, 1.0f); | ||||
| bsdf->alpha_y = clamp(bsdf->alpha_y, 1e-4f, 1.0f); | bsdf->alpha_y = clamp(bsdf->alpha_y, 1e-4f, 1.0f); | ||||
| bsdf->type = CLOSURE_BSDF_ASHIKHMIN_SHIRLEY_ID; | bsdf->type = CLOSURE_BSDF_ASHIKHMIN_SHIRLEY_ID; | ||||
| ▲ Show 20 Lines • Show All 195 Lines • ▼ Show 20 Lines | #ifdef __RAY_DIFFERENTIALS__ | ||||
| *domega_in_dy = (2.0f * dot(N, dIdy)) * N - dIdy; | *domega_in_dy = (2.0f * dot(N, dIdy)) * N - dIdy; | ||||
| #endif | #endif | ||||
| } | } | ||||
| return label; | return label; | ||||
| } | } | ||||
| CCL_NAMESPACE_END | CCL_NAMESPACE_END | ||||
| #endif /* __BSDF_ASHIKHMIN_SHIRLEY_H__ */ | |||||