提交 b29b13b4 编写于 作者: W WestLangley

Added precisionSafeLength()

上级 620fe4b9
......@@ -22,6 +22,16 @@ highp float rand( const in vec2 uv ) {
return fract(sin(sn) * c);
}
#ifdef HIGH_PRECISION
float precisionSafeLength( vec3 v ) { return length( v ); }
#else
float max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }
float precisionSafeLength( vec3 v ) {
float maxComponent = max3( abs( v ) );
return length( v / maxComponent ) * maxComponent;
}
#endif
struct IncidentLight {
vec3 color;
vec3 direction;
......
......@@ -370,6 +370,8 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
'precision ' + parameters.precision + ' float;',
'precision ' + parameters.precision + ' int;',
( parameters.precision === 'highp' ) ? '#define HIGH_PRECISION' : '',
'#define SHADER_NAME ' + shader.name,
customDefines,
......@@ -488,6 +490,8 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
'precision ' + parameters.precision + ' float;',
'precision ' + parameters.precision + ' int;',
( parameters.precision === 'highp' ) ? '#define HIGH_PRECISION' : '',
'#define SHADER_NAME ' + shader.name,
customDefines,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册