這里來介紹一下米哈游崩3的相關(guān)技術(shù)倦西,技術(shù)分享于2018年,雖然過去5年了雏节,但其中依然有些內(nèi)容值得借鑒學(xué)習(xí)。
崩3高职、原神使用的都是Unity引擎钩乍,全文目錄給出如下:
下面介紹了崩3在移動(dòng)端上用到的一些特性,包括但不限于Bloom怔锌、動(dòng)態(tài)粒子寥粹、Distortion(一種后處理)以及平面反射:
介紹一下反射實(shí)現(xiàn)邏輯:
- 以1/3的分辨率進(jìn)行渲染(不是PPR或SSR做的后處理),從下面的截圖來看埃元,這里是對(duì)反射渲染的viewport做了縮減處理的
- 根據(jù)需要進(jìn)行模糊處理
- 渲染的時(shí)候考慮了菲涅爾效應(yīng)
- 通過材質(zhì)處理涝涤,在金屬反射面上增加了一些扭曲與sketch(筆觸)效果
屏幕空間的扭曲自然是通過后處理完成:
- 會(huì)基于深度來控制扭曲強(qiáng)度
Bloom邏輯沒什么新意,還是多層下采樣疊加后得到Bloom效果岛杀,并將之疊加到原始場(chǎng)景上去阔拳。
最后混合就得到了相關(guān)效果,中規(guī)中矩类嗤。
崩3有日夜變化與動(dòng)態(tài)天氣糊肠。
云層是通過貼片來實(shí)現(xiàn)的,不過提供了較為豐富的配置以應(yīng)對(duì)不同的場(chǎng)景:
- 時(shí)間(早中晚)
- 顏色(Bright/Dark/Rim/Second Dark Color)
- 將貼圖分成多個(gè)Layer遗锣,用不同的通道表示货裹,在實(shí)際使用的時(shí)候根據(jù)配置對(duì)Layer進(jìn)行疊色混合得到最終效果
為云層提供了專門編輯器:
- 通過billboard粒子實(shí)現(xiàn)
- 可以自定義自己想要的云朵類型
- 通過keyframe實(shí)現(xiàn)云層的動(dòng)態(tài)變化
- 添加了TOD時(shí)間控制邏輯
上面展示了可以實(shí)現(xiàn)的效果,看起來還挺豐富的精偿,也挺好看弧圆,就是不知道運(yùn)動(dòng)起來是否連貫,而且貼圖消耗低(內(nèi)存稍高)笔咽,性能比較好搔预,如果沒有角色穿云的玩法,這種方案還是挺不錯(cuò)的叶组。
天氣系統(tǒng)做了如下工作:
- 對(duì)大氣霧效的控制邏輯做了優(yōu)化
- 添加了對(duì)skybox顏色配置的邏輯
- 為角色添加Lighting Volume
又繞回后處理了斯撮,增加了多層DOF效果:
- 采用六邊形作為DOF高光形狀
- 基于模糊半徑(通過曲線控制,可以實(shí)現(xiàn)一些鏡頭效果或者隨著時(shí)間動(dòng)態(tài)變化的效果)對(duì)分辨率進(jìn)行調(diào)控(半徑越大扶叉,分辨率越低)
支持對(duì)Bokeh的強(qiáng)度(會(huì)根據(jù)場(chǎng)景的亮度動(dòng)態(tài)調(diào)整,以確保效果)與旋轉(zhuǎn)參數(shù)進(jìn)行調(diào)整以實(shí)現(xiàn)動(dòng)畫效果帕膜,下面給了一個(gè)圖片枣氧,文末的參考鏈接中有對(duì)應(yīng)的視頻可以看下:
雨效邏輯:
- 會(huì)根據(jù)時(shí)間的流速(如慢動(dòng)作)調(diào)整表現(xiàn)
- 一共設(shè)計(jì)了四種流速,并關(guān)聯(lián)了四種不同的資產(chǎn)
下面看下卡渲邏輯垮刹。
角色著色要點(diǎn):
- 基于多層Ramp圖+Brush實(shí)現(xiàn)
- 頭發(fā)做了各向異性达吞,還做了折射和模糊?
- 主要有三種光:方向主光荒典、環(huán)境光IBL以及邊緣光
- 陰影用了PCSS(根據(jù)caster到receiver的距離調(diào)整陰影的軟硬程度)
- 描邊
崩3對(duì)Ramp圖的使用可以說是一大亮點(diǎn)酪劫,這里來介紹一下具體的實(shí)現(xiàn)邏輯吞鸭。
早前的卡渲采用的Shading邏輯都是二值化處理,即基于NdotL的數(shù)值來判斷當(dāng)前像素是處于亮部還是暗部覆糟,這樣導(dǎo)致的效果就是明暗交界過渡比較生硬刻剥,為了解決這個(gè)問題,就開始圍繞NdotL的取值做文章滩字,因?yàn)檫@個(gè)數(shù)值本身是個(gè)浮點(diǎn)數(shù)造虏,因此我們可以將二值化處理變成分段的多值化處理,還可以更進(jìn)一步麦箍,基于這個(gè)數(shù)值來對(duì)一張顏色貼圖(稱之為ramp圖)進(jìn)行采樣漓藕,得到更為柔和的效果,就如上圖所示挟裂。
關(guān)于ramp圖享钞,其實(shí)有很多不同的用法,下面做一下簡(jiǎn)單的整理:
- 一維Ramp圖
比如有人基于這個(gè)數(shù)值來對(duì)shading的暗部判定邏輯進(jìn)行調(diào)整從而得到更符合需要的明暗變化:
float NdotL = dot(L, N)*0.5 + 0.5 // half-lambert
float ShadowLerp = SAMPLE_TEXTURE2D(RampTexture, 1 - NdotL)
float3 Diffuse = lerp(BaseColor, ShadowColor, ShadowLerp)
又比如基于采樣ramp圖來對(duì)Shading Color進(jìn)行調(diào)節(jié):
float NdotL = dot(L, N)*0.5 + 0.5
float ShadowLerp = SAMPLE_TEXTURE2D(RampTexture, 1 - NdotL)
float3 Diffuse = BaseColor * ShadowLerp
- 二維Ramp圖
根據(jù)二維Ramp圖采樣的UV坐標(biāo)含義不同诀蓉,我們有不同的用法
2.1 TOD+MaterialID
上面這張Ramp圖可以分成上下兩半栗竖,上面的暖色調(diào)(三行顏色)對(duì)應(yīng)的是白天的參數(shù),下面的冷色調(diào)(三行顏色)對(duì)應(yīng)的是晚上的參數(shù)交排。而水平坐標(biāo)對(duì)應(yīng)的實(shí)際上材質(zhì)ID划滋,基于不同的材質(zhì)ID,我們可以得到不同的顏色埃篓,從而可以為不同的物件指定不同的顏色疊加效果处坪。
2.2 LightingAngle+Distance
也有人將橫坐標(biāo)解釋成NdotL,縱坐標(biāo)解釋成到相機(jī)的距離的架专,從而可以實(shí)現(xiàn)顏色隨著遠(yuǎn)近而變化的效果
2.3 LightingAngle+MaterialID
這個(gè)方案就是崩壞所使用的方案同窘,橫坐標(biāo)跟上面一樣,為NoL部脚,縱坐標(biāo)則為材質(zhì)ID想邦,從而使得不同的材質(zhì)可以有不同的顏色變化效果。
不過這里其實(shí)并不是直接簡(jiǎn)單采樣就拿來使用委刘,還做了比較多細(xì)節(jié)處理:
- 一張Ramp圖會(huì)分成多個(gè)通道丧没,每個(gè)通道用于控制一個(gè)layer的疊色
- 而每個(gè)通道的數(shù)值其實(shí)可以理解成每個(gè)layer顏色的權(quán)重,我們可以指定每個(gè)通道對(duì)應(yīng)的顏色锡移,以及對(duì)應(yīng)權(quán)重的偏移值:
整體的計(jì)算公式給出如下:
float3 Tint = SAMPLE_TEXTURE2D(RampTexture, float2(NdotL, MaterialID))
float3 TintHigh = Tint.r * TintHighColor
float3 TintMed = (Tint.g + TintMedOffset) * TintMedColor
float3 TintLow = (Tint.b + TintLowOffset) * TintLowColor
float3 TintColor = saturate(TintBaseColor + TintHigh + TintMed + TintLow)
這里給出了不同疊加層數(shù)下的不同效果呕童。
通過對(duì)ramp圖的調(diào)整,我們可以實(shí)現(xiàn)軟硬切換的效果淆珊,且必要的時(shí)候夺饲,還可以為同一個(gè)角色的不同部位賦予不同的軟硬程度。
明暗的漸變效果看起來不錯(cuò),但也不是所有部位都需要往声,比如臉部就不要這個(gè)效果擂找,因此這里還增加了一張mask圖用于控制需要進(jìn)行漸變的區(qū)域
這里的陰影看起來不是基于光源視角的,而是基于相機(jī)視角(或者說基于相機(jī)視角做一個(gè)調(diào)整)產(chǎn)生陰影貼圖浩销,之后根據(jù)偏移+陰影貼圖采樣來實(shí)現(xiàn)的效果贯涎,且透明物體也會(huì)參與到陰影貼圖的繪制中去。
眼睛增加了折射效果撼嗓,折射的原理就是將打在球面(眼球)上的射線按照折射原理做一個(gè)偏轉(zhuǎn)柬采,并基于偏轉(zhuǎn)后的方向完成貼圖采樣。
因?yàn)楸砻娌⒉皇瞧秸那揖凑账鼓╯nell)定律來求取折射向量會(huì)比較復(fù)雜粉捻,《RTR》中給出了一個(gè)擬合公式:
具體的推導(dǎo)過程可以參考Faster Refraction Formula, and Transmission Color Filtering
有了折射向量,就能夠算出偏移值:
如上圖所示斑芜,入射點(diǎn)處的eye forward direction我們標(biāo)注為Up肩刃,Up跟折射向量Refract所夾的銳角我們記為theta,Up與不做折射時(shí)的向量Direct所夾的銳角杏头,記為alpha盈包,那么我們就有:
這里的height是入射點(diǎn)到水平面的高度,得到上述偏移向量后醇王,將之與(眼球)貼圖的U方向的向量(世界空間)以及V方向的向量(世界空間)點(diǎn)乘就得到了UV偏移值(上圖公式給的應(yīng)該是簡(jiǎn)化版本)呢燥。
眼睛繪制的另一項(xiàng)重要特征是焦散(Caustic),人眼結(jié)構(gòu)如下圖所示:
由于前房區(qū)域可以看成是一個(gè)透鏡寓娩,而透鏡會(huì)有聚焦光線的作用叛氨,因而導(dǎo)致虹膜部分會(huì)形成焦散的亮斑,如下圖所示:
回到崩3這邊的實(shí)現(xiàn)棘伴,由于卡渲并不追求物理真實(shí)寞埠,只要好看就可以了,因此完全可以把焦散繪制到貼圖上焊夸,崩3采用的也是類似做法:
- 添加一張Caustic Mask圖仁连,用于控制哪些區(qū)域會(huì)存在焦散亮斑
- 由于卡渲的特殊,米哈游希望焦散效果出現(xiàn)在入射光線的另一側(cè)阱穗,所以這里通過對(duì)diffuse計(jì)算邏輯進(jìn)行翻轉(zhuǎn)(將入射光線沿著法線做對(duì)稱翻轉(zhuǎn))來模擬光照的變化饭冬,之后輔助菲涅爾公式(光在進(jìn)入不同介質(zhì)時(shí)會(huì)存在反射與折射,這個(gè)公式揭露了反射光強(qiáng)與折射光強(qiáng)的比例)來調(diào)節(jié)焦散強(qiáng)度的變化
眼睛的最終渲染效果如圖所示揪阶,下面來看下頭發(fā)渲染昌抠。
這里先列幾個(gè)期望達(dá)成的渲染要點(diǎn):
- 要能做到所見即所得的效果調(diào)節(jié),即對(duì)參數(shù)或者貼圖的調(diào)整遣钳,要能立馬看到效果
- 要支持基于切線的各項(xiàng)異性
- 支持多層高光效果
- 支持隨著粗糙度而變化的光照表現(xiàn),且能夠支持隨著視角或光照的變化而跟隨流動(dòng)的效果與頭發(fā)之間的AO遮擋
頭發(fā)渲染的一個(gè)重要特征是高光,最常用的模型是Kajiya-Kay(簡(jiǎn)稱kk)蕴茴,這個(gè)模型是目前渲染頭發(fā)比較常用的劝评,《神壕氲恚》以及這里的崩壞都用的這個(gè)模型蒋畜。
相對(duì)于普通物件的高光使用的NoH,這里使用的是ToH撞叽,但實(shí)際推導(dǎo)起來姻成,兩者其實(shí)是對(duì)等的:
kk高光項(xiàng)計(jì)算規(guī)則給出如下:
可以看到,這個(gè)公式跟上面崩壞使用的代碼是吻合的
前面說到愿棋,崩壞這里用了兩層高光科展,分別是低頻跟高頻,不確定是否每一層都用的kk(相當(dāng)于采用的是Marschner模型了)糠雨,為了模擬動(dòng)漫中類似于電磁波抖動(dòng)的效果才睹,這里對(duì)高光做了抖動(dòng):
shift = Sample(NoiseTex, shiftUV)
shiftedT = T + shift * N
newTangent = normalize(shiftedT)
首先對(duì)采樣坐標(biāo)進(jìn)行處理,得到噪聲貼圖的采樣坐標(biāo)甘邀,基于這個(gè)坐標(biāo)得到抖動(dòng)的幅度琅攘,基于抖動(dòng)幅度利用法線對(duì)切線進(jìn)行調(diào)整,從而實(shí)現(xiàn)高光在發(fā)束上下移動(dòng)的效果松邪。
這里給出兩層高光的效果坞琴。
這里給出另一種高光實(shí)現(xiàn)方案,這里的高光想要實(shí)現(xiàn)順著發(fā)絲移動(dòng)的效果逗抑,且形狀能夠隨著位置的不同而變化剧辐。
要想實(shí)現(xiàn)這種效果:
- 需要確保每一縷頭發(fā)的uv是順著發(fā)絲而平滑變化的(方便基于uv計(jì)算出切線,否則就需要用flowmap來獲取切線)
- 對(duì)于每一縷發(fā)束锋八,需要通過某個(gè)貼圖標(biāo)識(shí)出其左邊界與右邊界浙于,從而可以實(shí)現(xiàn)從左到右高光形狀的變化,并用多個(gè)曲線來定義高光模板實(shí)現(xiàn)不同的高光效果
- 之后挟纱,同樣使用一張?jiān)肼曎N圖來控制抖動(dòng)(高光粗細(xì))
- 在材質(zhì)上羞酗,添加若干參數(shù)用于控制高光的形狀、偏移等紊服,從而實(shí)現(xiàn)各種不同的高光形狀
另一個(gè)需要各向異性高光的材質(zhì)是絲綢檀轨,崩3這邊的做法是利用副切線來進(jìn)行計(jì)算,并使用了三層高光疊加的方式來實(shí)現(xiàn)欺嗤,每種高光都可以分配不同的顏色参萄。
這里沒有具體介紹高光的計(jì)算方法,也沒有給出三層高光的計(jì)算區(qū)別煎饼,不過移動(dòng)端角色渲染(絲綢篇)對(duì)PBR下的寫實(shí)高光計(jì)算邏輯進(jìn)行了梳理讹挎,大概思路給出如下:
- 獲取某個(gè)點(diǎn)的各項(xiàng)異性數(shù)值anisotropy,并基于這個(gè)數(shù)值計(jì)算出在切線T與副切線B方向上的粗糙度:
anisoAspect = sqrt(1 - 0.9 * anisotropy)
roughnessT = roughness / anisoAspect
roughnessB = roughness * anisoAspect
- 基于T、B以及對(duì)應(yīng)的roughness計(jì)算G項(xiàng)跟D項(xiàng)筒溃,F(xiàn)項(xiàng)不受各項(xiàng)異性影響
- 基于計(jì)算得到的GDF马篮,計(jì)算對(duì)應(yīng)的高光
- 為了得到更逼真的高光效果,通常需要對(duì)法線做偏移調(diào)整
說回到崩3的3層高光怜奖,推測(cè)可以在兩個(gè)層面做文章:
- 為不同層指定不同的anisotropy或roughness
- 為不同層指定不同的法線偏移參數(shù)
這里是演示效果浑测,看起來還挺贊的
這里介紹一些特殊的裝飾材質(zhì),如水晶等需要折射效果的透明材質(zhì)歪玲,以及紗巾等需要模糊的半透材質(zhì)迁央,具體實(shí)現(xiàn)邏輯沒什么好介紹的,其中一個(gè)可以說一下的優(yōu)化點(diǎn)是這里的折射與模糊不是針對(duì)全屏的滥崩,而是針對(duì)角色(繪制一個(gè)proxy mesh岖圈,這個(gè)mehs通常是對(duì)應(yīng)的角色,或者更精簡(jiǎn)一點(diǎn)夭委,只繪制半透物件對(duì)應(yīng)區(qū)域)覆蓋的區(qū)域的
下面來看看描邊算法幅狮。描邊使用的是基于法線外擴(kuò)的方案,只針對(duì)角色以及動(dòng)態(tài)物體使用株灸,并且通過頂點(diǎn)屬性來控制描邊的粗細(xì)崇摄,從而可以實(shí)現(xiàn)發(fā)梢描邊逐漸變細(xì)最終縮小為0的效果,且描邊粗細(xì)還會(huì)隨著到鏡頭的距離做動(dòng)態(tài)調(diào)整慌烧。
此外逐抑,不同的材質(zhì),其描邊顏色也是可以控制的(這里沒有介紹是基于頂點(diǎn)屬性還是貼圖來實(shí)現(xiàn))
對(duì)于幾何邊緣而言屹蚊,法線外擴(kuò)方案就夠了厕氨,但是對(duì)于一些非幾何邊緣,如一些色彩邊緣來說汹粤,這個(gè)方案就無能為力了命斧,崩3的做法是通過一個(gè)預(yù)處理(沒有介紹預(yù)處理是在什么時(shí)候完成,是一次性的嘱兼,還是每幀都需要国葬,從理論上推測(cè),可以做成一次性的芹壕,在開發(fā)階段就制作完成汇四,比如將之保存成一個(gè)額外的mesh,之后通過geometry shader完成對(duì)應(yīng)的線條勾勒)來搜集這些邊緣的數(shù)據(jù)踢涌,并且基于與法線外擴(kuò)方案同一套控制參數(shù)(頂點(diǎn)屬性控制粗細(xì)等邏輯通孽,以及描邊顏色控制邏輯等)來對(duì)效果進(jìn)行調(diào)整,確保全屏效果一致睁壁。
場(chǎng)景的描邊背苦,通常是基于normal與depth的邊緣檢測(cè)后處理實(shí)現(xiàn)的互捌,但是這種方案的問題在于描邊的寬度不好控制,雖然能夠基于深度來控制行剂,但是其調(diào)整范圍是有限的疫剃,只能實(shí)現(xiàn)少數(shù)幾個(gè)像素尺寸的調(diào)整(為什么?)硼讽,所以不適合角色等距離相機(jī)較近的人物(較近的話,就只能考慮基于法線外擴(kuò)來實(shí)現(xiàn)了)牲阁。
除了普通的描邊之外固阁,這里還介紹了一種比較復(fù)雜的筆刷描邊方案,其實(shí)現(xiàn)步驟給出如下:
- 輪廓線提瘸蔷铡:從Mesh上提取輪廓邊备燃,可以分為Sharp Edge和Smooth Edge兩種
- 連接輪廓線:根據(jù)模型的拓補(bǔ)關(guān)系,將相鄰的輪廓邊連接成盡可能長(zhǎng)的輪廓線(是不是離線計(jì)算會(huì)比較合適凌唬?)
- 輪廓線分段:在步驟2的基礎(chǔ)上并齐,根據(jù)輪廓線上曲率和可見性的變化,將輪廓線在曲率或可見性的突變處分開
- 筆觸映射:將想要添加的筆觸(某種人工繪畫時(shí)會(huì)呈現(xiàn)的一種特定的描邊效果)制作成紋理貼圖客税,根據(jù)對(duì)應(yīng)的紋理坐標(biāo)映射到步驟3的輪廓線上
這種方案實(shí)現(xiàn)的描邊效果更為風(fēng)格化况褪,但是性能消耗較高,不太適合用在實(shí)時(shí)更耻,離線的CG制作倒是可以测垛。
下面來看下崩3中的特效或后處理效果。
這里展示了體積光+bloom的效果秧均,可以說是非常的抓人眼球了食侮。
來看下體積光是如何實(shí)現(xiàn)的:
- 看起來是用的Unity自帶的功能,通過曲線來控制體積光的形狀
- 可以通過曲線在運(yùn)行時(shí)調(diào)整體積光的形狀與強(qiáng)度(顏色)
- 增加了一張3D噪聲貼圖模擬霧氣動(dòng)態(tài)變化的效果
- 增加了Cookie Map用于控制體積光投影的形狀(這個(gè)沒有細(xì)說目胡,不太理解锯七,不過不重要)
- 通過藍(lán)噪聲抖動(dòng)+TAA來降低體積光采樣頻率過低導(dǎo)致的鋸齒問題
開了GI,支持基于視頻的動(dòng)態(tài)自發(fā)光與體積聚光
為角色添加了動(dòng)態(tài)AO誉己,基于魔改后的HBAO實(shí)現(xiàn)
這里是用到的一些屏幕空間后處理效果眉尸,部分如Lens Flare需要為卡渲風(fēng)格做特定調(diào)整(這里使用與bloom類似的方式提取的高光區(qū)域作為輸入,然后進(jìn)行多次不同方向上的卷積并應(yīng)用色彩調(diào)制來獲得最終結(jié)果)
這里展示的是CG畫質(zhì)的渲染效果巫延,看起來還是挺不錯(cuò)的
為了得到高畫質(zhì)的場(chǎng)景效果效五,崩壞3采用的策略是在PBR的基礎(chǔ)上對(duì)其做風(fēng)格化調(diào)整,使之表現(xiàn)接近動(dòng)畫風(fēng)格:
- 對(duì)于色彩的做了卡通化調(diào)整
- 對(duì)于物體材質(zhì)細(xì)節(jié)根據(jù)需要進(jìn)行強(qiáng)調(diào)或省略
- 結(jié)合使用圖像空間的勾線來強(qiáng)調(diào)物體邊緣
這里是效果展示炉峰。
角色的表情是基于blendshape制作實(shí)現(xiàn)的:
- 將眼睛畏妖,嘴巴和眉毛拆分為單獨(dú)的部件,分別控制其表情變化
- 自研了一套面部表情插件疼阔,用于實(shí)現(xiàn)表情動(dòng)畫的及語(yǔ)音嘴型的自動(dòng)映射
- 預(yù)定義了一個(gè)包含豐富表情的集合戒劫,在角色交互的時(shí)候根據(jù)需要從中選用以驅(qū)動(dòng)面部表情半夷。
這里介紹了角色動(dòng)畫實(shí)現(xiàn)上的一些細(xì)節(jié):
在Unity中如果使用humanoid作為動(dòng)畫導(dǎo)入方式,當(dāng)關(guān)節(jié)處旋轉(zhuǎn)角度較大時(shí)迅细,關(guān)節(jié)處的形狀可能無法滿足項(xiàng)目組對(duì)動(dòng)畫品質(zhì)的期望, 解決方案是:
1.1 在DCC中為每關(guān)節(jié)添加一個(gè)修正的blendshape巫橄,并將之一并導(dǎo)入到Unity以防止關(guān)節(jié)形變
1.2 由一個(gè)腳本來根據(jù)關(guān)節(jié)旋轉(zhuǎn)角度來對(duì)形狀進(jìn)行插值混合,為了確保效果茵典,每個(gè)關(guān)節(jié)會(huì)需要分別制作兩個(gè)blendshape湘换,一個(gè)用于90度,另一個(gè)用于140度以對(duì)關(guān)節(jié)形變補(bǔ)償
- 另一種解決方法是使用額外的骨骼進(jìn)行關(guān)節(jié)修正统阿,這種方法更容易制作彩倚,但是對(duì)于結(jié)構(gòu)細(xì)節(jié)的優(yōu)化效果不如上一種使用blendshape的方案
流體和破碎是使用alembic格式,或者EXR貼圖作為載體從Houdini或其他DCC工具導(dǎo)入的頂點(diǎn)動(dòng)畫實(shí)現(xiàn)的扶平。
基于貼圖的頂點(diǎn)動(dòng)畫由于是在GPU上計(jì)算實(shí)現(xiàn)的帆离,其執(zhí)行效率及加載速度要快于alembic格式
實(shí)時(shí)卡通渲染在今后可以繼續(xù)改進(jìn)和完善的地方:
- 實(shí)現(xiàn)所有類型材質(zhì)完全可定制的風(fēng)格化渲染,目前崩3只在人物皮膚和服裝渲染中的應(yīng)用了筆刷以獲得筆觸效果结澄,后續(xù)會(huì)考慮將其擴(kuò)展到整個(gè)場(chǎng)景的渲染哥谷,比如實(shí)現(xiàn)類似新海誠(chéng)式的場(chǎng)景風(fēng)格,以呈現(xiàn)有著獨(dú)特且統(tǒng)一的風(fēng)格化動(dòng)畫風(fēng)格渲染麻献。
- 進(jìn)一步提高模型的渲染精度们妥,最終期望實(shí)時(shí)呈現(xiàn)CG級(jí)的模型精度,比如可以考慮使用geometry shader或預(yù)烘培displacement map進(jìn)行動(dòng)態(tài)自適應(yīng)的曲面細(xì)分勉吻,相比直接導(dǎo)入原始高模王悍,它可以極大減少資源導(dǎo)入的開銷和提升運(yùn)行效率
- 優(yōu)化整套流程解決方案,使之更易于實(shí)時(shí)調(diào)整和編輯餐曼,進(jìn)一步提升運(yùn)行效率以適合在游戲中使用
參考
[1]. Achieving high quality Anime style rendering on Unity
[2]. 米哈游技術(shù)總監(jiān)首次分享:移動(dòng)端高品質(zhì)卡通渲染的實(shí)現(xiàn)與優(yōu)化方案