|
@@ -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 ) {
|