赞
踩
一个模型是很多个顶点组成,顶点数据中包含坐标、法线、切线、UV坐标、顶点颜色等等组成。
URP(Universal Render Pipeline)通用渲染管线,是Unity在2019.3版本之后推出的一种新的渲染管线。传统的渲染管线在渲染多光源的情况,是把每一个主要光源都使用一个Pass来计算,然后再叠加,所以在计算多光源实时光时,消耗会比较大。URP中主光源只能是平行光、限定附加光源数量,然后在一个pass内处理完所有光源和光照的计算。这样会解决了默认渲染管线对于多光源的计算。URP的另外一个特点是SRP Batcher合并批次的支持。
一般项目创建后是默认的内置渲染管线,需要手动升级成URP,详细可以看Unity官网上对URP的说明:将通用渲染管线安装到现有项目中 | Universal RP | 12.1.1 使用一个模型颜色渐变效果来对比URP和内置渲染器的shader代码。效果如下:
内置渲染器:
- Shader "Unlit/002"
- {
- Properties
- {
- _BaseColor("基础颜色",Color) = (1,1,1,1)
- _ChangeColor("渐变颜色",Color) = (1,0,0,1)
- }
- SubShader
- {
- Tags { "RenderType" = "Opaque" }
- LOD 100
-
- Pass
- {
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- float4 _BaseColor;
- float4 _ChangeColor;
- struct v2f
- {
- float4 uv : TEXCOORD0;
- float4 vertex : SV_POSITION;
- };
-
- struct appdata
- {
- float4 vertex : POSITION;
- float2 uv : TEXCOORD0;
- };
-
- v2f vert(appdata v)
- {
- v2f o;
- o.vertex = UnityObjectToClipPos(v.vertex);
- o.uv = v.vertex;
- return o;
- }
-
- fixed4 frag(v2f i) : SV_TARGET
- {
- return lerp(_BaseColor,_ChangeColor,i.uv.y + 0.5);
- }
-
- ENDCG
- }
- }
- }
URP:
- Shader "Unlit/003"
- {
- Properties
- {
- _BaseColor("基础颜色",Color) =(1,1,1,1)
- _ChangeColor("渐变颜色",Color) =(1,0,1,1)
- }
- SubShader
- {
-
- Tags {
- "RenderPipeline"="UniversalPipeline"
- "RenderType"="Opaque"
- "IgnoreProjector" = "True"
- }
- LOD 100
- Pass
- {
- HLSLPROGRAM
- #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"//函数库:主要用于各种的空间变换
- #pragma vertex vert
- #pragma fragment frag
-
- struct appdata
- {
- float4 vertex : POSITION;
- float2 uv : TEXCOORD0;
- };
-
- struct v2f
- {
- float4 uv : TEXCOORD0;
- float4 vertex : SV_POSITION;
- };
-
- float4 _BaseColor;
- float4 _ChangeColor;
- float4 _MainTex_ST;
- v2f vert (appdata v)
- {
- v2f o;
- o.vertex = TransformObjectToHClip(v.vertex);
- o.uv = v.vertex;
- return o;
- }
-
- half4 frag (v2f i) : SV_TARGET
- {
- return lerp(_ChangeColor,_BaseColor,i.uv.y+0.5);
- }
- ENDHLSL
- }
- }
- }
对于Unity来说,cg和hlsl的语法基本上是一致的,URP中把使用的CGPROGRAM改为HLSLPROGRAM了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。