Shader1.0与Shader2.0区别

Shader1.0与Shader2.0区别

Shader1.0

可编程模块顶点着色器
顶点着色器:
在这里插入图片描述
1.计算顶点颜色
调节顶点颜色的方式:
①直接在pass中设定Color(1,1,1,1)
②在属性中定义变量_TestColor(“display color”,Color) = (1,1,1,1),然后再pass中引用Color[_TestColor]
2.顶点变换
3.灯光的作用
Shader1.0灯光计算公式:
AmbientLighting Window’s Ambient Intensity setting + (Light Color * Diffuse+Light ColorSpecular)+Emission
Ambient:环境光
Diffuse:漫反射
Specular:镜面反射
Emission:自发光
Lighting On:灯光总开关
SeparateSpecular On:高光开关
4.纹理寻址原理
①纹理等于显示区域大小
在这里插入图片描述
采用一一映射的方式
②纹理大于显示区域
显示区域:100* 100 纹理大小:1000* 1000
在这里插入图片描述在这里插入图片描述
采用等比例映射
Point:就近采样,比如第50个像素与第500个像素对应,49与490对应,其余像素丢弃
Bilinear:周围4个像素平均 (上+中+下+左+右)/ 5
Trilinear:周围8个像素平均
③纹理小于显示区域
显示区域1000* 1000 纹理大小:100* 100
在这里插入图片描述
存在多个显示像素点对应一个纹理点的情况,出现锯齿状马赛克

Shader2.0

Shader1.0与shader2.0不同点:2.0可以实现编程
相同点:渲染管线一样
Shader文件结构:
#pragma vertex vert 定义一个顶点着色器的入口函数
#pragma fragment frag 定义一个片段着色器的入口函数
语义:
POSITION:获取模型顶点信息
NORMAl:获取法线信息
TEXCOORD(n):高精度的从顶点着色器传递信息到片段着色器,float2,float3,float4
COLOR:表示低精度从顶点传递信息到片段着色器,float4
TANGENT:获取切线信息
SV_POSITION:表示经过mvp矩阵已经转化到屏幕坐标系下的矩阵
SV_Target:输出到哪个render target

编写顶点着色器

Shader1.0
设置纹理格式:
SetTexture [TextureName] {Texture Block}
TextureName:表示纹理变量
Previous:表示前面一个 SetTexture出来以后的像素
Primary:表示顶点计算出来的颜色
Texture:等于SetTexture当前纹理变量
Constant:表示一个固定颜色如(1,1,1,1)

Combine Primary*Texture表示两个像素的乘法或加,亮度越乘越暗,越加越亮,因为像素值在0到1之间

Combine src1 lerp(src2) src3
插值运算Lerp:
让src1和src3进行混合
混合方式取决于src2的alpha值:(1-alpha)* src1+alpha* src2

Shader2.0
1.计算顶点的位置变换
Unity里面矩阵左乘
①将物体坐标系变换到世界坐标系
P(世界)= M(物体到世界的矩阵)*P(物体)
规律:3D变换首先将物体坐标系变换到世界
②将世界坐标变换到相机坐标系
P(相机)= M(世界到相机的矩阵)*P(世界)
M:物体坐标系变换到世界坐标系
V:世界坐标系变换到相机坐标系
P:将3D坐标系转换成2D屏幕坐标系,包括正交投影与透视投影
2.计算顶点的颜色

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值