02.25 次世代角色渲染技術概述

本篇再介紹一下關於次世代角色渲染技術,市面上佔主流的遊戲還是大型的次世代渲染,Unity自身提供了Standard和Standard(Specular),但是對於遊戲的品質來說還遠遠不夠,而且相對來說比較耗,這就需要我們自己去提升,其實新版的Unity給我們提供了Shader Graph作為Shader工具來說還是可以使用的,它相比Shader Forge好很多的。次世代渲染也可以成為PBR渲染,我們將它拆分開,涉及到的渲染技術如下所示:

次世代角色渲染技術概述

以上就是我們實現次世代渲染使用的技術點,在這裡就不介紹算法方程了,想具體瞭解的讀者可以自行查閱,其實已經有人幫助我們實現了,在這裡我們自己首先要知道如何使用它們?先給讀者看一下實現的效果圖:

次世代角色渲染技術概述

該模型實現了次世代渲染效果,高光,法線,反射,遮擋等等都實現了,其實我們只用了三張貼圖,如下所示:

次世代角色渲染技術概述

為什麼三張貼圖就可以實現次世代效果?這裡使用了圖片的合併,第一張貼圖和第二張貼圖一目瞭然,重點看第三章貼圖,在這裡我們使用了多張貼圖的合併,我們知道貼圖的顏色是由RGBA組成的,那麼我們合併的貼圖也是通過RGBA表示的,我們的R表示的是Metallic,G表示的是Smoothness,B表示的是Glow,A表示的是Occlusion。這樣我們也達到了優化的目的,看一下在Shader Graph中的效果圖:

次世代角色渲染技術概述

合併圖片的目的是為了減少系統的吞吐量,再就是也是優化角色渲染,我們把第三張貼圖給讀者分解,如下所示:

次世代角色渲染技術概述

貼圖處理的核心代碼如下所示:

SurfaceOutputStandard s6 = (SurfaceOutputStandard ) 0;

float2 uv_AlbedoMap = i.uv_texcoord * _AlbedoMap_ST.xy + _AlbedoMap_ST.zw;

s6.Albedo = ( _BaseColor * tex2D( _AlbedoMap, uv_AlbedoMap ) ).rgb;

float2 uv_NormalMap = i.uv_texcoord * _NormalMap_ST.xy + _NormalMap_ST.zw;

s6.Normal = WorldNormalVector( i , UnpackNormal( tex2D( _NormalMap, uv_NormalMap ) ) );

s6.Emission = float3( 0,0,0 );

float2 uv_MaskMap = i.uv_texcoord * _MaskMap_ST.xy + _MaskMap_ST.zw;

float4 tex2DNode1 = tex2D( _MaskMap, uv_MaskMap );

s6.Metallic = ( tex2DNode1.r * _Metallic );

s6.Smoothness = ( tex2DNode1.g * _Smooth );

s6.Occlusion = 1.0;


我們把Shader Graph轉化成Shader腳本讀起來還是比較簡單的,學習起來也是容易的,關於次世代渲染技術就給讀者介紹到這裡。


最後,如果你一直以來都對3d建模抱有強烈的學習興趣。卻不知道如何系統的進行學習。學習有困難或者想領取3d建模小白學習路線資料的請.私信小編

還是那個萬年不變的老規矩

1.評論文章,沒字數限制,一個字都行!

謝謝大家,祝大學有所成


分享到:


相關文章: