1. 程式人生 > >Shader之學習筆記七

Shader之學習筆記七

//獲取Unity引擎原始碼:加群580392083


Shader "Unity Shaders Book/Chapter 6/DiffuseVertexLevel"{


Properties{
_Diffuse("Diffuse",Color)=(1,1,1,1)
}


SubShader{
Pass{
Tags{"LightMode"= "ForwardBase"} //LightMode:用於定義該pass在Unity光照流水線中的角色,只有定義了正確的LightMode,我們才能夠得到一些Uniytn內建的光照
CGPROGRAM
#pragma vertex vert//vert:頂點著色器的名字
#pragma  fragment frag//frag:片元著色器的名字
#include "Lighting.cginc"

//為了使用Properties中定義的_Diffuse變數 需要定義一個和該屬性型別相匹配的變數
fixed4 _Diffuse;

//頂點著色器的輸出或者說是片元著色器的輸入
struct a2v
{
float4 vertex:POSITION;
float3 normal:NORMAL;//NORMAL:告訴Unity要把模型頂點的法線資訊儲存到normal變數中
};
//定義一個片元著色器的輸入
struct v2f
{
float4 pos:SV_POSITION;
fixed3 color:Color;
};


//頂點著色器
v2f vert(a2v v){


v2f o;
o.pos = mul(UNITY_MATRIX_MVP,v.vertex); //頂點模型座標轉換為裁剪座標
fixed3 ambients = UNITY_LIGHTMODEL_AMBIENT.xyz; //獲取環境光 
fixed3 wroldNormal = normalize(mul(v.normal,(float3x3)_World2Object));//Page129  把模型的法線轉換為世界座標的法線  最後進行歸一化
fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz); //獲取世界座標中光的方向
fixed3 diffuses = _LightColor0.rgb*_Diffuse.rgb*saturate(dot(wroldNormal,worldLight));//計算漫反射光
o.color = ambients + diffuses;


return o;
}


//片元著色器
fixed4 frag(v2f i):SV_TARGET{
return fixed4(i.color,1.0);
}


ENDCG

}


}
FallBack "DIFFUSE"
}

相關推薦

Shader學習筆記

//獲取Unity引擎原始碼:加群580392083 Shader "Unity Shaders Book/Chapter 6/DiffuseVertexLevel"{ Properties{

Shader學習筆記

//獲取Unity引擎原始碼:加群580392083 //逐頂點高光反射效果 Shader "Unity Shaders Book/Chapter 6/Specular Vertex-Leve" { Properties{ _Diffuse("Diffuse",Col

Java學習筆記:Java的流程控制語句switch

獎品 出現 字符型 -s png 結束 ase 選項 分享圖片 Java條件語句之 switch   當需要對選項進行等值判斷時,使用 switch 語句更加簡潔明了。例如:根據考試分數,給予前四名不同的獎品。第一名,獎勵筆記本一臺;第二名,獎勵 IPAD 2 一個

JSP學習筆記Cookie

首先提一下http協議的無狀態性,指的是伺服器不會記住已經給它發過請求的客戶端。每次收到請求都會認為是一個新的客戶端發過來的。(即:伺服器不會記住給他發過請求的客戶端)。 所以這個時候我們就需要使用Cookie來儲存使用者的狀態。   Cookie指web伺服器儲存在客戶端的一

嵌入式核心及驅動開發學習筆記) 非阻塞模式+中斷實現讀取資料

當中斷髮生時,驅動程式會跳轉到中斷處理的函式入口,實現了中斷的捕獲和處理,但這樣還不夠。要讓使用者能夠獲取到中斷分析的結果,我們將建立一個描述中斷事件的結構體物件。硬體產生中斷後,驅動程式碼將對中斷事件的分析結果儲存在結構體變數中,使用者需要的時候,直接通過介面函式獲取這個結構體的資料。 核心層

嵌入式核心及驅動開發學習筆記(十) 裝置樹的定義規則和獲取方法

概述 在Linux 2.6中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥著大量的垃圾程式碼,相當多數的程式碼只是在描述板級細節,而這些板級細節對於核心來講,不過是垃圾,如板上的platform裝置、resource、i2c_board_info、sp

Spring MVC(學習筆記)控制器的註解(六) -處理跨域操作(@CrossOrigin)

@CrossOrigin  進行跨域資源訪問的處理操作 在這個案例中我返回的值為json型別,所以我們要先引用jars,pom.xml檔案: <dependency> <groupId>com.alibaba</groupId>

redis學習筆記持久化

redis是一個支援持久化的記憶體資料庫,也就是說redis需要經常將記憶體中的資料同步到磁碟來保證持久化。redis支援兩種持久化方式,一種是 Snapshotting(快照)也是預設方式,另一種是Append-only file(縮寫aof)的方式。下面分別介紹Sn

Zookeeper學習筆記主從節點任務分配

主從節點任務分配      通過前面的學習持久節點和臨時節點,我們知道可以通過建立持久節點和臨時節點配合進行主從任務的分配,下面實現一個小小的例子      前提,已經安裝好了Zookeeper服務端,執行zkServer指令碼啟動服務端,開啟zkCli客戶端連線到服務端

[網絡篇]ESP8266-NonOS學習筆記()物聯網標配MQTT初相識

data- 建立 link for 。。 5.0 class sig tail 恭祝各位豬年大吉,今天是大年初一,放假回家四五天了,講真的擱家比上班還累。。。今夜得閑覺得不能把時間浪費掉,得活躍活躍腦袋瓜,這幾天在家喝酒喝的感覺都變笨了。 閑話少說,還是進入正題吧,

深入理解 Java 虛擬機學習筆記(1)

over 信息 hotspot 體系 ima 模塊化 介紹 style 創建 本書結構: 從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模塊化,以及JDK的編譯 講解了JVM的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產

Android第一行代碼學習筆記---活動的生命周期

帶來 並不是 androi style 屏幕 ide instance 定位 -o @1.返回棧 Android中的活動是可以層疊的,我們每啟動一個新的活動,就會覆蓋在原活動之上,然後點擊Back鍵就會銷毀最上面的活動,下面一個活動就會重新顯示出來。 Android是使用任

Python學習筆記:文件操作

dex enc 只讀 python nco 打印 如何 == continue 文件操作 對照一個word文件的操作方式,來體會文件操作的內容 打開文件:f=open(“file”),提示編碼錯誤,windows默認是GBK f=open(“file”,encoding=”

ASP.NET MVC Bundles 學習筆記

sax asp.net 發現 ati mvc cti java 意思 學習 在網頁中,我們經常需要引用大量的javascript和css文件,在加上許多javascript庫都包含debug版和經過壓縮的release版(比如jquery),不僅麻煩還很容易引起混亂,所以A

Java學習筆記---父類構造方法有無參數對子類的影響

als core npr 筆記 java學習筆記 def 權限 必須 void 子類不繼承父類的構造方法,但父類的構造方法對子類構造方法的創建有影響。具體來說就是: ①.當父類沒有無參構造方法時,子類也不能有無參構造方法;且必須在子類構造方法中顯式以super(參數)的形式

斯坦福2014機器學習筆記----應用機器學習的建議

訓練集 image 是的 bsp 推斷 學習曲線 正則 偏差 wid 一、綱要   糾正較大誤差的方法   模型選擇問題之目標函數階數的選擇   模型選擇問題之正則化參數λ的選擇   學習曲線 二、內容詳述   1、糾正較大誤差的方法   當我們運用訓練好了的模型來做預測時

Linux學習筆記()---CentOS7單用戶模式

切換 chroot 單用戶 顯示 oot src 分享 學習筆記 img 在CentOS7中,有一個單用戶模式,類似windows下的安全模式。如果我們忘記了root的密碼,可以在單用戶模式下重置。註意:此操作必須在服務器面前操作,無法遠程操作。1.重啟機器,在系統登陸選擇

AWS學習筆記()--集成SQS和Lambda

n) eip mha 調整 scope 根據 直接 ast fun 本文介紹了集成SQS和Lambda的方法,代碼基於JAVA SDK。 POM配置 <dependencies> <dependency> <ar

python + unittest 做單元測試學習筆記

stl unittest 例子 gin pre log script 有關 assert 單元測試在保證開發效率、可維護性和軟件質量等方面有很重要的地位,所謂的單元測試,就是對一個類,一個模塊或者一個函數進行正確性檢測的一種測試方式。 這裏主要是就應用 python + u

python學習筆記():面向對象編程、類

單繼承 之前 麻煩 適合 popu 性別 實例 派生 ext 一、面向對象編程 面向對象--Object Oriented Programming,簡稱oop,是一種程序設計思想。在說面向對象之前,先說一下什麽是編程範式,編程範式你按照什麽方式來去編程,去實現一個功能。舉個