Unity3D中的shader基础知识
1.Unity中配备了强大的阴影和材料的语言工具称为ShaderLab,以程式语言来看,它类似于CgFX和Direct3D的效果框架语法,它描述了材质所必须要的一切咨询,而不仅仅局限于平面顶点/像素着色。
2.在Unity3D中创建一个Shader:Assets -> Create -> Shader
3.创建了Shader就可以应用到各个材质Material中,创建材质:Assets -> Create -> Material。然后就可以在材质的Inspector面板中,shader下拉框中可以找到新增加的shader
4.Rendering Paths是Unity3D中一个重要的概念,中文翻译就是“渲染通道”。它可以很大程度上影响光线和阴影的渲染效果,但具体要依赖于具体的游戏内容和硬件设备,以及平台。Unity3D中有三种渲染通道类型,从高到低分别为:Deferred Lighting,Forward Rendering,Vertex Lit。如果平台或设备显卡不能支持高级别的通道类型,Unity3D会自动选择稍微低一些的类型。
三种类型的细节比较,详情看参考手册。
5.如何设置渲染通道:在Edit -> Project Setting -> Player中Inspector面板下面,三种发布类型里都有一个渲染通道的设置。
另外,每个摄像机的Inspector面板中,也都有一个渲染通道Rendering Path的设置。
6.渲染通道与shader的关系。
Deferred Lighting通道类型不关心有多少个光源会影响它,每个物体一般都会绘制两次;类似地,Vertex Lit 只绘制一次。所以对于这两种类型来说,shader对表现效果的改变大多在于多重纹理方面。
Forward 通道类型的表现效果要取决于shader和场景中的光源。它有两种基本的计算方式Vertex-Lit 和 Pixel-Lit。可以翻译为逐顶点渲染法和逐像素渲染法吧应该,对应着D3D中的顶点着色和像素着色过程。
Vertex-Lit 用于对网格模型表面顶点进行光照计算,一次性将所有光源的影响都计算在内,所以无论场景中有多少个光源,这种方式绘制的物体只绘制一次。
Pixel-Lit 会计算每个像素上面最终的光照,因此一个物体必须先呗绘制一次来获得环境光和主方向光的光照信息,再绘制一次来获得其他每个额外的光源信息。应用Pixel-Lit的物体的大小也会影响绘制的效率,越大的物体,绘制越慢。
Vertex-Lit 的开销大于Pixel-Lit,但是Pixel-Lit可以提供很多非常好的效果。
7.Unity3D中的shader是通过改变那些直接影响游戏对象的材质来使用的。
8.一个shader可以被应用于多个材质中,但一个材质只能应用一个shader。
9.一些shader被写入了Unity3D底层里,一部分作为内建shader被放置于standard assets里,可供用户使用
Unity3D中的shader基础知识的更多相关文章
- ASP.NET中的C#基础知识
ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...
- MySQL中索引的基础知识
本文是关于MySQL中索引的基础知识.主要讲了索引的意义与原理.创建与删除的操作.并未涉及到索引的数据结构.高性能策略等. 一.概述 1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能. 数 ...
- day29—JavaScript中DOM的基础知识应用
转行学开发,代码100天——2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ...
- javascript中BOM部分基础知识总结
一.什么是BOM BOM(Browser Object Document)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管 ...
- Jquery源码中的Javascript基础知识(三)
这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: (function( window, undefined ) { // code 定义变量 jQuery = fun ...
- Java中浮点数的基础知识
偶然查看Math.round的JDK public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float val ...
- Android中的一些基础知识(三)
最近在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 在TextView中显示图像(使用< img>标签) 在TextView中显示图片的方法有许 ...
- Android中的一些基础知识(二)
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...
- PHP中oop面向对象基础知识(一)
OOP 基础知识汇总(一) &g ...
随机推荐
- Java中在实例化一个类时,这个类中没有初始值的int类型成员变量i,i的值是不是0?
java中有两种类型一种是数值性,另一种是类变量数值性变量的初始值为0,类变量的初始化为null没做初始化成员变量int性变量是0, 在java中有这么一条规则,声明在方法中的变量在使用时必须要初始化 ...
- [jzoj]2938.【NOIP2012模拟8.9】分割田地
Link https://jzoj.net/senior/#main/show/2938 Description 地主某君有一块由2×n个栅格组成的土地,有k个儿子,现在地主快要终老了,要把这些土地分 ...
- HtmlHelper使用示例
在使用Razor时,有时想要在页面内知道对象的完整信息,或服务器的详细信息,可以通过HtmlHelper. 具体使用示例如下: <div>测试一: @ServerInfo.GetHtml( ...
- [LeetCode] Most Common Word 最常见的单词
Given a paragraph and a list of banned words, return the most frequent word that is not in the list ...
- viewport的故事(一)
部分翻译 自原文 https://www.quirksmode.org/mobile/viewports.html 概念:设备像素和CSS像素 设备像素可以通过 screen.width/he ...
- 6、echarts使用的坑
实例化id值要用唯一的,一个项目中不能用同一个id, 不然后面的样式覆盖前面的,且后面样式不显示.
- apt下载open-jdk8报错add-apt-repository: command not found
今天下载jdk8报错 在Ubuntu下,时不时会有这个错误的. add-apt-repository: command not found sudo apt-get install software- ...
- python全栈开发 * mysql * 180828
一.mysql概述\s 查看当前自己的信息1.mysql就是用于管理我们的文件的一个软件;2.mysql有两个软件: 服务器软件: socket服务端 本地文件操作 解析指令(mysql语句) 客户端 ...
- HC32F003与STM8S003资源对比,只是对比,大家评论~!
枯藤老树昏鸦小桥流水人家 古道西风瘦马夕阳西下断肠人在天涯 18年悄然过去!19年向我们走来,蓦然回首过 ...
- 如何为Windows XP / Windows7-32bit / Windows7-64bit安装capicom.dll
原文: http://164.100.181.16/ssdgsap/RegisterDLL.htm 1.根据操作系统的要求下载相应的文件夹安装capicom.dll for Windows XP的步骤 ...