Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元

顶点着色器输入语义

语义:

可以理解为是一个标记。

最终也就是让Shader知道在哪里读数据,并且把数据输出到哪里。

例如:

struct a2v

{

    float4 texcoord : TEXCOORD0

}

上面a2v输入结构体中的语义   :TEXCOORD0

就是将第一套uv存储在变量 texcoord 中

 

如果在输出结构体v2f中我们仍然可以用

:TEXCOORD0  (即使输入结构体a2v中已经有:TEXCOORD0了我们仍然可以使用)这是因为

语义的另一个功能就是寄存器。

 

 

:SV_POSITION

(顶点着色器后使用)

例:float4 vert ( float4 v : POSITION ) : SV_POSITION

:SV_TARGET

(片元着色器后使用)

例:fixed4 frag ( ) :SV_TARGET

以上2种语义是特殊语义,不能乱用。

有时候我们能看见 SV_POSITION &  SV_TARGETSV 被写成了 POSITION &  TARGET 这是因为在DX10 之后引入了一个叫系统数值的语义。 这时候POSITION & TARGET 就有了他自己的目的需要去做的事情。所以我们就用SV_POSITION &  SV_TARGETSV

如果不使用 SV_POSITION &  SV_TARGETSV 而用 POSITION &  TARGET 我们会发现在PS4上会出错。

我们理解为在DX10 之后为了兼容某些硬件,我们引入了新的语义 SV_POSITION &  SV_TARGETSV 而 SV_POSITION &  SV_TARGETSV 是包含  POSITION &  TARGET。

 

 

 

顶点着色器输入结构体种的语义笔记

:POSITION 

(模型空间中的顶点位置,通常是float4类型)

:  NORMAL 

(顶点法线,通常是float3类型)

:TANGENT 

(顶点切线,通常是float4类型)

TEXCOORDn

( 顶点的纹理坐标,TEXCOOD0表示第一组uv坐标纹理通常是float2 , float4类型 )

(Shader Model2 & 3 可以支持最多 8 个TEXCOORD)

(Shader Model4 & 5 可以支持最多 16 个TEXCOORD)

COLOR 

(顶点颜色,通常是fixed4类型)

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-10-25 · 0

Shader库中的输入输出结构体

 

1/

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

例如

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

#iclude "UnityCG.cginc"

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

 

 

2/

UnityShaderUtiilities.cginc

UnityShaderVariables.cginc

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

[展开全文]
pilishen000 · 2021-10-25 · 0

属性控制

内容概要

1/属性快

Properties

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

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

}

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

 

.xyzw   和 .rgba 是一样的。

 

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

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

 

 

 

 

 

 

 

[展开全文]
pilishen000 · 2021-10-22 · 0

输出结构体

构造函数a2v的命名

a: application 应用

2:to 到

v: vert 顶点着色器

 

构造函数v2f的命名

v: vert 顶点着色器

2:to 到

f:frag 片元着色器

 

 

本节概要

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

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

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

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

 

 

[展开全文]
pilishen000 · 2021-10-19 · 0

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信息等,固使用结构体来作为方法参数。

 

[展开全文]
pilishen000 · 2021-10-19 · 0

ab = x1x2 + y1y2

[展开全文]
路西法 · 2021-06-30 · 0

ab = |a||b|cos&

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

cos&

正为锐角

0为垂直

负为钝角

[展开全文]
路西法 · 2021-06-30 · 0

Pass中Tags独有属性

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

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

 

[展开全文]
路西法 · 2021-06-28 · 0

Render设置

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

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

ZWrite off/on深度写入

Blend SrcFactor DstFactor 混合

LOD //不同情况下使用bu

[展开全文]
路西法 · 2021-06-28 · 0

Tags 标签

Queue //渲染顺序

RenderType //着色器替换功能

DisableBatching //是否进行合批

ForceNoShadowCasting //是否投射阴影

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

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

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

[展开全文]
路西法 · 2021-06-28 · 0

subshader语义块

Tags

[展开全文]
路西法 · 2021-06-28 · 0

unity属性类型

Int

float

Range(x,y):范围值

Color

Vector (x,y,z,w)

2D

Cube

3D

 

 

 

[展开全文]
路西法 · 2021-06-28 · 0

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

cpu应用阶段:

[展开全文]
路西法 · 2021-06-28 · 0

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

 

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

导致无法计算阴影

 

[展开全文]
Pang · 2020-11-24 · 0

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

[展开全文]
章校长 · 2020-11-19 · 0

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

 

[展开全文]
InvincibleXin · 2020-09-16 · 0

向量n l 

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

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

因为向量n l是单位向量

所以向量n*l=cosθ

[展开全文]
来自秋名山 · 2020-09-11 · 0

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

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

 

[展开全文]
来自秋名山 · 2020-09-10 · 0

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

ssscai'z

[展开全文]
卡徒 · 2020-08-24 · 0