简单给起源引擎添加着色器的思路
Starfelll
2025年12月27日 20:46

参考这个mod的思路:https://steamcommunity.com/sharedfiles/filedetails/?id=3625705812

起源引擎里自带了一个叫screenspace_general的着色器,它预先定义了很多占位vmt参数与着色器对应位置的register对接。

它也提供了$pixshader和$vertexshader参数能够让你使用shaders\fxc目录下指定的vcs文件

只需要编译gpu的着色器二进制(vcs文件),不需要编译引擎着色器dll,所以能够通过安装vpk来使用。

缺点这个链接里有提到,还有就是不能自定义vmt材质参数的名字,不能设置一些特殊的渲染状态,和提供一些特殊的参数传递给vcs,上限不高

编译着色器需要的文件:https://github.com/ValveSoftware/source-sdk-2013

整个仓库克隆下来,里面带了起源vcs着色器编译器,和着色器源码

进入src\materialsystem\stdshaders

*.fxc是着色器源码

buildsdkshaders.bat是编译着色器的脚本

sdkshaders_dx9_20b.txt里面是buildsdkshaders.bat要编译的着色器清单,里面有一些示例着色器可以让你快速上手

screenspace_general.cpp 是引擎着色器dll的部分源码,可以用来查询screenspace_general参数对应的register位置,比如$C0_X对应register(c0)