threepipe
Version:
A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.
38 lines (28 loc) • 1.09 kB
text/typescript
import {ColorSpace, LinearSRGBColorSpace, NoColorSpace, RGBM16ColorSpace, SRGBColorSpace} from 'three'
// three.js WebGLProgram.js
export function getTexelDecodingFunction(functionName: string, colorSpace: ColorSpace) {
let fn
switch (colorSpace) {
case NoColorSpace:
case LinearSRGBColorSpace:
fn = ''
break
case SRGBColorSpace:
// fn = 'sRGBToLinear' // todo required?
fn = ''
break
case RGBM16ColorSpace:
fn = 'RGBM16ToLinear'
break
default:
console.warn('THREE.WebGLProgram: Unsupported color space:', colorSpace)
fn = ''
break
}
// return `vec4 ${functionName}( vec4 value ) { return ${components[ 0 ]}ToLinear${components[ 1 ]}; }`;
// return `vec4 ${functionName}( vec4 value ) { return ${fn} ( value ); }`
return `#define ${functionName}( value ) ${fn} ( value )`
}
export function getTexelDecoding(mapName: string, colorSpace?: ColorSpace) {
return getTexelDecodingFunction(mapName + 'TexelToLinear', colorSpace ?? LinearSRGBColorSpace) + '\n'
}