Unity3d中BlinnPhong光照模型

Unity3d中BlinnPhong光照模型

本Markdown編輯器使用StackEdit修改而來,用它寫博客,將會帶來全新的體驗哦:

  • Markdown和擴展Markdown簡潔的語法
  • 代碼塊高亮
  • 圖片鏈接和圖片上傳
  • LaTex數學公式
  • UML序列圖和流程圖
  • 離線寫博客
  • 導入導出Markdown文件
  • 豐富的快捷鍵

快捷鍵

  • 加粗 Ctrl + B
  • 斜體 Ctrl + I
  • 引用 Ctrl + Q
  • 插入鏈接 Ctrl + L
  • 插入代碼 Ctrl + K
  • 插入圖片 Ctrl + G
  • 提升標題 Ctrl + H
  • 有序列表 Ctrl + O
  • 無序列表 Ctrl + U
  • 橫線 Ctrl + R
  • 撤銷 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及擴展

Markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文本格式編寫文檔,然後轉換成格式豐富的HTML頁面。 —— [ 維基百科 ]

使用簡單的符號標識不同的標題,將某些文字標記爲粗體或者斜體,創建一個鏈接等,詳細語法參考幫助?。

本編輯器支持 Markdown Extra ,  擴展了很多好用的功能。具體請參考Github.

表格

Markdown Extra 表格語法:

項目 價格
Computer $1600
Phone $12
Pipe $1

可以使用冒號來定義對齊方式:

項目 價格 數量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

定義列表

Markdown Extra 定義列表語法:
項目1
項目2
定義 A
定義 B
項目3
定義 C

定義 D

定義D內容

代碼塊

代碼塊語法遵循標準markdown代碼,例如:

Shader "zff/test"
{
    Properties
    {
        //主色調,用於定義物體的基色
        _Color("Main Color",Color)=(1,1,1,1)
        //高光顏色,如果使用BlinnPhong光照模型,則定義高光必須命名_SpecColor,並且,只有變量定義,在surface shader中看不到是哪裏使用的,使用改變量的地方隱藏了
        _SpecColor("SpecColor Color",Color)=(0.5,0.5,0.5,1)
        //材質的光澤度,反映無題表面的光澤程序,又叫高光直樹,定義範圍(0,1]之間,其值越大,反射光越幾種
        _Shininess("Shininess",Range(0.01,1)=0.078125
        //主紋理,用於定義物體基色
        _MainTex("Base (RGB) Gloss(A)",2D) = "white"{}
    }
    SubShader
    {
        //繪製類型,只是用於Replaced Shaders的標記,並不是必須的
        //如果需要定義對象的繪製順序,請使用Queue標記
        Tags{"RenderType"="Opaque"}
        LOD 300
        CGPROGMA
        //定義着色器類型爲surface,着色器入口爲surf,光照模型爲BlinnPhong
        #pragma surface surf BlinnPhong
        sampler2D _Maintex;
        fixed4 _Color;
        half _Shininess;
        struct Input
        {
            //Unity3D中Shader的默認規則,紋理定義前面加uv前綴表示是對應的紋理座標
            float2 uv_MainTex;
        };
        void surf(Input IN,inout SurfaceOutput o)
        {
            //取主紋理當前對應像素點的值
            fixed4 tex = tex2D(_MainTex,IN.uv_MainTex);
            // Albedo反照率,即物體反射光的數量與外來光數量的比值
            // Albedo = 主紋理 * 主色調,反映了物體的基色,與任何光相關的信息(比如diffuse,shiness等)無關
            output.Albedo = tex.rgb * _Color.rgb;
            //Gloss光滑度[0,1],用於控制反射的模糊程度,值越大,高光反射越清晰,反之越模糊
            //光滑度的"滑"是面的概念,代表無題整體的光滑程度
            // 比如說,同樣一塊金屬,其反射就會慢慢變弱,可以通過Gloss值控制
            //實際上它是針對高光計算的附加係數
            output.Gloss = tex.a;
            //Alpha,不透明度[0,1]:Alpha=0,代表物體完全透明:Alpha=1,表明物體完全不透明
            output.Alpha = tex.a*_Color.a;
            //Shininess光澤度[0,1],又叫高光指數或者鏡面反射指數,注意,它在SurfaceOutput結構中的命名(Specular)很容易讓人誤解它是高光強度,其實不然,它是高光指數
            output.Specular = _Shinness;
        ENDCG
    }
    //如果當前GPU不支持shader,默認使用VertexList
    //Fallback "Diffuse"
    Fallback "VertexList"
}

腳註

生成一個腳註1.

目錄

[TOC]來生成目錄:

數學公式

使用MathJax渲染LaTex 數學公式,詳見math.stackexchange.com.

  • 行內公式,數學公式爲:Γ(n)=(n1)!nN 
  • 塊級公式:

x=b±b 2 4ac − − − − − − −   2a  

更多LaTex語法請參考 這兒.

UML 圖:

可以渲染序列圖:

Created with Raphaël 2.1.0張三張三李四李四嘿,小四兒, 寫博客了沒?李四愣了一下,說:忙得吐血,哪有時間寫。

或者流程圖:

Created with Raphaël 2.1.0開始我的操作確認?結束yesno
  • 關於 序列圖 語法,參考 這兒,
  • 關於 流程圖 語法,參考 這兒.

離線寫博客

即使用戶在沒有網絡的情況下,也可以通過本編輯器離線寫博客(直接在曾經使用過的瀏覽器中輸入write.blog.csdn.net/mdeditor即可。Markdown編輯器使用瀏覽器離線存儲將內容保存在本地。

用戶寫博客的過程中,內容實時保存在瀏覽器緩存中,在用戶關閉瀏覽器或者其它異常情況下,內容不會丟失。用戶再次打開瀏覽器時,會顯示上次用戶正在編輯的沒有發表的內容。

博客發表後,本地緩存將被刪除。 

用戶可以選擇 把正在寫的博客保存到服務器草稿箱,即使換瀏覽器或者清除緩存,內容也不會丟失。

注意:雖然瀏覽器存儲大部分時候都比較可靠,但爲了您的數據安全,在聯網後,請務必及時發表或者保存到服務器草稿箱

瀏覽器兼容

  1. 目前,本編輯器對Chrome瀏覽器支持最爲完整。建議大家使用較新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下問題
    1. 不支持離線功能
    2. IE9不支持文件導入導出
    3. IE10不支持拖拽文件導入


  1. 這裏是 腳註內容.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章