unity-shader编写需要储备的知识(1)

首先是说一些关于着色器的一些基本知识
1.着色器类型类型,分别是固定管线着色器(将会淘汰)、顶点片元着色器、表面着色器。

顶点片元着色器:干预模型形态的着色器,例如带有波浪的水面,修改的就是波浪表面上每一个顶点的值。
表面着色器:干预像素的着色器,比如乌龟上面添加一个光照的纹理,使其有一种在水中游泳的感觉。

2.着色器与显卡的关系

显卡也就是GPU是图形运算处理中心两者的关系为
图形->添加到GPU(经过渲染管道进行渲染)->显示到屏幕上。
在这里插入图片描述
我们编写的shader程序就是顶点着色器与片元着色器。

3.相关知识杂谈

在不同的GPU中os、windows等,在不同类型的显卡中有不同的图形标准,如果不讲这些统一起来的话,有些东西只能在固定的GPU中运行,所以菜肴转趋动,通过驱动才可以统一标准—>DirectorX(图形标准),使不同的软件等在不同的显卡中也可以正常显示。

HLSL语言支持通过Director3D编写的着色器,只能在Director3D中使用
GLSL语言支持openGL上编shader程序。
Cg语言是NVDIAI和微软合作提供的语言,支持Director3D和openGL编写程序。我们编写shader程序一般都是用Cg语言,但是vs上是不会提示Cg语言的变量类型等信息的。

4.shader编程的基本结构

Shader “name”{// name shader 的名字
//定义一些属性,定义在这里的会在属性查看器里面显示;
[propeties]
//子着色器列表,一个shader必须至少有一个子着色器;
Subshaders;{。。。}
//如果子着色器显卡不支持,就会降级即fallback操作
{fallback}
}
1.Properties定义
name(“display name”,type) = 值
Name是变量名称、display name:显示到属性检查器中的名称
Type是变量的类型
值是默认值
注意: Name的规定就是使用下划线开始
例如

 Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
		_Glossiness("Smoothness", Range(0,1)) = 0.5
		_Metallic("Metallic", Range(0,1)) = 0.0
	}

2.subshader的属性组成
在这里插入图片描述
其中每一个子着色器都可以有多个通道
上图的标签使用方法及类型
在这里插入图片描述
3.pass通道
Subshader包装了一个渲染方案,这些方案的执行途径是Pass subshader可以由很多个pass,每一个pass 都能令几何体渲染一次
Pass的基本语法是
Pass{[Name and tags] [RenderSetup][Texture Setup]}
在其他着色器的pass块中如果想要引用此通道,可以通过名字来引用减少重复操作,需要注意的是Name命令必须是大写,也就是说但凡是通道的名字必须要大写(unity引擎的规定)
通道类型分别有Regularpass、usePass、GrabPasss三种
普通通道的渲染设置
在这里插入图片描述
上图是普通通道类型的作用

Usepass的用处
插入所有来自其他着色器的给定名字的通道;
UsePass“Shader/Name”,Name为 着色器通道
使用方法:“Specular/BASE”//插入Specular中为Bass 的通道;
GrabPass{};一种特殊通道类型,他会捕获物体所在位置的屏幕的内通婚,并且写入一个纹理中,这个纹理能够呗用于后续通道中完成高级图像特效 ,后续通道可以使用
——Grabtexture进行访问;
使用Grabpass{纹理名称}捕获 屏幕内容到指定纹理中,后续通道可以通过纹理名称访问

5.shader中常用类型

在这里插入图片描述
其中的options是描述纹理属性的

6.unity坐标系转换

在这里插入图片描述

7.Cg语言的常用语义修饰

在这里插入图片描述

8.Cg语言基本类型表达式

在这里插入图片描述
定点数:用整数表示小数,比如有一个32位的操作系统,那么数字35.2的35,就存在前16位,2存后16位,所以,所谓的定点数就是用整数来表示小数。
在Cg中颜色就是用fixed来表示的,比浮点数更加高效。

Sampler来表示纹理对象,如果要向shader中关联一副图片,纹理或者texture,就使用sampler/1D/2D/3DCUBE/RECT,1D/2D等都是纹理,CUBE可以代表天空盒

9.标准内置函数

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值