UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

70 lines (67 loc) 3.65 kB
import { hashCode } from '../../../core/hash.js'; import { GAMMA_SRGB, TONEMAP_NEUTRAL, TONEMAP_ACES2, TONEMAP_ACES, TONEMAP_HEJL, TONEMAP_LINEAR, TONEMAP_FILMIC } from '../../constants.js'; import { shaderChunks } from '../chunks/chunks.js'; class ShaderGenerator { static begin() { return 'void main(void)\n{\n'; } static end() { return '}\n'; } /** * @param {Map<string, string>} defines - the set of defines to be used in the shader. * @returns {number} the hash code of the defines. */ static definesHash(defines) { var sortedArray = Array.from(defines).sort((a, b)=>a[0] > b[0] ? 1 : -1); return hashCode(JSON.stringify(sortedArray)); } static fogCode(value, chunks) { if (chunks === undefined) chunks = shaderChunks; if (value === 'linear') { var _chunks_fogLinearPS; return (_chunks_fogLinearPS = chunks.fogLinearPS) != null ? _chunks_fogLinearPS : shaderChunks.fogLinearPS; } else if (value === 'exp') { var _chunks_fogExpPS; return (_chunks_fogExpPS = chunks.fogExpPS) != null ? _chunks_fogExpPS : shaderChunks.fogExpPS; } else if (value === 'exp2') { var _chunks_fogExp2PS; return (_chunks_fogExp2PS = chunks.fogExp2PS) != null ? _chunks_fogExp2PS : shaderChunks.fogExp2PS; } return chunks.fogNonePS ? chunks.fogNonePS : shaderChunks.fogNonePS; } static gammaCode(value, chunks) { if (chunks === undefined) chunks = shaderChunks; if (value === GAMMA_SRGB) { var _chunks_gamma2_2PS; return (_chunks_gamma2_2PS = chunks.gamma2_2PS) != null ? _chunks_gamma2_2PS : shaderChunks.gamma2_2PS; } var _chunks_gamma1_0PS; return (_chunks_gamma1_0PS = chunks.gamma1_0PS) != null ? _chunks_gamma1_0PS : shaderChunks.gamma1_0PS; } static tonemapCode(value, chunks) { if (chunks === undefined) chunks = shaderChunks; switch(value){ case TONEMAP_FILMIC: var _chunks_tonemappingFilmicPS; return (_chunks_tonemappingFilmicPS = chunks.tonemappingFilmicPS) != null ? _chunks_tonemappingFilmicPS : shaderChunks.tonemappingFilmicPS; case TONEMAP_LINEAR: var _chunks_tonemappingLinearPS; return (_chunks_tonemappingLinearPS = chunks.tonemappingLinearPS) != null ? _chunks_tonemappingLinearPS : shaderChunks.tonemappingLinearPS; case TONEMAP_HEJL: var _chunks_tonemappingHejlPS; return (_chunks_tonemappingHejlPS = chunks.tonemappingHejlPS) != null ? _chunks_tonemappingHejlPS : shaderChunks.tonemappingHejlPS; case TONEMAP_ACES: var _chunks_tonemappingAcesPS; return (_chunks_tonemappingAcesPS = chunks.tonemappingAcesPS) != null ? _chunks_tonemappingAcesPS : shaderChunks.tonemappingAcesPS; case TONEMAP_ACES2: var _chunks_tonemappingAces2PS; return (_chunks_tonemappingAces2PS = chunks.tonemappingAces2PS) != null ? _chunks_tonemappingAces2PS : shaderChunks.tonemappingAces2PS; case TONEMAP_NEUTRAL: var _chunks_tonemappingNeutralPS; return (_chunks_tonemappingNeutralPS = chunks.tonemappingNeutralPS) != null ? _chunks_tonemappingNeutralPS : shaderChunks.tonemappingNeutralPS; } var _chunks_tonemapingNonePS; return (_chunks_tonemapingNonePS = chunks.tonemapingNonePS) != null ? _chunks_tonemapingNonePS : shaderChunks.tonemappingNonePS; } } export { ShaderGenerator };