【Unity Shader入門精要】Shader所需的數學基礎
概述
計算機圖形學之所以難學,很大一部分原因是在於它是建立在虛擬世界上的數學模型。Shader作為圖形學的一部分,當然讓人頭痛的問題也就是數學問題。比如:向量、矩陣等等。所以在Shader的學習過程中,先掌握Shader所需要的基本的數學基礎是非常非常重要的!!
在數學基礎的學習中,會分成多次進行學習,每次對應一個內容。希望能夠消化這些內容。
學習背景
在書中,作者以一個農場遊戲作為學習背景。在之後的學習中這個農場遊戲會貫穿在整個學習過程中。
遊戲背景是:假設有一個場景,玩家在農場中養了非常多隻奶牛。整個遊戲的主角是一頭強壯的牛 — 妞妞。如下圖:
從現在開始,就讓我們利用這個背景展開對數學基礎的學習。
相關推薦
【Unity Shader入門精要】Shader所需的數學基礎
概述 計算機圖形學之所以難學,很大一部分原因是在於它是建立在虛擬世界上的數學模型。Shader作為圖形學的一部分,當然讓人頭痛的問題也就是數學問題。比如:向量、矩陣等等。所以在Shader的學習過程中,先掌握Shader所需要的基本的數學基礎是非常非常重要的!
【Unity Shader入門精要】— 開始Unity Shader之旅
內容會持續更新,有錯誤的地方歡迎指正,謝謝! 建立Shader 1.右鍵建立shader(如果想寫頂點片元著色器就選Unlit Shader,如果想寫表面著色器就選Standard Surface Shader,如果想寫屏幕後處理著色器就選Image Effec
《Unity Shader入門精要》總結 #第七章 基礎紋理
使用紋理對映可以將一張圖逐紋素地控制模型顏色。 紋理大小可變,但頂點UV座標範圍通常被歸一化道[0,1]範圍內 1、單張紋理 1.1 實踐 【補充一下第三章Properties語義塊支援的屬性型別,之前忘記寫自己還老分不清- -】 Properties{ N
獲取深度和法線紋理 背後的原理【Unity Shader入門精要13.1.1】
13.1.1背後的原理 什麼是深度紋理: 實際上就是一張渲染紋理,只不過它裡面儲存的畫素值不是顏色值,而是一個高精度的深度值,由於被儲存在一張紋理中,深度紋理裡的深度範圍是[0,1],而且通常是 非線性分佈的。 深度值來自頂點變換後得到的歸一化的裝置座標(Normali
運動模糊【Unity Shader入門精要12.6】
實現方法: 【1】利用一塊 累積快取(accumulation buffer)來混合多張連續的影象。當物體快速移動產生多張連續的影象後,去取他們之間的平均值作為最後的運動模糊影象,然而這種辦法消耗很大 【2】建立和使用 速度快取(Velocity buffer)這個快取中儲存了各個畫素當前的
邊緣檢測 【Unity Shader入門精要12.3】
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' //12.3 邊緣檢測 Shader "Unlit/Chapter12-EdgeDetection" {
再談運動模糊【Unity Shader入門精要13.2】
使用速度對映圖:速度對映圖中儲存了每個畫素的速度,然後使用這個速度決定模糊的大小和方向 速度緩衝的生成有多種方法: 一種方法是把場景中所有物體的速度渲染到一張紋理中,但這種方法的缺點在於需要修改場景中所有的物體的Shader程式碼,使其新增計算速度的程式碼並輸出到一個渲染紋理中 《GPU
全域性霧效 【Unity Shader入門精要13.3】
霧效(fog) unity 內建的霧效可以產生基於距離的線性或指數霧效。 然而,想要在自己編寫的頂點/片元著色器中實現這些霧效,需要在shader中新增【#pragma multi_compile_fog】指令,同時還需要使用相關的內建巨集,例如【UNITY_FOG_COORDS】【UNIT
【《Unity Shader入門精要》 提煉總結】(十五)第十五章·光照系統進階教程&Unity的渲染路徑介紹&前向渲染路徑&頂點照明渲染路徑&延遲渲染路徑
本文由@唐三十胖子出品,轉載請註明出處。 文章連結:https://blog.csdn.net/iceSony/article/details/84887592
調整螢幕的亮度,飽和度和對比度 【Unity Shader入門精要12.2】
//12.1 //一個用於檢查的基類 //檢查當前平臺是否支援渲染紋理和螢幕特效,是否支援Unity Shader using System.Collections.Generic; using UnityEngine; //在編輯模式執行 [Ex
高斯模糊 【Unity Shader入門精要12.4】
Blit(src,dest,mat,pass)函式的作用,按照Unity官方API的說法是將src這個RT用mat這個材質中的某個pass渲染,然後複製到dest中。如果要給渲染加一些後處理效果(SSAO,HDR,bloom之類的),幾乎可以肯定會用到這個函式。根據Unity
Bloom效果【Unity Shader入門精要12.5】
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' //12.5 Bloom效果 Shader "Unlit/Chapter12-Bloom" { P
卡通風格的渲染【Unity Shader入門精要14.1】
卡通渲染的方法之一:基於色調的著色技術(tone-based shading)。P288 實現中,我們往往會使用 漫反射係數 對一張一維紋理進行取樣,以控制漫反射的色調 。(7.3節中用漸變紋理實現過這種效果) 卡通風格的高光往往是一塊分界明顯的純色區域。 除了光照模型不同外,卡通風格通
再談邊緣檢測【Unity Shader入門精要13.4】
12.3節中的邊緣檢測使用的是Sobel運算元,但是這種直接對顏色資訊進行邊緣檢測的方法會產生很多我們不希望得到的邊緣線, 本節學習如何在深度和法線紋理上進行邊緣檢測,這些影象不會受紋理和光照影響,而僅僅儲存了當前渲染物體的模型資訊。 Roberts運算元的卷積核
【《Unity Shader入門精要》 提煉總結】(一)第一章·渲染流水線入門介紹&專業術語圖元、光柵化的解釋
這篇文章將總結和提煉《Unity Shader入門精要》的第二章“渲染流水線”的內容。 通過這篇文章,你可以知道 1)什麼是渲染流水線 2)渲染流水線的過程 3
Unity Shader入門精要學習筆記 - 第4章 學習 Shader 所需的數學基礎
旋轉矩陣 即使 模擬 能夠 一點 空間使用 虛擬 地板 金字塔 摘錄自 馮樂樂的《Unity Shader入門精要》 笛卡爾坐標系 1)二維笛卡爾坐標系 在遊戲制作中,我們使用的數學絕大部分都是計算位置、距離、角度等變量。而這些計算大部分都是在笛卡爾坐標系下進行的。 一個二
Unity Shader入門精要學習筆記 - 第3章 Unity Shader 基礎
但是 detail spa net 表示 part 文件 人的 text 來源作者:candycat http://blog.csdn.net/candycat1992/article/ 概述 總體來說,在Unity中我們需要配合使用材質和Unity Shader才能達
Unity Shader入門精要學習筆記 - 第11章 讓畫面動起來
位置 視覺效果 想要 朝向 系列 圖像 顏色 offset star 轉自 馮樂樂的 《Unity Shader入門精要》 Unity Shader 中的內置變量 動畫效果往往都是把時間添加到一些變量的計算中,以便在時間變化時畫面也可以隨之變化。Unity Shader 提
Unity Shader入門精要學習筆記 - 第16章 Unity中的渲染優化技術
也會 檢測 特點 著色器 版本 切換 代碼優化 學習 順序 轉自馮樂樂的 《Unity Shader 入門精要》 移動平臺的特點 為了盡可能一處那些隱藏的表面,減少overdraw(即一個像素被繪制多次),PowerVR芯片(通常用於ios設備和某些Android設備)使用
Unity Shader入門精要學習筆記 - 第14章非真實感渲染
只需要 遮擋 本質 lar 屏幕 準備 dot smo try 轉載自 馮樂樂的 《Unity Shader 入門精要》 盡管遊戲渲染一般都是以照相寫實主義作為主要目標,但也有許多遊戲使用了非真實感渲染(NPR)的方法來渲染遊戲畫面。非真實感渲染的一個主要目標是,使用一些渲