發表文章

Paint Demo

圖片
  Paint Demo 前些日子,幫朋友研究了下 POWERWASH SIMULATOR 這款遊戲的噴槍效果。 實現思路大致是: 1.在標準 PBR材質上加上一張RT的遮罩,讓其物件 髒汙部分與原本的材質做 Blend。 2.物件加上碰撞體 (MeshCollider) ,藉由 射線(Ray) 取得物件與滑鼠的座標,Set Material 到 Shader 內計算出繪製範圍。 3.最後再將範圍 Blit 到對應到 RT上。 由於是 RT的遮罩,所以模型的 UV是不能有共用的部分。 這邊就用以前製作的火炮作展示影片。

3D MAX CustomShader

圖片
自從美術時期就開始跟3D MAX 相處了這麼多年,這次就來製作一下它的 Shader 撰寫方式與效果。 這邊使用了材質球選到 DirectXShader ,從調整 StandardFX11.fx 的方式來到渲染目的。 將 StandardFX11.fx 檔案開啟觀察,可以發現到 float4 std_PS(vertexOutput IN) : SV_Target { ... 的部分,這便是平時在寫片段著色器的位置。可以找到熟悉的基本元素 :  Ln (Light方向) , Vn (View方向) , Nn (Nromal方向) , Tn (Tangent方向) , Bn (Bitangent方向) 再來就可以找到  phong_shading 的 function ,這就是光照要調整的地方。 修改 DiffuseContrib 的光照模式 ,從原本的 litV.y * LightColor 改成 LightColor * Ramp  Ramp則是從簡表示,以一張貼圖代表光線亮暗的變化。 完成修改後,置入相應貼圖便可以達到基本的  Toon Shader 效果。 頭髮則是用異相性高光的 KK Hair 製作高光並且混合Ramp 光照。 最後 3D 模型則是用本人建模的模型 雷姆 來展示。

URP Render Underwater Transparent Objects

圖片
某天在圖學大佬的指導下,開始著手探究 URP 的渲染架構,在此記錄下一些知識點。 在一般的情況下Unity的渲染方式會依據 Shader 內的 Queue 標籤 順序渲染物件,所以在默認 狀況下,水的 Shader 是 Transparent 模式。但是這也會造成 其他 Transparent 的物件在水面下會無法顯示的情況。因此,我們可以對其渲染的機制順序做調整,來讓其餘的 Transparent 物件也能在水底下顯示。