playcanvas
Version:
PlayCanvas WebGL game engine
67 lines (64 loc) • 3.21 kB
JavaScript
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';
}
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 };