当前位置:网站首页>Unity shader migrated from built-in rendering pipeline to URP
Unity shader migrated from built-in rendering pipeline to URP
2022-07-24 06:14:00 【A small EZ】
Unity stay URP Lieutenant general shader Update to HLSL Language , Use build-in shader Can't be directly in URP Use in
Here is about shader How to update
Reference resources From Built-in to URP
Update steps
Tagsadd to"RenderPipeline" = "UniversalPipeline"CGPROGRAMENDCGChange forHLSLPROGRAMENDHLSL#include "UnityCG.cginc"
Change to#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"fixed4Change the type tohalf4Function replacement cross reference
| 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) |
Code
Code up A simple uv flow shader
Built in rendering pipeline
// 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
}
}
}
边栏推荐
- Traditional K-means implementation
- The detailed process of connecting MySQL with QT and outputting data to QT window tablewidget.
- 使用Keras实现 基于注意力机制(Attention)的 LSTM 时间序列预测
- Xshell remote access tool
- day6-jvm
- 记一次高校学生账户密码的获取,从无到有
- [principles of database system] Chapter 4 advanced database model: Unified Modeling Language UML, object definition language ODL
- How to solve the problem of large distribution gap between training set and test set
- unity2D横版游戏跳跃实时响应
- Unity2d game let characters move - next
猜你喜欢
随机推荐
The kernel apps to have died. it will restart automatically
Foundation of JUC concurrent programming (8) -- read write lock
First knowledge of graphics
Day2 websocket+ sort
Foundation of JUC concurrent programming (4) -- thread group and thread priority
Unity基础知识及一些基本API的使用
day4-jvm
Hololens 2 Chinese development document MRTK V2
Jestson installs IBus input method
Openpose unity plug-in deployment tutorial
day4-jvm
[principles of database system] Chapter 5 algebra and logic query language: package, extension operator, relational logic, relational algebra and datalog
Kernel pwn 基础教程之 Heap Overflow
Pytorch single machine multi card distributed training
JVM系统学习
Sequential stack C language stack entry and exit traversal
Xshell remote access tool
Foundation of JUC concurrent programming (6) -- lock lock
QT novice entry level calculator addition, subtraction, multiplication, division, application
Lua Foundation









