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;
 |