galacean / engine

A typescript interactive engine, support 2D, 3D, animation, physics, built on WebGL and glTF.
https://galacean.antgroup.com/
MIT License
4.04k stars 288 forks source link

Additional parsing stages in `ShaderLab` #2149

Open Sway007 opened 1 week ago

Sway007 commented 1 week ago

Is your feature request related to a problem? Please describe.

Additional parsing stages in ShaderLab to achieve on-demand compilation.

graph TD;
    Shader
    SubShader
    ShaderPass
    GLSL
    Shader-- "(Parser1)\nRenderState/Tag\nin SubShader scope,\nkeep other un-compiled text" -->SubShader;
    SubShader-- (Parser2)\nRenderState/Tag\nin ShaderPass scope,\nkeep other un-compiled text -->ShaderPass;
    ShaderPass --(Parser3)--> GLSL

Current parsing flow

graph TD;
    Shader
    ShaderPass
    GLSL
    Shader-- "(Parser1)\nRenderState/Tag\nin SubShader and ShaderPass scope,\nkeep other un-compiled text" -->ShaderPass;
    ShaderPass --(Parser2)--> GLSL