浙江省住建厅网站,iis两个网站做ssl,wordpress出售电子书,wordpress系统升级的风险目录
一、顶点#xff08;Vertex#xff09;和法线(Normal)
二、UV信息
三、 基础数据种类
1 基础数据种类
2 基础数据数组
3 基础数据数组的赋值
4 对数据数组的调用
四、 基础矩阵
1 基础矩阵种类 2 对矩阵数组的调用
2.1对一个数据的调用 2.2对多个数据的调用 2…目录
一、顶点Vertex和法线(Normal)
二、UV信息
三、 基础数据种类
1 基础数据种类
2 基础数据数组
3 基础数据数组的赋值
4 对数据数组的调用
四、 基础矩阵
1 基础矩阵种类 2 对矩阵数组的调用
2.1对一个数据的调用 2.2对多个数据的调用 2.3对数据的赋值
五、基础纹理种类
六、欢迎收看Shader专栏 一、顶点Vertex和法线(Normal) 如果你读过这篇文章
Unity | Shader基础知识什么是shader_unity shader-CSDN博客
你就会知道我们在电脑里最初会储存一些数据。例如一个长方形我们只储存它的顶点信息或者颜色剩下的都是等用的时候临时计算的。
除此之外我们还会储存这些顶点的法线信息。
结论除了顶点的信息是需要开始给定的其余的信息都是靠后面自动计算出来的。
同样说明了我们大部分时间需要修改的只是顶点的信息。
二、UV信息
知道顶点和法线之后我们就可以把图形画出来了。如图1一个长方形。 图1 长方形 接下来我们需要给这个图形上色我们希望他有图案因此我找了一个图如图2因为我需要知道这个图片如何贴所以我需要知道图片的四个顶点因此把每个顶点设置为如下值。
我们想把这个图贴到左边的矩形上面。我们同样是决定四个角的位置。 图2 长方形和贴图 如果我希望整个图都贴上去就会变成如图3你会得到一个拉伸的图案。 图3 贴图贴到长方形身上 如果我希望用不拉伸的图片但贴满就会变成如图4。 图4 延展贴图 如果我希望只用左上角1/4的图片就会变成如图5。 图5 减小延展贴图 我们其实对贴图片是有要求的所以我们可以控制uv的数字来控制你希望要多少图片来贴。
例我想要左下角那片我就可以让uv的数据是左下角绿色框的四个数据如图6。 图6 uv的定位点 结论把uv的数据储存在顶点对应的位置就可以把图贴上去。
三、 基础数据种类
1 基础数据种类
这些符号都是用来储存数据用的但是为了节省空间例如我们很多时候明明知道π3.1415926.....等等但我们计算的时候往往只用3.14因为我们需要节省计算量计算机也是为了节省计算量我们设计了4种数据。 float 可以存32bits的数据 half 能存16bits的数据名字也很有意思就是一半float的一半 fixed 能存11bits的数据 int 只能存整数 根据不同的时候我们对数据的需要我们可以用不同的数据种类。 float 一般存世界坐标纹理坐标或者进行计算的时候用 half 一般存短向量方向动态颜色数据的时候用 fixed 一般存常规的颜色和简单的颜色 int 略 如果你读过我其他文章你就会发现我开始写的文章用的都是float原因是当时还没有给大家介绍过数据后续我就会用到不同的数据类型。
2 基础数据数组 int2 int3 int4 float2 float3 float4 half2 half3 half4 fixed2 fixed3 fixed4 其实就是vector2如果都用int组成的就是int2如果都用float2组成的就是float2。
以此类推.....
3 基础数据数组的赋值
几个数就用括号括起来填进去就可以如下
float4 colour1 (1,1,1,0);
4 对数据数组的调用
因为我们是4个数据很多时候我们只需要一个数据。
例float4 colour1 (1,2,3,0);
这里面的1,2,3,0分别对应着x,y,z,w也可以叫r,g,b,a
上面两个字母都可以用但不能混着用。 例 如果我只想要1 colour1.x 或者 colour1.r 都可以 如果我想要2和3 colour1.yz 或者 colour1.gb 都可以 如果我想要1、2和3 colour1.xyz 或者 colour1.rgb 都可以 以此类推...... 但不可以colour1.xgb 这种 四、 基础矩阵
关于矩阵的数学知识可以百度。
程序里左下角是0,0点右上角是3,3点和坐标排布一样如图7。 图7 矩阵 1 基础矩阵种类 矩阵数据 int2×2 int3×3 int4×4 float2×2 float3×3 float4×4 half2×2 half3×3 half4×4 fixed2×2 fixed3×3 fixed4×4 2 对矩阵数组的调用
2.1对一个数据的调用 例如图7矩阵可以写成int4×4 matrix 如果我想调用16就是横着第3个数据竖着第0个数据有点像x3,y0 matrix._m30 如果我想调用7就是matrix._m22 2.2对多个数据的调用 例如我想调用5,10,15,16赋值给一个int4 int4 num matrix._m02_m11_m20_m30; 2.3对数据的赋值 根据数学知识矩阵就是向量乘向量。 int4 a (1,2,3,4); int4 b (1,2,3,4); int4×4 matrix a×b 也可以只改变单个值例如我想改变如图7的1变成100。和二维数组一样改就可以了。
matrix[0,3] 100;
五、基础纹理种类
1 纹理类型
常见的只有 sampler2D sampler3D samplerCUBE 前两个在之前讲过了重点讲一下第三个。
一个立方体是由六个正方形组成的所以这个图形就是贴一个立方体用的天空盒就可以用这个。
一般这种图形的样子为如图8所示。 如图8 cube贴图 2 纹理类型和数据类型的联系
纹理类型最终还是需要用数据来存储的所以如果你用float储存那最后图片精度会高一些反之则低一些。
在shader里我们未来起名字通常可以这样起 smapler2D_half smaplerCUBE_half sampler2D_float samplerCUBE_float 六、欢迎收看Shader专栏
https://blog.csdn.net/weixin_49427945/category_12525804.html