Skip to content

Commit

Permalink
wgpu shader v2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
hana-alice committed Jun 24, 2023
1 parent 5cb71b8 commit c044f37
Showing 1 changed file with 6 additions and 9 deletions.
15 changes: 6 additions & 9 deletions cocos/gfx/webgpu/webgpu-define.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,23 +276,24 @@ WEBGPU && promiseForWebGPUInstantiation.then(() => {
const funcName = funcIter[1];
// function may overload
if(!funcSet.has(funcName)) {
const funcSampleReg = new RegExp(`${funcName}\\s*?\\(([,|\\s]?\\w+\\s*?[,|\\)]){1,10}`, 'g');
const funcSampleReg = new RegExp(`${funcName}\\s*?\\(([,|\\s]?[\\w\\.]+\\s*?[,|\\)])+`, 'g');
let funcSampleIter = funcSampleReg.exec(code);
const samplerSet = new Set<string>();
while (funcSampleIter) {
samplerSet.clear();
const func = funcSampleIter[0];
let funcParamsRes = func.slice();
const singleParamReg = new RegExp(/[,|\(|\s]\b(\w+)\b/g);
let index = 0;
let paramIndex = 0;

// const matches = funcParamsRes.match(singleParamReg)
let pIter = singleParamReg.exec(funcParamsRes);
while(pIter) {
if(paramIndexSet.has(index)) {
if(paramIndexSet.has(paramIndex)) {
samplerSet.add(pIter![1]);
}
pIter = singleParamReg.exec(funcParamsRes);
++index;
++paramIndex;
}
samplerSet.forEach((samplerParam) => {
funcParamsRes = funcParamsRes.replace(samplerParam, `${samplerParam}, ${samplerParam}_sampler`);
Expand Down Expand Up @@ -344,17 +345,13 @@ WEBGPU && promiseForWebGPUInstantiation.then(() => {
const createShader = Device.prototype.createShader;
Device.prototype.createShader = function (shaderInfo: ShaderInfo) {
const spvDatas: any = [];
if(shaderInfo.name === 'builtin-standard|standard-vs|standard-fs|CC_SUPPORT_CASCADED_SHADOW_MAP1|CC_USE_HDR1') {
console.log('1111111111111');
}
for (let i = 0; i < shaderInfo.stages.length; ++i) {

shaderInfo.stages[i].source = seperateCombinedSamplerTexture(shaderInfo.stages[i].source);
const stageStr = shaderInfo.stages[i].stage === ShaderStageFlagBit.VERTEX ? 'vertex'
: shaderInfo.stages[i].stage === ShaderStageFlagBit.FRAGMENT ? 'fragment' : 'compute';
const sourceCode = `#version 450\n${shaderInfo.stages[i].source}`;
const spv = glslangWasmModule.glslang.compileGLSL(sourceCode, stageStr, false, '1.3');
const spvOpted = spirvOptModule.spv.opt(spirvOptModule.spv.opt.SPV_ENV_WEBGPU_0, spv);
const spvOpted = spirvOptModule.spv.opt(spirvOptModule.spv.opt.SPV_ENV_WEBGPU_0/*unused */, spv);
spvDatas.push(spvOpted);
}

Expand Down

0 comments on commit c044f37

Please sign in to comment.