shader之——移動端次時代

來源:互聯網
上載者:User

標籤:燈光   9.png   dir   png   htc   自己的   rect   法線   資訊   

  做ta有兩年多了,市面上有比較多的次時代手遊出現,然而很多項目組還是望而卻步。最糾結的還是效率問題,

今天就按照自己的理解,聊聊如何可以做一個高效率的次時代手遊。

       次時代手遊,最有代表性的一塊,是情境,它在人的視野中佔據大部分比例,而情境最重要的是地表,所以今天

只談談地表的次時代製作。

一.貼圖部分

  首先,一個地表需要包含diffcuse、 bump、spemask 如

spemask 是可以放在diffuse的通道裡的,但是壓縮帶通道的貼圖就不是那麼容易了,所以把它提出來作為一張新的貼圖

而且只需要他的一個通道就可以了,其他的通道可以留著別的貼圖來使用,一張mask貼圖的rgb可以成為3張地表貼圖的

spemask,這樣看也不算特別的浪費。

二 模型部分

         這個模型沒什麼好說的,記得一個原則,大結構用模型做結構,小結構靠法線跟貼圖來表現,這是次時代的基本要求

能省則省

三 shader部分

         這個是個重點,我們會發現支援法線支援高光貼圖,那麼我們就需要一個即時燈光,不然烘焙完後,燈光關閉了,就sheng

下最原本的diffuse效果+烘焙圖效果了。如:左圖是烘焙前  右圖是烘焙後

 

 在烘焙後的基礎上,再加一盞Directional light,它的法線效果跟高光效果才會出來。但是加了一盞燈,就要考慮到即時光影,它的消耗是

可想而知的。囉嗦了半天,我們要實現的就是,在不要即時光的情況下如何?高光跟法線效果。那麼我就得從shader下手,在shader裡面

加上一個能類比即時燈光的變數

 

 一盞Directional light包含的表面資訊是

1 lightDir      方向

2 lightColor   顏色

3 Intensity     強度

 至於深層次的資訊,比如讓物體產生陰影 是否參與烘焙 ....... 等太多太多的東西,我想也是造成他影響效率的主要原因,但是對我們來說並

不重要,我們把這三個變數去替換shader中的light參數:

Properties部分

Shader "Game_XXX/Scenes/Ref_Static" {    Properties {                _HightLightStrength("HLStrength",Range(1,10)) = 1            _lightDir ("lightDir",vector) = (0,1,0,0)        _lightColor ("lightColor",Color) = (1,1,1,1)    }

我們將這3個參數去貼換真正燈光裡的這幾個參數,就可以了,結果如:

我們會發現,這個高光效果跟真正的光沒有區別,會跟著角色移動而動,而很難想象,這並不是即時光

為了效果明顯,故意把效果調的過強了...

總結:我們應該用這樣的方式去做次時代手遊,看到別的遊戲有光影變化效率卻很高的時候也不用詫異,並不一定是即時光

這隻是類比了平行光,點光源的原理也是如此......

 

shader之——移動端次時代

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.