查看: 1688|回复: 0
打印 上一主题 下一主题

[经验分享] Unity shader再次学习 记录 二

[复制链接]
may    

8830

主题

80

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52304
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-2-27 21:08:24 |只看该作者 |倒序浏览

來自: zzzsss 分享

一、纹理寻址一张纹理对应到显示区域上,不可能完全吻合
纹理100*100             显示区域200*200
纹理200*200             显示区域100*100

FilterMode  设置图片纹理寻址方式
Point :如果纹理大于显示区域,按比例对应,纹理上多的点直接舍弃               //出现锯齿效果
            如果显示区域大于纹理,按比例对应,显示区域上多的像素点遵循就近原则       //出现马塞克效果
Bilinear : 每个像素点的颜色根据其上、下、左、右颜色的平均值计算         
Bilinear : 每个像素点的颜色根据其上、下、左、右、左上、左下、右上、右下颜色的平均值计算   

二、语义
在InputStruct(顶点着色器传入参数的结构体)中,名字是可以更改的,MeshRender传参的时候,为了能对应上这些数据,因为每个字段后面都必须加上语义,告诉MeshRender这个
字段储存什么数据。
POSITION   模型顶点信息,模型坐标
NORMAL   法线信息
TANGENT   切线信息
TEXCOOD(n)   从顶点传递到片段  高精度
COLOR  float4  从顶点传递到片段  低精度
SV_POSITION  经过mvp矩阵 把顶点坐标转换到屏幕坐标的位置信息
SV_TARGET  输出到那个renderer target(相机)上面,默认0

三、矩阵变换
Unity里面变换矩阵都是左乘,矩阵乘法不满足交换律
M 模型空间转换到世界空间
V 世界空间转换到相机空间
P 3D坐标系转换成2维屏幕坐标系
例子:假设有A,B两个物体,和C相机  ,A物体是B物体的子物体,将A的坐标转换到相机空间下
将A物体坐标从B空间转到世界空间:Vector3 worldpos = B.tranform.localToWorldMatrix.MultiplyPoint(A.transform.localPosition);
将A物体坐标从世界坐标转到相机空间:C.tranform.worldToLocalMatrix.MultiplyPoint(worldpos);

四、波动Shader
y=Asin(ωx+φ) 波动Shader主要应用这个正弦型函数
A:波动幅度
w:波动周期
φ:x轴偏移

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-20 21:02 , Processed in 0.078382 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部