原创 UnityShader入門精要學習筆記(一):渲染流水線

流水線:一種流水化作業方式,指的是每一個生產單位只專注處理某一個片段的工作,以提高效率以及產能 一.【綜述】渲染流水線,What is it? 1.輸入三維場景然後輸出一個二維圖像,整個過程中各個處理元件只處理某一個片段的工作和

原创 UnityShader入門精要學習筆記(十六):紋理動畫

一.簡介 紋理動畫在遊戲中的應用非常廣泛。尤其是在各種資源都比較侷限的移動平臺上,我們往往會使用紋理動畫來代替複雜的粒子系統等模擬各種動畫效果。 二.序列幀實現爆炸效果 1.思路 使用一個nXn的序列圖,通過floor操作

原创 UnityShader入門精要學習筆記(七):基礎紋理之單張紋理

一 .基礎紋理應用 紋理的最初目的就是使用一張圖片來控制模型的外觀。使用紋理映射技術,我們可以吧一張圖“黏”在模型表面,逐紋素(texel)(名字是爲了和逐像素進行區分)地控制模型的顏色。 結合之前的光照模型的單張紋理應用: //

原创 UnityShader入門精要學習筆記(四):光照模型理論

一.Lambert(蘭伯特)模型 Lambert是理想的漫反射模型,他表現的材質較爲均勻,不能反映粗糙度帶來的變化。 蘭伯特定律:反射光線的強度與表面光線和光源方向之間的夾角的餘弦成正比。 cdiffuse = (clight

原创 UnityShader入門精要學習筆記(五):Unity中實現漫反射光照模型

一.蘭伯特逐頂點級光照 // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject' Shader "Custom/Edu/DiffuseVertexL

原创 NGUI學習筆記(五): 揹包拖拽效果

關於拖拽以及交換物品,NGUI有很貼心的UIDragDropItem以及UIContainer兩個內置腳本.基本功能已經實現,使用者需要做的就是根據自己的需求Override相應的虛函數. 先展示一下今天要實現的目標效果: 文

原创 UnityShader入門精要學習筆記(十一):透明效果-下部分

一.混合命令 (1)基本定義 源顏色——Src:片元着色器產生的顏色值 目標顏色——Dst:從顏色緩衝區取到的顏色值 (2)混合因子 上面的命令都是RGB通道的混合因子和A通道的混合因子都是一樣的,如果希望使用不同的參數

原创 UnityShader入門精要學習筆記(十三):光照衰減與Unity陰影

考慮到此節所講與移動平臺實現陰影的常規方式不同,暫時略去此篇博客的整理。 後面會補充移動平臺如何實現實時陰影的效果。 點贊 收藏 分享 文章舉報 qq_26276097

原创 UnityShader入門精要學習筆記(八):基礎紋理之凹凸映射

一.2種法線紋理 法線紋理中存儲的就是表面的法線方向,由於法線的方向的分量範圍在[-1,1],而像素的分量範圍爲[0,1],因此我們需要做一個映射: pixel =0.5*normal + 0.5 模型空間法線

原创 UnityShader入門精要學習筆記(九):基礎紋理之漸變紋理與遮罩紋理

一.漸變紋理 利用半蘭伯特構建float2變量,以此對一張漸變紋理進行採樣。漫反射的顏色靠此方式獲得。 Shader "Custom/Edu/RampTexture" { Properties { _Col

原创 UnityShader入門精要學習筆記(六):Unity中實現高光反射模型

一.逐頂點級高光反射 Shader "Custom/Edu/SpecularVertexLevel" { Properties { _Diffuse("Diffuse",Color) = (1,1,1,1)

原创 NGUI學習筆記(八):圖片(UISprite)灰化效果

一.簡介 圖片灰化是將一張彩色的圖片變成“黑白”的。遊戲中玩家頭像離線效果、技能冷卻效果往往都會用到這個效果。 二.實現原理 實際上所謂的灰度圖,R、G、B三個通道的顏色分量相等。 grey = R * K1 + G* K2 + B *

原创 NGUI學習筆記(七):UIPanel剪裁粒子效果

一.簡介 關於這部分的學習說起來真的有點繞,個人感覺這個屬於進階級別的開發問題了,但又屬於不得不會的內容,於是硬着頭皮搞下去! 二.UISprite的材質 長期以來,一直搞不懂怎樣設置UISprite的材質,UGUI的Sprite材質

原创 NGUI學習筆記(六):結合Toggle的伸縮式滑動列表

1.先展示一下目標效果: 2.場景的關鍵截圖 容納Item的table的pivot一定要設置爲Top/TopLeft/TopRight等,這樣才能保證展開菜單時動畫效果爲向下伸展。 用一個Widget容器容納Table,並且其高度正

原创 UnityShader入門精要學習筆記(二十一):深度和法線紋理

深度紋理實際上就是一張渲染紋理,只不過它裏面存儲的像素值不是顏色值,而是一個高精度的深度值。由於被存儲在一張紋理中,紋理的深度值範圍是[0,1],而且通常是非線性分佈的。 深度紋理中像素值深度值對應了NDC中頂點座標的z分量的值。由於