mirror of
https://github.com/jiawanlong/Cesium-Examples.git
synced 2025-07-05 23:57:32 +00:00
17 lines
549 B
JavaScript
17 lines
549 B
JavaScript
import { tslFn } from '../../shadernode/ShaderNode.js';
|
|
|
|
const F_Schlick = tslFn( ( { f0, f90, dotVH } ) => {
|
|
|
|
// Original approximation by Christophe Schlick '94
|
|
// float fresnel = pow( 1.0 - dotVH, 5.0 );
|
|
|
|
// Optimized variant (presented by Epic at SIGGRAPH '13)
|
|
// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
|
|
const fresnel = dotVH.mul( - 5.55473 ).sub( 6.98316 ).mul( dotVH ).exp2();
|
|
|
|
return f0.mul( fresnel.oneMinus() ).add( f90.mul( fresnel ) );
|
|
|
|
} ); // validated
|
|
|
|
export default F_Schlick;
|