当前位置:网站首页>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
}
}
}
边栏推荐
- 记一次高校学生账户密码的获取,从无到有
- Unity 3D帧率统计脚本
- Unity Shader :实现漫反射与高光反射
- HoloLens2开发:使用MRTK并且模拟眼动追踪
- Statistical analysis of catering data --- Teddy cloud course homework
- 公网访问内网IIS网站服务器【无需公网IP】
- HoloLens 2 中文开发文档 MRTK v2
- Foundation of JUC concurrent programming (8) -- read write lock
- 简单却好用:使用Keras 2实现基于LSTM的多维时间序列预测
- 配置固定的远程桌面地址【内网穿透、无需公网IP】
猜你喜欢
随机推荐
Force buckle: 1-sum of two numbers
day2-WebSocket+排序
Using keras to realize multidimensional (multivariable) time series prediction of cnn+bilstm+attention
不租服务器,自建个人商业网站(2)
Day3 jvm+ sorting summary
MySQL基础---约束
如何建立一个仪式感点满的网站,并发布到公网 2-2
不租服务器,自建个人商业网站(如何购买域名)
Foundation of JUC concurrent programming (8) -- read write lock
Thymeleaf快速入门学习
++cnt1[s1.charAt(i) - ‘a‘];
UE4:浅谈什么是GamePlay框架
Dameng database_ LENGTH_ IN_ Influence of char and charset
Hololens2 development: use MRTK and simulate eye tracking
Dameng database_ Various methods of connecting databases and executing SQL and scripts under disql
UE4 random generation of items
JUC并发编程基础(1)--相关基础概念
QT char to qstring hexadecimal and char to hexadecimal integer
Day-7 JVM end
Unity Shader :实现漫反射与高光反射








