UnityTips 之 URP shader庫新方法列表

簡介: 工程升級到 URP 渲染管線后似芝,大部分 shader 都已無法正常運行那婉,只有少數(shù)的 無光照運算的 shader 是可以正常運行。其原因就是党瓮,URP 的大部分渲染接口已經(jīng)換了详炬。shader 文件雖然還是支持 CG 語言,但是新版的著色器大部分都是用了HLSL 語言。本文記錄 URP shader 常用的函數(shù)庫備查呛谜。
注意:unity2020 用到的 URP 版本功能更多更全在跳,這里只提供了 2019.4用的 7.5版本的
版本:2019.4
URP版本:7.5

Core.hlsl

名稱 說明
GetVertexPositionInputs(float3 positionOS) 獲取輸入頂點坐標信息
GetVertexNormalInputs(float3 normalOS) 獲取輸入頂點法線信息
GetVertexNormalInputs(float3 normalOS, float4 tangentOS) 獲取輸入頂點法線信息(重載)
GetScaledScreenParams() 獲取屏幕縮放參數(shù)信息
NormalizeNormalPerVertex(real3 normalWS) 逐頂點法線正交
NormalizeNormalPerPixel(real3 normalWS) 逐像素法線正交
ComputeScreenPos(float4 positionCS) 計算屏幕坐標信息
(real)ComputeFogFactor(float z) 計算霧參數(shù)
(real)ComputeFogIntensity(real fogFactor) 計算霧強度
(half3)MixFogColor(real3 fragColor, real3 fogColor, real fogFactor) 混合霧顏色
(half3)MixFog(real3 fragColor, real fogFactor) 混合霧

Lighting.hlsl

名稱 說明
DistanceAttenuation(float distanceSqr, half2 distanceAttenuation) 距離衰減
AngleAttenuation(half3 spotDirection, half3 lightDirection, half2 spotAttenuation) 角度衰減
GetMainLight()/GetMainLight(float4 shadowCoord) 獲取主光源
GetPerObjectLightIndex(int index) 獲取每個對象燈光Index
GetAdditionalLightsCount() 獲取額外燈光數(shù)量
ReflectivitySpecular(half3 specular) 高光反射率
OneMinusReflectivityMetallic(half metallic) OneMinus金屬反射率
InitializeBRDFData(half3 albedo, half metallic, half3 specular, half smoothness, half alpha, out BRDFData outBRDFData) 初始化BRDF
EnvironmentBRDF(BRDFData brdfData, half3 indirectDiffuse, half3 indirectSpecular, half fresnelTerm) 環(huán)境BRDF
DirectBDRF(BRDFData brdfData, half3 normalWS, half3 lightDirectionWS, half3 viewDirectionWS) BRDF
SampleLightmap(float2 lightmapUV, half3 normalWS) 光照貼圖
GlossyEnvironmentReflection(half3 reflectVector, half perceptualRoughness, half occlusion) 環(huán)境光澤反射
GlobalIllumination(BRDFData brdfData, half3 bakedGI, half occlusion, half3 normalWS, half3 viewDirectionWS) 全局光照
MixRealtimeAndBakedGI(inout Light light, half3 normalWS, inout half3 bakedGI, half4 shadowMask) 實時烘培混合
LightingLambert(half3 lightColor, half3 lightDir, half3 normal) 蘭伯特模型
LightingSpecular(half3 lightColor, half3 lightDir, half3 normal, half3 viewDir, half4 specular, half smoothness) 高光
LightingPhysicallyBased(BRDFData brdfData, half3 lightColor, half3 lightDirectionWS, half lightAttenuation, half3 normalWS, half3 viewDirectionWS)/LightingPhysicallyBased(BRDFData brdfData, Light light, half3 normalWS, half3 viewDirectionWS) 基于物理的光照模型
VertexLighting(float3 positionWS, half3 normalWS) 頂點光照顏色
LightweightFragmentPBR(InputData inputData, half3 albedo, half metallic, half3 specular,half smoothness, half occlusion, half3 emission, half alpha) 輕量級片元PBR
LightweightFragmentBlinnPhong(InputData inputData, half3 diffuse, half4 specularGloss, half smoothness, half3 emission, half alpha) 輕量級片元布林·馮

Shadows.hlsl

名稱 說明
GetMainLightShadowStrength() 獲取主光源陰影強度
GetAdditionalLightShadowStrenth(int lightIndex) 獲取額外光源陰影強度
SampleScreenSpaceShadowmap(float4 shadowCoord) 屏幕空間陰影貼圖
SampleShadowmap(float4 shadowCoord, TEXTURE2D_SHADOW_PARAM(ShadowMap, sampler_ShadowMap), ShadowSamplingData samplingData, half shadowStrength, bool isPerspectiveProjection = true) 陰影貼圖
TransformWorldToShadowCoord(float3 positionWS) 把頂點的世界坐標轉換到陰影坐標
MainLightRealtimeShadow(float4 shadowCoord) 主光源實時陰影
AdditionalLightRealtimeShadow(int lightIndex, float3 positionWS) 額外光源實時陰影
GetShadowCoord(VertexPositionInputs vertexInput) 獲取陰影坐標信息
ApplyShadowBias(float3 positionWS, float3 normalWS, float3 lightDirection) 應用陰影偏移

SpaceTransforms.hlsl

名稱 說明
TransformObjectToWorld(float3 positionOS) 當前模型空間轉世界空間矩陣,通常用于把頂點/方向矢量從模型空間轉到世界空間
TransformWorldToObject(float3 positionWS) 當前世界空間轉模型空間矩陣隐岛,通常用于把頂點/方向矢量從世界空間轉到模型空間
TransformWorldToView(float3 positionWS) 當前世界空間轉相機空間矩陣猫妙,通常用于把頂點/方向矢量從世界空間轉到相機空間
TransformObjectToHClip(float3 positionOS) 當前模型空間轉裁剪空間矩陣,通常用于把頂點/方向矢量從模型空間轉到裁剪空間
TransformWorldToHClip(float3 positionWS) 當前世界空間轉裁剪空間矩陣聚凹,通常用于把頂點/方向矢量從世界空間轉到裁剪空間
TransformWViewToHClip(float3 positionVS) 當前相機空間轉裁剪空間矩陣割坠,通常用于把頂點/方向矢量從相機空間轉到裁剪空間
TransformObjectToWorldDir(real3 dirOS) 把方向矢量從模型空間轉換到世界空間中
TransformWorldToObjectDir(real3 dirWS) 把方向矢量從世界空間轉換到模型空間中
TransformWorldToViewDir(real3 dirWS) 把方向矢量從世界空間轉換到相機空間中
TransformWorldToHClipDir(real3 directionWS) 把方向矢量從世界空間轉換到裁剪空間中
TransformObjectToWorldNormal(float3 normalOS) 把法線從模型空間轉換到世界空間中
CreateTangentToWorld(real3 normal, real3 tangent, real flipSign) 創(chuàng)建一個切線空間轉為世界空間的3x3矩陣
TransformTangentToWorld(real3 dirTS, real3x3 tangentToWorld) 當前切線空間轉世界空間矩陣,通常用于把頂點/方向矢量從切線空間轉到世界空間
TransformWorldToTangent(real3 dirWS, real3x3 tangentToWorld) 當前世界空間轉切線空間矩陣妒牙,通常用于把頂點/方向矢量從世界空間轉到切線空間
TransformTangentToObject(real3 dirTS, real3x3 tangentToWorld) 當前切線空間轉模型空間矩陣彼哼,通常用于把頂點/方向矢量從切線空間轉到模型空間
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市湘今,隨后出現(xiàn)的幾起案子敢朱,更是在濱河造成了極大的恐慌,老刑警劉巖摩瞎,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拴签,死亡現(xiàn)場離奇詭異,居然都是意外死亡旗们,警方通過查閱死者的電腦和手機蚓哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來上渴,“玉大人杖剪,你說我怎么就攤上這事〕鄞” “怎么了盛嘿?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長括袒。 經(jīng)常有香客問我次兆,道長,這世上最難降的妖魔是什么锹锰? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任芥炭,我火速辦了婚禮,結果婚禮上恃慧,老公的妹妹穿的比我還像新娘园蝠。我一直安慰自己,他們只是感情好痢士,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布彪薛。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪善延。 梳的紋絲不亂的頭發(fā)上少态,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音易遣,去河邊找鬼彼妻。 笑死,一個胖子當著我的面吹牛豆茫,可吹牛的內容都是我干的侨歉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼揩魂,長吁一口氣:“原來是場噩夢啊……” “哼为肮!你這毒婦竟也來了?” 一聲冷哼從身側響起肤京,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茅特,沒想到半個月后忘分,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡白修,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年妒峦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兵睛。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡肯骇,死狀恐怖,靈堂內的尸體忽然破棺而出祖很,到底是詐尸還是另有隱情笛丙,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布假颇,位于F島的核電站胚鸯,受9級特大地震影響,放射性物質發(fā)生泄漏笨鸡。R本人自食惡果不足惜姜钳,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望形耗。 院中可真熱鬧哥桥,春花似錦、人聲如沸激涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至已卸,卻和暖如春佛玄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背累澡。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工梦抢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愧哟。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓奥吩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蕊梧。 傳聞我的和親對象是個殘疾皇子霞赫,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容