瀏覽代碼

Remove LogLuv encoding from the shaders (#22876)

* Remove logLuv encoding from the shaders

* Update constants
WestLangley 3 年之前
父節點
當前提交
1d544d0fd2

+ 0 - 1
docs/api/en/constants/Textures.html

@@ -561,7 +561,6 @@
 		THREE.sRGBEncoding
 		THREE.GammaEncoding
 		THREE.RGBEEncoding
-		THREE.LogLuvEncoding
 		THREE.RGBM7Encoding
 		THREE.RGBM16Encoding
 		THREE.RGBDEncoding

+ 1 - 48
examples/jsm/nodes/utils/ColorSpaceNode.js

@@ -197,7 +197,6 @@ ColorSpaceNode.Nodes = ( function () {
 		}`
 	);
 
-
 	const LinearToRGBD = new FunctionNode( /* glsl */`
 		vec3 LinearToRGBD( in vec4 value, in float maxRange ) {
 
@@ -209,45 +208,6 @@ ColorSpaceNode.Nodes = ( function () {
 		}`
 	);
 
-	// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
-
-	// M matrix, for encoding
-
-	const cLogLuvM = new ConstNode( 'const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );' );
-
-	const LinearToLogLuv = new FunctionNode( /* glsl */`
-		vec4 LinearToLogLuv( in vec4 value ) {
-
-			vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
-			Xp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));
-			vec4 vResult;
-			vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
-			float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
-			vResult.w = fract(Le);
-			vResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;
-			return vResult;
-
-		}`
-	, [ cLogLuvM ] );
-
-	// Inverse M matrix, for decoding
-
-	const cLogLuvInverseM = new ConstNode( 'const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );' );
-
-	const LogLuvToLinear = new FunctionNode( /* glsl */`
-		vec4 LogLuvToLinear( in vec4 value ) {
-
-			float Le = value.z * 255.0 + value.w;
-			vec3 Xp_Y_XYZp;
-			Xp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);
-			Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
-			Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
-			vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
-			return vec4( max(vRGB, 0.0), 1.0 );
-
-		}`
-	, [ cLogLuvInverseM ] );
-
 	return {
 		LinearToLinear: LinearToLinear,
 		GammaToLinear: GammaToLinear,
@@ -259,11 +219,7 @@ ColorSpaceNode.Nodes = ( function () {
 		RGBMToLinear: RGBMToLinear,
 		LinearToRGBM: LinearToRGBM,
 		RGBDToLinear: RGBDToLinear,
-		LinearToRGBD: LinearToRGBD,
-		cLogLuvM: cLogLuvM,
-		LinearToLogLuv: LinearToLogLuv,
-		cLogLuvInverseM: cLogLuvInverseM,
-		LogLuvToLinear: LogLuvToLinear
+		LinearToRGBD: LinearToRGBD
 	};
 
 } )();
@@ -285,9 +241,6 @@ ColorSpaceNode.LINEAR_TO_RGBM = 'LinearToRGBM';
 ColorSpaceNode.RGBD_TO_LINEAR = 'RGBDToLinear';
 ColorSpaceNode.LINEAR_TO_RGBD = 'LinearToRGBD';
 
-ColorSpaceNode.LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
-ColorSpaceNode.LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
-
 ColorSpaceNode.getEncodingComponents = function ( encoding ) {
 
 	switch ( encoding ) {

+ 1 - 6
examples/jsm/renderers/nodes/display/ColorSpaceNode.js

@@ -3,7 +3,7 @@ import { ShaderNode } from '../ShaderNode.js';
 
 import { LinearEncoding/*,
 	sRGBEncoding, RGBEEncoding, RGBM7Encoding, RGBM16Encoding,
-	RGBDEncoding, GammaEncoding, LogLuvEncoding*/ } from 'three';
+	RGBDEncoding, GammaEncoding*/ } from 'three';
 
 export const LinearToLinear = new ShaderNode( ( inputs ) => {
 
@@ -30,8 +30,6 @@ function getEncodingComponents ( encoding ) {
 			return [ 'RGBD', new FloatNode( 256.0 ).setConst( true ) ];
 		case GammaEncoding:
 			return [ 'Gamma', new CodeNode( 'float( GAMMA_FACTOR )' ) ];
-		case LogLuvEncoding:
-			return [ 'LogLuv' ];
 */
 	}
 
@@ -55,9 +53,6 @@ class ColorSpaceNode extends TempNode {
 
 	static RGBD_TO_LINEAR = 'RGBDToLinear';
 	static LINEAR_TO_RGBD = 'LinearToRGBD';
-
-	static LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
-	static LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
 */
 	constructor( method, node ) {
 

+ 0 - 1
src/constants.js

@@ -159,7 +159,6 @@ export const LinearEncoding = 3000;
 export const sRGBEncoding = 3001;
 export const GammaEncoding = 3007;
 export const RGBEEncoding = 3002;
-export const LogLuvEncoding = 3003;
 export const RGBM7Encoding = 3004;
 export const RGBM16Encoding = 3005;
 export const RGBDEncoding = 3006;

+ 0 - 27
src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js

@@ -59,31 +59,4 @@ vec4 LinearToRGBD( in vec4 value, in float maxRange ) {
 	D = clamp( floor( D ) / 255.0, 0.0, 1.0 );
 	return vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );
 }
-
-// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
-
-// M matrix, for encoding
-const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );
-vec4 LinearToLogLuv( in vec4 value ) {
-	vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
-	Xp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );
-	vec4 vResult;
-	vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
-	float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
-	vResult.w = fract( Le );
-	vResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;
-	return vResult;
-}
-
-// Inverse M matrix, for decoding
-const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );
-vec4 LogLuvToLinear( in vec4 value ) {
-	float Le = value.z * 255.0 + value.w;
-	vec3 Xp_Y_XYZp;
-	Xp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );
-	Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
-	Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
-	vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
-	return vec4( max( vRGB, 0.0 ), 1.0 );
-}
 `;

+ 1 - 3
src/renderers/webgl/WebGLProgram.js

@@ -1,7 +1,7 @@
 import { WebGLUniforms } from './WebGLUniforms.js';
 import { WebGLShader } from './WebGLShader.js';
 import { ShaderChunk } from '../shaders/ShaderChunk.js';
-import { RGBFormat, NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, ACESFilmicToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding, LogLuvEncoding, GLSL3 } from '../../constants.js';
+import { RGBFormat, NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, ACESFilmicToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding, GLSL3 } from '../../constants.js';
 
 let programIdCount = 0;
 
@@ -37,8 +37,6 @@ function getEncodingComponents( encoding ) {
 			return [ 'RGBD', '( value, 256.0 )' ];
 		case GammaEncoding:
 			return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];
-		case LogLuvEncoding:
-			return [ 'LogLuv', '( value )' ];
 		default:
 			console.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );
 			return [ 'Linear', '( value )' ];

+ 0 - 1
test/unit/src/constants.tests.js

@@ -133,7 +133,6 @@ export default QUnit.module( 'Constants', () => {
 		assert.equal( Constants.sRGBEncoding, 3001, 'sRGBEncoding is equal to 3001' );
 		assert.equal( Constants.GammaEncoding, 3007, 'GammaEncoding is equal to 3007' );
 		assert.equal( Constants.RGBEEncoding, 3002, 'RGBEEncoding is equal to 3002' );
-		assert.equal( Constants.LogLuvEncoding, 3003, 'LogLuvEncoding is equal to 3003' );
 		assert.equal( Constants.RGBM7Encoding, 3004, 'RGBM7Encoding is equal to 3004' );
 		assert.equal( Constants.RGBM16Encoding, 3005, 'RGBM16Encoding is equal to 3005' );
 		assert.equal( Constants.RGBDEncoding, 3006, 'RGBDEncoding is equal to 3006' );