| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity Build-in管线shader移植到URP管线下 -> 正文阅读 |
|
[游戏开发]Unity Build-in管线shader移植到URP管线下 |
概述目前Build-in管线的shader都是代码形式的,不是shader graph。 所以如果想移植到URP管线下,或者HDRP管线下使用,必须修改代码。 具体步骤在URP管线下,CGIncludes里的某些接口是失效的。 一、灯光模式灯光模式是forward的接口,在URP下不是这么写的。 修改步骤如下; LightMode里的值改成UniversalForward。如下: "LightMode"="UniversalForward" 删掉以下内容: #define UNITY_PASS_FORWARDBASE 可以使用的灯光模式,有三种: "UniversalForward" 二、FallBack一般FallBack为"Standard"的或其他之前Build-in 内置的shader都无法使用了, 删除即可。 三、一些CGInclude常用的接口(重要)非常重要的一步来了,如果按照上面的做完后,还发现有CGInclude的接口不对的地方。 可能就要把之前Builid-in的shader完全改写成URP管线下的,那就必须把全部CGInclude的接口转写成URP下的。 具体如下: 1、把CGPROGRAM改成HLSLPROGRAM,把ENDCG改成ENDHLSL。 CGINCLUDE改成HLSLINCLUDE。 2、把#include "UnityCG.cginc"改成
3、o.pos = UnityObjectToClipPos( v.vertex );改成 VertexPositionInputs vertexInput = GetVertexPositionInputs(v.vertex.xyz); 4、o.normalDir = UnityObjectToWorldNormal(v.normal);改成 VertexNormalInputs vertexNormalInput = GetVertexNormalInputs(v.normal); 5、灯光方向和灯光颜色_WorldSpaceLightPos0.xyz改成 o.shadowCoord = GetShadowCoord(vertexInput); frag函数里: Light mainLight = mainLight = GetMainLight(i.shadowCoord); _LightColor0 改成 mainLight.color 6、把fixed 定义的变量都改成float 的。比如 fixed4 (finalColor,1)改成float4 (finalColor,1) 7、阴影参考以下的文章: 8、深度图具体可参考 9、_GrabTextureURP管线下,截图不再使用GrabTexture,而是使用_CameraOpaqueTexture或_CameraColorTexture 删掉GrabPass{ } sampler2D _GrabTexture; 改成 SAMPLER(_CameraOpaqueTexture); 同时,还得开启URP管线设置的Opaque Texture。 具体可参考 Unity URP管线如何截屏,及热扰动(热扭曲)效果的实现 10、"LightMode" = "ForwardAdd"的pass已经不能用了。直接删掉该pass即可。 如果想使用多pass,可以参考以下文章: 如何在Unity的URP下使用多pass(multi pass) 其实看到这里你大概能感觉到Build-in 管线和URP管线的作者完全不是一个风格的,明明很多接口可以通用的,但是就是喜欢推倒重来,感觉还是挺恶心。 URP管线的源码在 以下两个文件分别是Build-in 管线shader和翻译后的URP管线shader。可以看看它们具体的对比是怎样的。 链接:https://pan.baidu.com/s/1poYeQPjAhsq2-_rf4D1Dag? 其他对比更全面的文章: https://www.jianshu.com/p/3fef69e2efb6 https://teodutra.com/unity/shaders/urp/graphics/2020/05/18/From-Built-in-to-URP/ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/15 14:50:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |