打死都記不住的小知識點(持續更新ing )

2021-10-06 11:22:38 字數 4082 閱讀 7097

blend srcfactor dstfactor  :srcfactor 是源係數,dstfactor是目標係數,源係數是由片段著色器計算出來的fragment_out,目標係數是之前累計的原色值,儲存在幀緩衝中。
切線空間到世界空間轉換:

float3 normalworld = unityobjecttoworldnormal(v.normal);

float4 tangentworld = float4(unityobjecttoworlddir(v.tangent.xyz), v.tangent.w);

half sign =v.tangent.w * unity_worldtransformparams.w;//unity_worldtransformparams相當於unity_uv_starts_at_top定義的巨集

half3 binormal = cross(normalworld , tangentworld ) * sign;

float3x3 tangenttoworld =half3x3(tangentworld , binormal, normalworld );

模型空間到到切線空間轉換:

#define tangent_space_rotation \\使用這個巨集即可,在unitycg.cginc中

float3 binormal = cross( normalize(v.normal), normalize(v.tangent.xyz) ) * v.tangent.w; \

float3x3 rotation = float3x3( v.tangent.xyz, binormal, v.normal )

名稱

翻譯註解

對應關鍵字

opaque

不透明適用於所有的不透明的物體

對應的下面的不開啟

cutout

鏤空alpha小於閥值clip掉

_alphatest_on

fade

漸隱與transparent的區別為高光反射會隨著透明度而消失

_alphatest_on

transparent

透明高光反射不會隨透明而消失

_alphapremultiply_on

tips:如果想動態開啟或者關閉某乙個設定,開啟對應的shader關鍵字,注意深度的處理,1,2都會進行深度寫入,3,4不會進行深度寫入

#pragma fragmentoption arb_precision_hint_fastest

1.cameradepth --從小到大

2.sorting layer(在tags&layer中設定,相當於mesh和canvas中的sortinglayer).

3.order in layer(相對於sorting layer的子排序,同一層時才有效,mesh中sortingorder,canvas的orderinlayer)

4.renderqueue

這兩個傻傻分不清楚,先看不同lightmode下,動靜物體獲取資訊的**。

下面動態物體簡稱d_,靜態物體簡稱s_,indis表示在shadowdistance範圍內,outdis表示在shadowdistance範圍外,shadowdistance在quality–shadows–shadowdistance中設定。

在烘焙設定的lightmode只有:bakedindirect、shadowmask、subtractive三種模式,但是我們再在shadowmask模式中,通過quality–shadowsmaskmode新增乙個distanceshadowmask模式。

lightmode\資料

d_直接光照

s_直接光照

d_間接光照

s_間接光照

d_接受的動態物體的投射陰影

s_接受的動態物體的投射陰影

d_接受的靜態物體的投射陰影

s_接受的靜態物體的投射陰影

baked indirect

實時光實時光

light probes

光照貼圖

indis-實時陰影,outdis-無

indis-實時陰影,outdis-無

indis-實時陰影,outdis-無

indis-實時陰影,outdis-無

shadowmask

實時光實時光

light probes

光照貼圖

indis-實時陰影,outdis-無

indis-實時陰影,outdis-無

indis-實時陰影,outdis-lightprobs獲取烘焙陰影

indis-實時陰影,outdis-光照貼圖

distanceshadowmask

實時光實時光

light probes

光照貼圖

indis-實時陰影,outdis-無

indis-實時陰影,outdis-無

lightprobs獲取烘焙陰影

光照貼圖

subtractive

實時光光照貼圖

light probes

光照貼圖

indis-(平行光)實時陰影,outdis-無

indis-(平行光)實時陰影,outdis-無

lightprobs獲取烘焙陰影

光照貼圖

附錄乙份shader中關鍵對應的開啟模式:

1.non-directional:烘焙時,生成一套光照貼圖,包換光照資訊(顏色)。

2.directional:生成兩套光照貼圖。一張儲存光照資訊,一張用來儲存入射光的主要方向。

為什麼要多弄乙個圖儲存顏色,為了烘焙出法線的效果。

float zdist = dot(_worldspacecamerapos - worldpos, unity_matrix_v[2].xyz);
名稱

型別描述

_worldspacecamerapos

float3

該攝像機在世界空間中的位置

_projectionparams

float4

x=1.0(或-1.0,如果正在使用乙個翻轉的投影矩陣進行渲染),y=near, z=far, w=1.0+1.0/far,其中near和far分別是近裁剪平面和遠裁剪平面離攝像機的距離。

_screenparams

float4

x=width, y=height, z=1.0+1.0/width, w=1.0+1.0/height, 其中width和height分別是該攝像機的渲染目標(render target)的畫素寬度和高度。

_zbufferparams

float4

x=1-far/near, y=far/near, z=x/far, w=y/far, 該變數用於線性化z快取中的深度值。

unity_orthoparams

float4

x=width, y=height, z沒有定義,w=1.0(該攝像機是正交攝像機)或w=0.0(該攝像機是透視攝像機),其中width和height是正交攝像機的寬度和高度。

unity_cameraprojection

float4x4

該攝像機的攝影矩陣

unity_camerainvprojection

float4x4

該攝像機的攝像矩陣的逆矩陣

unity_cameraworldclipplanes[6]

float4

該攝像機的6個裁剪平面在世界空間下的等式,按如下順序:左、右、下、上、近、遠裁剪平面。

從數學上講,三維空間裡的縮放(含映象)、旋轉、斜切變換,可以用3×3的方陣進行,但是,平移變換必須用4×4的方陣進行,可根據線性代數法則,乙個三維向量是不能用四階方陣變換的,所以必須為三維向量補上乙個分量,就是w。

對於三維空間的「點」來說,w為1;而對於「向量」來說,w為0;原因暫不詳談,所以你必須搞明白你的vec4表示的到底是點還是向量,這對於w的取值至關重要。

web小知識點 持續更新

css修改tr的邊框 如果直接修改tr的border屬性是沒有反應的 需要在table中加一句話 table js獲取dom節點 childnodes 得到s的全部子節點 parentnode 得到s的父節點 nextsbiling 獲得s的下乙個兄弟節點 previoussbiling 得到s的上...

MySQL小知識點 持續更新

1.檢視建立表的sql語句 show create table table name g 2.檢視表的字段資訊 show full columns from table name 獲取以下資訊 field 欄位名 type 字段型別 collation 字符集 null 是否可以為null key ...

前端小知識點總結(持續更新)

封裝成function function dateformat time dateformat date.now 2020 09 28 11 33 17 只取年月日 注意格式 date.now 取得當前時間戳,new date date.now tolocaledatestring 2020 9 2...