UnityShader之Shader分類篇【Shader資料2】

  關于ShaderLab,從我個人的理解上來看應該是分為三種類型。

  1、Fixed function shader

    固定渲染管線Shader,基于用于高級Shader在老顯卡無法顯示時的Fallback,使用的是ShaderLab語言,屬于真正的ShaderLab語言,和我們平時看到的shader的區別后面細說。

  2、Vertex and Fragment Shader

    可編程渲染管線,這種Shader包含Vertex Shader和Fragment Shader,也就是頂點著色器和片段著色器。頂點著色器會根據你自己的定義自動獲取頂點一些相關信息。使用CG/HLSL語法,小伙伴們平時應該都注意到了有時候在Shader中會出現#include "UnityCG.cginc"這類聲明,這里面就是Unity給我們做好的一個庫,你可以想像成C語言程序中的include,C#程序員可以想象成代碼文件開頭的Using引用,Android程序員可以將其想象成代碼開頭的import引用。

  3、Surface Shader

    unity自己最為推崇的Shader類型,使用Unity預制的光照模型來進行光照運算。也是使用CG/HLSL。

  

  Unity的三種Shader對比相同點:

  1、都必須從唯一一個根的Shader開始,也就是本系列資料1中解釋的調用函數。

  2、Properties參數部分,作用和語法完全相同,沒有任何區別,沒有萬一。

  3、具體的功能都在SubShader里去實現,如果有多個Subshader,那么機器不會全部執行,而是最多只執行一個,執行方式是從上自下開始運行硬件能夠支持的第一個SubShader,這樣做的目的主要是為了兼容不同類型的顯卡。

  4、都可以貼上標簽,也就是Tags塊,例如Tags { "RenderType" = "Opaque" }????LOD 200 ????以及Lighting On等,這些的具體用法咱們后面細說。

  5、結束的時候都可以用Fallback來進行對備胎Shader的使用,備胎的意思也就是如果所有的SubShader都不被硬件支持,就會去使用Fallback所指定的Shader。

  6、都可以處理基本的功能,例如光照反射鏡面反射等。但是頂點片段著色器和表面著色器都可以實現固定管線實現不了的高級功能,例如基于UV計算的效果等。

  

  Unity的三種Shader對比不同點:

  1、固定管線和頂點片段著色器的SubShader下面還有pass{}通道,但是表面著色器已經將具體內容打包在光照模型里面了,所以不能加上pass{}通道。

  2、固定管線每句代碼之后沒有分號,但是V&F著色器Sur著色器的每句代碼之后都必須加上分號,這種設計也許更符號碼農們的期望吧。

  3、核心結構不同,?

  固定管線的核心:

    Material{} 以及 SetTexture[_MainTex]{}

  V&F著色的核心:

    CGPROGRAM    //聲明使用CG語言

    #pragma vertex vert  //聲明頂點函數vert

    #pragma frament frag  //聲明片段函數frag

    #include "UnityCG.cginc"  //導入unity的CG庫

    ENDCG

  Surface Shader的核心:

    CGPROGRAM  //聲明使用CG語言

    #pragma surface surf Lambert  //聲明一個表面著色器函數surf,并使用Unity自己的光照模型和頂點函數

    //Lambert為Unity自帶的光照模型函數,我們也可以使用自己寫的光照模型函數,并且使用自己寫的頂點函數

    //  ? ? ? surface 表面處理函數???光照模型函數??????頂點處理:函數
    //#pragma surface??surf?????????lsyLightModel??????vertex:vert

    //執行順序???頂點處理函數 -> 表面處理函數 -> 光照模型函數 ->顏色值

    ENDCG

    

轉載于:https://www.cnblogs.com/vsirWaiter/p/5988974.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270664.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 交叉連接_MySQL教程77-CROSS JOIN 交叉連接

之間所講的查詢語句都是針對一個表的,但是在關系型數據庫中,表與表之間是有聯系的,所以在實際應用中,經常使用多表查詢。多表查詢就是同時查詢兩個或兩個以上的表。在 MySQL 中,多表查詢主要有交叉連接、內連接和外連接…

python web django base skill

web框架本質 socket 業務邏輯框架實現socket tonado node.js 使用WSGI實現socket django flask 自己實現框架思路 wsgiref socket 路由系統 自己寫邏輯(views) jinja2 模板引擎(templates) 實現動態頁面,修改返回給瀏覽器的字符串 去…

電腦常見的VGA、DVI、PS/2、USB等接口知識筆記

我們經常見到電腦和網絡設備上都少不了VGA、DVI、PS/2、USB等常用接口,那些接口里面有多個針腳,他們每個針腳都有自己的用途,今天電腦學習小編就帶大家一起看看這些接口神秘用途。 現在很多朋友們可能會遇到VGA線或HDMI線不夠長,或…

mysql kill_Mysql使用kill命令解決死鎖問題(殺死某條正在執行的sql語句)

在使用mysql運行某些語句時,會因數據量太大而導致死鎖,沒有反映。這個時候,就需要kill掉某個正在消耗資源的query語句即可, KILL命令的語法格式如下:KILL [CONNECTION | QUERY] thread_id每個與mysqld的連接都在一個獨…

數據庫:MySQL、HBase、ElasticSearch三者對比

1、概念介紹 MySQL:關系型數據庫,主要面向OLTP,支持事務,支持二級索引,支持sql,支持主從、Group Replication架構模型(本文全部以Innodb為例,不涉及別的存儲引擎)。 HBas…

mysql 附加數據庫文件_mysql附加數據庫文件

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云數據庫專家保駕護航,為用戶…

SpringBoot集成Mybatis用法筆記

今天給大家整理SpringBoot集成Mybatis用法筆記。希望對大家能有所幫助&#xff01;搭建一個SpringBoot基礎項目。具體可以參考SpringBoot:搭建第一個Web程序引入相關依賴<dependencies><dependency><groupId>org.springframework.boot</groupId><ar…

wifi-mac

//18:a6:f7:12:0b:8b //18:a6:f7:1e:a9:57 //18:a6:f7:1f:8e:69 //18:a6:f7:12:0b:9c //18:a6:f7:1f:cd:d4 //18:a6:f7:1c:94:35 轉載于:https://www.cnblogs.com/mayidudu/p/5991781.html

網絡知識:交換機中的半雙工與全雙工知識筆記

今天小編給大家分享一下交換機中半雙工與全雙工相關知識&#xff0c;希望對大家能有所幫助&#xff01; 早期的網絡設備HUB&#xff08;集線器&#xff09;就是半雙工&#xff0c;目前基本沒有人用了&#xff0c;而現在用的SWITCH&#xff08;交換機&#xff09;就是全雙工。 a…

yum 安裝mysql 啟動_linux(centos6.9)下使用yum安裝mysql,及啟動MySQL等

查看系統自帶的mysql版本&#xff1a;rpm -qa | grep mysql卸載mysql&#xff1a;rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps1. 安裝mysql 服務器端&#xff1a;yum -y install mysql-server mysql-devel2. 安裝mysql客戶端&#xff1a;yum install mysql3. 啟動mysql服…

硬件知識:U盤插入電腦沒反應相關解決辦法整理

目錄 一、U盤可能被隱藏 二、USB端口被BIOS禁用 三、電腦的USB驅動可能有問題 今天小編給大家介紹一下U盤插入電腦沒反應相應的解決方案&#xff0c;希望對大家能有所幫助&#xff01; 一、U盤可能被隱藏 首先換臺電腦看看是不是U盤損壞的問題&#xff0c;如果不是&#xff0c;…

分享9個實用的電腦維修技巧,趕緊收藏吧

目錄 01、電腦不能上網 02、電腦藍屏 03、沒有聲音 04、沒有畫面 05、軟件無法啟動 06、顯示器畫面不能滿屏顯示 07、使用過程中自動關機 08、電腦不能開機 09、電腦花屏 今天給大家分享9個實用的電腦維修技巧&#xff0c;趕緊收藏吧&#xff01; 01、電腦不能上網 常見原因1&a…

自媒體資源:分享8個免版權視頻素材網站

目錄 01. 知魚素材 2、 gaiamount 3、 lifeofvids 4、Coverr 5、stock footage 6、vidsplay 7、Pixabay 8、Pexels 今天小編就給大家分享一些免版權的視頻素材網站&#xff0c;有需要的小伙伴趕緊歡迎收藏&#xff01; 01. 知魚素材 https://sucai.zhiyu.art/video 共享協議可免…

win7 mysql msi_windows下的Mysql安裝與基本使用(msi)

本文針對mysql5.6與5.5一、其他版本與安裝方式1.msi(mysql5.7及以上版本參考&#xff1a;https://www.cnblogs.com/zjiacun/p/6653891.html)這里我們用msi吧&#xff0c;只是單純練習的話&#xff0c;簡單很多二、msi安裝(5.5-5.6)1.點擊安裝文件&#xff0c;在出現的安裝向導上…

java中split以“.“ 、“\“、“|”分隔

今天項目里遇到以"." 、"\"、“|”分割字符串&#xff0c;直接用"." 、"\"、“|”無法分割&#xff0c;因為"." 、"\"、“|”是特殊字符&#xff0c;需要轉義&#xff0c;"\\." 、"\\\"、“\…

推薦這11款免費好用的 Mac 軟件

目錄 1、IINA —— 全能視頻播放器 02、大拍檔剪輯助手 03、Dozer 04、Cheatsheet 05、Spectacle 06、Amphetamine 07、Macs Fan Control 08、AdGuard 09、Keka 10、騰訊檸檬清理 11、Cold Turkey Blocker 1、IINA —— 全能視頻播放器 對于Mac OS來說&#xff0c;IINA可以說是…

三角形

源代碼&#xff1a;#include<cstdio> #include<map> #define LL long long#define INF 1000000000 using namespace std; map <double,LL> i; //這個STL差不多就是一個反類型數組。 double f[100001]; LL n,Num(0); LL C(LL N,LL M) //排列組合。 {if (N<…