五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity GPU Instancing

2022-12-16 18:45 作者:少女的美夢7  | 我要投稿

GPU Instancing開啟條件

  • 首先Shader必須兼容與Instancing。

  • 材質(zhì)開啟?Enable GPU Instancing

  • SRP Batcher的優(yōu)先級高于GPU Instancing,對于Game Objects,如果SRP Batcher能被使用(Shader兼容SRP Batcher,節(jié)點(diǎn)本身也兼容等),則就會使用SRP Batcher,即便材質(zhì)開啟了Enable GPU Instancing也沒用

  • 如果SPR Batcher的條件被破壞,例如使用了MaterialPropertyBlock,且開啟了Enable GPU Instancing,則GPU Instancing則會啟用

GPU Instancing的性能

  • GPU Instancing對于頂點(diǎn)數(shù)比較少的模型不一定能提高性能,因?yàn)轫旤c(diǎn)數(shù)少時(shí)GPU不能充分的分配資源去繪制多個(gè)實(shí)例,這個(gè)頂點(diǎn)數(shù)的閾值根據(jù)不同顯卡是不一樣的,但一般來說少于256個(gè)頂點(diǎn)是不合適的。

  • 如果有很多頂點(diǎn)少的物體需要繪制,可以將他們合并到一個(gè)mesh中進(jìn)行繪制

自定義Shader兼容GPU Instancing


  • 首先,定義PerMaterial Uniform block時(shí),要使用INSTANCING相關(guān)的宏UNITY_INSTANCING_BUFFER_START,UNITY_INSTANCING_BUFFER_END和UNITY_DEFINE_INSTANCED_PROP。這些宏的作用是將Uniform block定義成數(shù)組。需要注意的是,只有當(dāng)同一個(gè)材質(zhì)下面的不同Instance存在逐Instance不同的屬性時(shí),才需要將UnityPerMaterial的CBuffer改成使用這些宏,否則是不需要的,因?yàn)檫@些宏只是為了將屬性定義成數(shù)組,然后可以使用Instance索引去得到數(shù)組里面不同Instance各自的屬性。另外,由于CBuffer的名字不能沖突,所以也不能僅僅將不同的屬性單獨(dú)拿出來使用這些宏包裹,如果需要拿出來就得全部拿出來,也就是將SRPBatcher使用的CBuffer的宏替換成這些宏


  • VS和FS的輸入都要使用結(jié)構(gòu)體作為參數(shù),且結(jié)構(gòu)體中需要使用宏UNITY_VERTEX_INPUT_INSTANCE_ID定義逐物體的instance id


  • 在VS和FS中,都要使用宏UNITY_SETUP_INSTANCE_ID來設(shè)置instance id變量,這個(gè)宏的作用是使用一個(gè)base instance id和input中的instance id組合出一個(gè)instance id變量來作為數(shù)組索引獲取相應(yīng)的屬性值


  • 如果需要在FS中獲取屬性,則VS中需要使用宏UNITY_TRANSFER_INSTANCE_ID從input向output傳遞instance id。然后在FS中使用宏UNITY_ACCESS_INSTANCED_PROP獲取屬性。當(dāng)然如果是在VS中獲取所有屬性進(jìn)行計(jì)算,則不需要傳遞,直接在VS中使用宏UNITY_ACCESS_INSTANCED_PROP獲取屬性


  • 另外,必須要添加#pragma multi_compile_instancing


Unity GPU Instancing的評論 (共 條)

分享到微博請遵守國家法律
错那县| 呼伦贝尔市| 报价| 龙里县| 西乌| 石楼县| 政和县| 临夏市| 双峰县| 靖远县| 页游| 南开区| 多伦县| 福建省| 甘谷县| 安图县| 罗江县| 会东县| 平安县| 阿拉尔市| 察哈| 尚义县| 静乐县| 屯留县| 准格尔旗| 平定县| 屏东市| 当雄县| 万州区| 濮阳县| 界首市| 青海省| 车致| 社会| 华池县| 三原县| 东平县| 紫金县| 磐石市| 乌鲁木齐县| 德安县|