当前位置:网站首页>Unity Shader从内置渲染管线迁移到URP
Unity Shader从内置渲染管线迁移到URP
2022-07-24 05:21:00 【一只小EZ】
Unity 在URP中将shader更新为了HLSL语言,使用build-in shader 无法直接在URP中使用
这里讲一下关于shader的更新方法
更新步骤
Tags添加"RenderPipeline" = "UniversalPipeline"CGPROGRAMENDCG改变为HLSLPROGRAMENDHLSL#include "UnityCG.cginc"
更改为#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"fixed4类型更改为half4函数替换对照
| Build-in RP | URP |
|---|---|
| UnityObjectToClipPos(v.vertex); | TransformObjectToHClip(v.vertex.xyz); |
| mul(unity_ObjectToWorld,v.vertex).xyz | TransformObjectToWorld(v.vertex.xyz) |
| mul(float4(v.normal, 0.0),unity_WorldToObject).xyz | TransformObjectToWorldNormal(v.normal) |
代码
上代码 一个简单的uv流动shader
内置渲染管线
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
// Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
Shader "Custom/liuguang"
{
Properties
{
_FlowTex("Texture", 2D) = "white" {
}
_FlowTilling("Flow Tilling",Vector) = (1,1,0,0)
_FlowSpeed("Flow Speed",Vector) = (1,1,0,0)
}
SubShader
{
Tags {
"Queue" = "Transparent" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 pos : SV_POSITION;
float3 pos_world : TEXCOORD1;
float3 normal_world : TEXCOORD2;
float3 pivot_world : TEXCOORD3;
};
sampler2D _FlowTex;
float4 _FlowTilling;
float4 _FlowSpeed;
v2f vert(appdata v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
float3 normal_world = mul(float4(v.normal, 0.0),unity_WorldToObject).xyz;
o.normal_world = normalize(normal_world);
o.pos_world = mul(unity_ObjectToWorld,v.vertex).xyz;
o.pivot_world = mul(unity_ObjectToWorld, float4(0, 0, 0, 1)).xyz;
o.uv = v.texcoord;
return o;
}
fixed4 frag(v2f i) : SV_Target
{
half2 uv_flow = (i.pos_world.xy - i.pivot_world.xy) * _FlowTilling.xy;
uv_flow = uv_flow + _Time.y * _FlowSpeed.xy;
float4 flow_rgba = tex2D(_FlowTex, uv_flow);
return flow_rgba;
}
ENDCG
}
}
}
URP
Shader "Custom/flowlight"
{
Properties
{
_FlowTex("Texture", 2D) = "white" {
}
_FlowTilling("Flow Tilling",Vector) = (1,1,0,0)
_FlowSpeed("Flow Speed",Vector) = (1,1,0,0)
}
SubShader
{
Tags {
"RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" }
LOD 100
Pass
{
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
struct appdata
{
float4 vertex : POSITION;
float2 texcoord : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 pos : SV_POSITION;
float3 pos_world : TEXCOORD1;
float3 normal_world : TEXCOORD2;
float3 pivot_world : TEXCOORD3;
};
sampler2D _FlowTex;
float4 _FlowTilling;
float4 _FlowSpeed;
v2f vert(appdata v)
{
v2f o;
o.pos = TransformObjectToHClip(v.vertex.xyz);
float3 normal_world = TransformObjectToWorldNormal(v.normal);
o.normal_world = normalize(normal_world);
o.pos_world = TransformObjectToWorld(v.vertex.xyz);
o.pivot_world = TransformObjectToWorld(float3(0,0,0));
o.uv = v.texcoord;
return o;
}
half4 frag(v2f i) : SV_Target
{
half2 uv_flow = (i.pos_world.xy - i.pivot_world.xy) * _FlowTilling.xy;
uv_flow = uv_flow + _Time.y * _FlowSpeed.xy;
float4 flow_rgba = tex2D(_FlowTex, uv_flow);
return flow_rgba;
}
ENDHLSL
}
}
}
边栏推荐
- day5-jvm
- 绘制轮廓 cv2.findContours函数及参数解释
- PDF Text merge
- Native JS magnifying glass effect
- JUC concurrent programming foundation (9) -- thread pool
- Numpy array broadcast rule memory method array broadcast broadcast principle broadcast mechanism
- Search of two-dimensional array of "sword finger offer" C language version
- Typora installation package in November 2021, the last free version of the installation package to download v13.6.1
- Machine learning (Zhou Zhihua) Chapter 3 Notes on learning linear models
- Jupyter notebook select CONDA environment
猜你喜欢
![[deep learning] teach you to write](/img/c6/333b16758d79ebd77185be6e3cb38f.png)
[deep learning] teach you to write "handwritten digit recognition neural network" hand in hand, without using any framework, pure numpy
![[principles of database system] Chapter 4 advanced database model: Unified Modeling Language UML, object definition language ODL](/img/51/7387c73148ee7bd1034bb6e77af7f0.png)
[principles of database system] Chapter 4 advanced database model: Unified Modeling Language UML, object definition language ODL

Typora installation package in November 2021, the last free version of the installation package to download v13.6.1

"Statistical learning methods (2nd Edition)" Li Hang Chapter 16 principal component analysis PCA mind map notes and after-school exercise answers (detailed steps) PCA matrix singular value Chapter 16

Foundation of JUC concurrent programming (7) -- multithread lock

On the concepts of "input channel" and "output channel" in convolutional neural networks

Machine learning (Zhou Zhihua) Chapter 3 Notes on learning linear models

day1-jvm+leetcode

论文阅读-Endmember-Guided Unmixing Network (EGU-Net) 端元指导型高光谱解混网络

Chapter IV decision tree summary
随机推荐
[activiti] personal task
Numpy array broadcast rule memory method array broadcast broadcast principle broadcast mechanism
json.dumps()函数解析
Foundation of JUC concurrent programming (6) -- lock lock
[MYCAT] MYCAT installation
Qt新手入门级 计算器加、减、乘、除、应用
Machine learning (zhouzhihua) Chapter 5 notes on neural network learning
vsual studio 2013环境 Udp组播
AD1256
比较好的CV链接收藏(动态更新)
GCC 中__attribute__((constructor)和__attribute__(((destructor))的注意事项。
"Statistical learning methods (2nd Edition)" Li Hang Chapter 13 introduction to unsupervised learning mind map notes
Points for attention in adding spp module to the network
YOLOv5学习总结(持续更新)
用指针访问一维数组
day1-jvm+leetcode
HAL_Delay()延时误差约1ms的问题
synergy局域网实现多主机共享键鼠(amd、arm)
数组常用方法
Jupyter notebook select CONDA environment