ColorSpaceFunctions.js 852 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { mix } from '../math/MathNode.js';
  2. import { Fn } from '../tsl/TSLBase.js';
  3. export const sRGBToLinear = /*@__PURE__*/ Fn( ( [ color ] ) => {
  4. const a = color.mul( 0.9478672986 ).add( 0.0521327014 ).pow( 2.4 );
  5. const b = color.mul( 0.0773993808 );
  6. const factor = color.lessThanEqual( 0.04045 );
  7. const rgbResult = mix( a, b, factor );
  8. return rgbResult;
  9. } ).setLayout( {
  10. name: 'sRGBToLinear',
  11. type: 'vec3',
  12. inputs: [
  13. { name: 'color', type: 'vec3' }
  14. ]
  15. } );
  16. export const LinearTosRGB = /*@__PURE__*/ Fn( ( [ color ] ) => {
  17. const a = color.pow( 0.41666 ).mul( 1.055 ).sub( 0.055 );
  18. const b = color.mul( 12.92 );
  19. const factor = color.lessThanEqual( 0.0031308 );
  20. const rgbResult = mix( a, b, factor );
  21. return rgbResult;
  22. } ).setLayout( {
  23. name: 'LinearTosRGB',
  24. type: 'vec3',
  25. inputs: [
  26. { name: 'color', type: 'vec3' }
  27. ]
  28. } );
粤ICP备19079148号