5326人加入学习
(36人评价)
Unity Shader入门(Unity2018.3)

完成与2019-03-31

价格 ¥ 380.00
该课程属于 Unity - A计划(永久有效期) 请加入后再学习

Shader库中的输入输出结构体

 

1/

.cginc文件 可以被加载进我们的Shader中

例如

写如下代码在CGPROGRAM中,加载UnityCG.cginc文件

#iclude "UnityCG.cginc"

这样我们就可以直接使用“Unity CG.cginc”文件内的变量和方法了。

 

 

2/

UnityShaderUtiilities.cginc

UnityShaderVariables.cginc

以上俩个.cginc文件是默认被加载进Shader中的。

[展开全文]

属性控制

内容概要

1/属性快

Properties

_MainTex("Texture",2D) = "white"{ }

_Color("Color",Color) = (1,1,1,1)

}

定义的属性块需要在CGPROGRAM中再次进行定义

 

.xyzw   和 .rgba 是一样的。

 

当我们的一个变量是3维的(例如:float3 color)

那么我们需要用一个3维的去与他相乘,(例如:color *= _Color.rgb),如果用非3维的向量去与之相乘会报错。

 

 

 

 

 

 

 

[展开全文]

输出结构体

构造函数a2v的命名

a: application 应用

2:to 到

v: vert 顶点着色器

 

构造函数v2f的命名

v: vert 顶点着色器

2:to 到

f:frag 片元着色器

 

 

本节概要

Shader中2个构造函数名字的含义。

2个构造函数中各个成员语义的意义。

顶点着色器返回值和写法讲解。

如何将区间(-1,1)转变为(0,1)。

 

 

[展开全文]

Shader 输入结构体

:SV_TARGET(是渲染到RenderTarget中,RenderTarget是默认的缓存叫做帧缓存)

:POSITION(语义:输入的模型顶点信息)

:SV_POSOTION(语义:顶点输出之后的裁剪空间的顶点信息)

以上三种都是CG,HLSL中的语义,语义是告诉程序,我们输入的是什么。

例如:顶点着色器的参数(float4 v:POSITION)

float4告诉我们这是一个4维的变量。

:POSITION告诉我们这是输入的模型顶点信息。

 

理解a2v结构体,这个a2v名字可以随便命名,但是要确保和地下顶点着色器中的参数名字保持一直。

结构体中的每一个成员,都需要有一个语义去标注。

 

理解 vert( ) 方法 的结构:

  1/返回值float4是被 :SV_POSITION语义标注的

  代表裁剪空间顶线信息。

  2/参数a2v 是一个结构体,考虑到可能要输入大量的模型空间的信息。例如,顶点信息,法线信息,uv信息等,固使用结构体来作为方法参数。

 

[展开全文]

ab = |a||b|cos&

几何意义:用于求两个向量的夹角

cos&

正为锐角

0为垂直

负为钝角

[展开全文]

Pass中Tags独有属性

LightMode 定义该pass通道在Unity渲染流水中的角色

RequireOptions 满足某些条件时才渲染该Pass通道

 

[展开全文]

Render设置

Cull off/back/front 选择渲染哪个面

ZTest Always/Less Greater/LEqual/GEqual/NotEqual 深度测试

ZWrite off/on深度写入

Blend SrcFactor DstFactor 混合

LOD //不同情况下使用bu

[展开全文]

Tags 标签

Queue //渲染顺序

RenderType //着色器替换功能

DisableBatching //是否进行合批

ForceNoShadowCasting //是否投射阴影

IgnoreProjector //受不受Projector的影响,通常用于透明物体

CanUseSpriteAltas //是否用于图片的shader,通常用于UI

PreviewType //用作shader面板预览的类型

[展开全文]

unity属性类型

Int

float

Range(x,y):范围值

Color

Vector (x,y,z,w)

2D

Cube

3D

 

 

 

[展开全文]

应用阶段-几何阶段-光栅化阶段

cpu应用阶段:

[展开全文]

https://blog.csdn.net/qq_42461824/article/details/107672111

 

这一节没有阴影是因为没有定义_Color 属性

导致无法计算阴影

 

[展开全文]

课程勘误:对于向量的点积和叉积,都是在[0.180]度讨论的。不存在-90这一说

[展开全文]

顶点数据为应用阶段传入的。

 

[展开全文]

漫反射:法线n   光源l   法线与光源夹角θ

 漫反射强度:θ=90最弱   θ=0最强

 

[展开全文]

向量n l 

2cosθ*n=2(n*l)*n

n*l=|n|*|l|*cosθ

因为向量n l是单位向量

所以向量n*l=cosθ

[展开全文]

BRDF光照模型=>次世代渲染

ssscai'z

[展开全文]

渲染设置

Cull    off/back/front //选择渲染那个面

ZTest  Always/LessGreater/LEqual/GEqyal/Equal/NotEqual//深度测试

Zwrite off/on //深度写人

Blend Srcfactor  DstFactor// 混合

LOD 100 //不同情况下使用不同的LOD,到达提升性能

[展开全文]