Unity Sobel边缘检测Shader还原代码后仍提示GPU不支持如何解决
核心问题原因
你当前Shader代码中包含#pragma exclude_renderers d3d11指令,会强制排除Direct3D 11渲染API,而Unity Windows平台默认使用D3D11作为渲染API,没有可用的适配子着色器,因此抛出对应GPU不支持的报错。你还原Shader时保留了这行限制代码,所以回滚版本后报错依然存在。
解决步骤
- 删除
#pragma exclude_renderers d3d11这行代码,无特殊适配需求不要手动添加排除渲染器的指令 - 在SubShader块结束后、整个Shader块结束前添加一行
Fallback "VertexLit",作为子着色器适配失败时的兜底逻辑 - 清理Unity编译缓存:可直接删除项目根目录下的
Library文件夹后重启Unity,触发全量资源重新编译 - 检查项目渲染API配置:打开
Edit > Project Settings > Player > Other Settings > Rendering,确认你使用的渲染API没有被Shader中的排除指令拦截
额外注意事项
该Shader用于深度采样的逻辑本身无语法错误,修复适配问题后如果出现深度采样全黑的情况,可检查相机组件的Depth Texture Mode配置,需要设置为Depth或Depth Normals才会正常生成_CameraDepthTexture深度纹理。
内容的提问来源于stack exchange,提问作者Leonardo Poljak
相关产品推荐
相关产品推荐

