@@ -30,28 +30,31 @@ export const getColorSpaceMethod = ( source, target ) => {
3030
3131class ColorSpaceNode extends TempNode {
3232
33- constructor ( colorSpace , colorNode ) {
33+ constructor ( colorNode , target = null , source = null ) {
3434
3535 super ( 'vec4' ) ;
3636
37- this . colorSpace = colorSpace ;
3837 this . colorNode = colorNode ;
38+ this . target = target ;
39+ this . source = source ;
3940
4041 }
4142
4243 setup ( builder ) {
4344
44- const { colorSpace , colorNode } = this ;
45+ const { renderer , context } = builder ;
4546
46- if ( colorSpace === ColorSpaceNode . LINEAR_TO_LINEAR ) {
47+ const source = this . source || context . outputColorSpace || renderer . outputColorSpace ;
48+ const target = this . target || context . outputColorSpace || renderer . outputColorSpace ;
49+ const colorNode = this . colorNode ;
4750
48- return colorNode ;
51+ if ( source === target ) return colorNode ;
4952
50- }
53+ const colorSpace = getColorSpaceMethod ( source , target ) ;
5154
5255 let outputNode = null ;
5356
54- const colorSpaceFn = builder . renderer . nodes . library . getColorSpaceFunction ( colorSpace ) ;
57+ const colorSpaceFn = renderer . nodes . library . getColorSpaceFunction ( colorSpace ) ;
5558
5659 if ( colorSpaceFn !== null ) {
5760
@@ -71,14 +74,12 @@ class ColorSpaceNode extends TempNode {
7174
7275}
7376
74- ColorSpaceNode . LINEAR_TO_LINEAR = 'LinearToLinear' ;
75-
7677export default ColorSpaceNode ;
7778
7879registerNodeClass ( 'ColorSpace' , ColorSpaceNode ) ;
7980
80- export const linearToColorSpace = ( node , colorSpace ) => nodeObject ( new ColorSpaceNode ( getColorSpaceMethod ( LinearSRGBColorSpace , colorSpace ) , nodeObject ( node ) ) ) ;
81- export const colorSpaceToLinear = ( node , colorSpace ) => nodeObject ( new ColorSpaceNode ( getColorSpaceMethod ( colorSpace , LinearSRGBColorSpace ) , nodeObject ( node ) ) ) ;
81+ export const linearSRGBToColorSpace = ( node , colorSpace = null ) => nodeObject ( new ColorSpaceNode ( nodeObject ( node ) , colorSpace , LinearSRGBColorSpace ) ) ;
82+ export const colorSpaceToLinearSRGB = ( node , colorSpace = null ) => nodeObject ( new ColorSpaceNode ( nodeObject ( node ) , LinearSRGBColorSpace , colorSpace ) ) ;
8283
83- addMethodChaining ( 'linearToColorSpace ' , linearToColorSpace ) ;
84- addMethodChaining ( 'colorSpaceToLinear ' , colorSpaceToLinear ) ;
84+ addMethodChaining ( 'linearSRGBToColorSpace ' , linearSRGBToColorSpace ) ;
85+ addMethodChaining ( 'colorSpaceToLinearSRGB ' , colorSpaceToLinearSRGB ) ;
0 commit comments