URP | 基礎(chǔ)CG和HLSL區(qū)別
CG和HLSL區(qū)別
tags | 標簽區(qū)別
管線說明tags標簽,URP的shader都需標明使用的渲染管線的標簽,即"RenderPipeline"="UniversalRenderPipeline"。


HLSL語法
CG的引入變成了HLSL的引入,即CGINCLUDE ENDCG變成了HLSLINCLUDE?ENDHLSL。
CG的編碼,從CGPROGRAM ENDCG變成了HLSL的HLSLPROGRAM ENDHLSL.

這倆個區(qū)別什么

UnityCG,cginc已經(jīng)不再適用,取而代之的是Core.hlsl,在引用時注明#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"即可。

CBUFFER_START 使用
CBUFFER_START和CBUFFER_END,對于變量是單個材質(zhì)獨有的時候建議放在這里面,以提高性能。CBUFFER(常量緩沖區(qū))的空間較小,不適合存放紋理貼圖這種大量數(shù)據(jù)的數(shù)據(jù)類型,適合存放float,half之類的不占空間的數(shù)據(jù),關(guān)于它的官方文檔在下有詳細說明。https://blogs.unity3d.com/2019/02/28/srp-batcher-speed-up-your-rendering/
注意:UnityPerMaterial大小寫。

C-buffer ? ?緩沖區(qū)
代碼
代碼
貼圖采樣
新的DXD11 HLSL貼圖的采樣函數(shù)和采樣器函數(shù),TEXTURE2D (_MainTex)和SAMPLER(sampler_MainTex),用來定義采樣貼圖和采樣狀態(tài)代替原來DXD9的sampler2D,在不同的平臺有不同的變化,在GLcore庫函數(shù)里定義,具體的原理未知,如有大佬了解望給予評論和指出。

結(jié)構(gòu)體
代碼階段 需要注意的是把模型傳入的UV信息和改一下這樣區(qū)分。

頂點階段
頂點著色器階段,使用的函數(shù)也是不一樣的,TransformObjectToHClip(v.positionOS.xyz) 替換掉原來的。

貼圖采樣
貼圖的采用輸出函數(shù)采用DXD11 HLSL下的?SAMPLE_TEXTURE2D(textureName, samplerName, coord2) ,具有三個變量,

分別是TEXTURE2D (_MainTex)的變量
SAMPLER(sampler_MainTex)的變量和 uv,
注意: 貼圖采樣方式是3個變量,貼圖的名字,數(shù)據(jù),UV信息。