playcanvas
Version:
PlayCanvas WebGL game engine
46 lines (43 loc) • 1.47 kB
JavaScript
import { ChunkBuilder } from '../chunk-builder.js';
import { LitShader } from './lit-shader.js';
import { LitOptionsUtils } from './lit-options-utils.js';
import { ShaderGenerator } from './shader-generator.js';
var dummyUvs = [
0,
1,
2,
3,
4,
5,
6,
7
];
class ShaderGeneratorLit extends ShaderGenerator {
generateKey(options) {
var definesHash = ShaderGenerator.definesHash(options.defines);
var key = "lit_" + definesHash + "_" + dummyUvs.map((dummy, index)=>{
return options.usedUvs[index] ? '1' : '0';
}).join('') + options.shaderChunk + LitOptionsUtils.generateKey(options.litOptions);
return key;
}
createShaderDefinition(device, options) {
var litShader = new LitShader(device, options.litOptions);
var decl = new ChunkBuilder();
var code = new ChunkBuilder();
var func = new ChunkBuilder();
decl.append('uniform float textureBias;');
decl.append(litShader.chunks.litShaderArgsPS);
code.append(options.shaderChunk);
func.code = 'evaluateFrontend();';
func.code = "\n" + func.code.split('\n').map((l)=>" " + l).join('\n') + "\n\n";
var usedUvSets = options.usedUvs || [
true
];
var mapTransforms = [];
litShader.generateVertexShader(usedUvSets, usedUvSets, mapTransforms);
litShader.generateFragmentShader(decl.code, code.code, func.code, 'vUv0');
return litShader.getDefinition(options);
}
}
var lit = new ShaderGeneratorLit();
export { lit };