shader学习点记录(一)

1.uv:A为一张图片信息(A被称为纹理) ,B为一个坐标信息(B被称为UV),拿B取A的纹理

2.属性声明:_XXX (展示名, 数据类型) = 默认值 数据类型有

Color - 一种颜色,由RGBA(红绿蓝和透明度)四个量来定义;

2D - 一张2的阶数大小(256,512之类)的贴图。这张贴图将在采样后被转为对应基于模型UV的每个像素的颜色,最终被显示出来;

Rect - 一个非2阶数大小的贴图;Cube - 即Cube map texture(立方体纹理),简单说就是6张有联系的2D贴图的组合,主要用来做反射效果(比如天空盒和动态反射),也会被转换为对应点的采样;

Range(min, max) - 一个介于最小值和最大值之间的浮点数,一般用来当作调整Shader某些特性的参数(比如透明度渲染的截止值可以是从0至1的值等);

 Float - 任意一个浮点数;

Vector - 一个四维数;

half类型表示半精度浮点数,计算性能好但是精度低,和float和double是同类型的浮点数;

fixed4不详,但是大意是四维的矢量

float2数据类型,这是一个二维float矢量,也就是(a,b)这样的

sampler2D是个啥?

                          其实在CG中,sampler2D就是和texture所绑定的一个数据容器接口。

                          简单理解的话,所谓加载以后的texture(贴图)说白了不过是一块内存存储的,

                          使用了RGB(也许还有A)通道,且每个通道8bits的数据。而具体地想知道像素与坐标的对应关系,以及获取这些数据,

            我们总不能一次一次去自己计算内存地址或者偏移,因此可以通过sampler2D来对贴图进行操作。
            更简单地理解,sampler2D就是GLSL中的2D贴图的类型,相应的,
            还有sampler1D,sampler3D,samplerCube等等格式。

3.混合模式

 Background - 最早被调用的渲染,用来渲染天空盒或者背景

Geometry - 这是默认值,用来渲染非透明物体(普通情况下,场景中的绝大多数物体应该是非透明的)

 AlphaTest - 用来渲染经过Alpha Test的像素,单独为AlphaTest设定一个Queue是出于对效率的考虑

Transparent - 以从后往前的顺序渲染透明物体

Overlay - 用来渲染叠加的效果,是渲染的最后阶段(比如镜头光晕等特效)

4.LOD表示细节呈现级别(也即是画质,即粗糙/细腻程度)列Lod 200 就是机器性能差低于200时shader罢工,性能好大于200时继续工作

5. #pragma surface surf Standard fullforwardshadows   #pragma surface表面着色器 surffunction着色器的代码(就是surf) lightModel(光照模型) [可选参数]

6.tex2D就是前面说的"利用UV去取图片获得纹理贴图"的做法  tex2D(贴图纹理,UV)

7.SurfaceOutput这个结构体里有啥东西 struct SurfaceOutput {

                        half3 Albedo;//像素的颜色

                        half3 Normal; //像素的法向值

                        half3 Emission; //像素的发散颜色

                        half Specular; //像素的镜面高光

                        half Gloss; //像素的发光强度

                        half Alpha; //像素的透明度

                    };

 

 

 

 

posted @ 2022-01-24 12:01  江小明Moon  阅读(69)  评论(0编辑  收藏  举报