前提一些一大段的文字是我自己的想法可以只看红字内容。States渲染状态的作用States就是渲染开关 / 渲染规则写在SubShader/Pass里用来控制怎么画、透不透、混不混合、删不删像素、深度怎么判断。通过后面的值来确定渲染的规则。片元每个片元代表了屏幕上的一个像素并且具有位置信息和与之相关的属性比如颜色深度值法线........基本的结构是渲染关键词 空格 状态类型若有多个空行就行若设置Cull Back意思是该材质的物体在渲染时只画正面拿正方体来说这个只画正面意思是只看得到正方体外部被渲染内部进去看什么也没有。下面右边的图是在正方体的内部。ZTest 深度测试判断该不该被挡住和 深度缓存深度缓存如果不设置的话默认是写入。通过了深度测试就会被渲染 离相机更近就会被渲染什么时候要存入到深度缓存中去这有三个物体C在最上面A在中间B在最下面假设他们都是正常的正方体C把AB都挡住了肯定只会显示C的颜色。在渲染C时是正常渲染中间遮挡部分的信息要存到深度缓存中这是为了方便AB被遮挡的部分与深度缓存中的信息进行对比进而判断宣不渲染。如果AC是透明的那么B就会完全显示出来所以AC要遮挡B的那一部分的信息就不用存储在深度缓存中这样B在进行对比的时候结果就是离相机最近的那一个就会被渲染。深度测试的使用假如场上只有一个物体使用了 ZTest Greater 这个深度测试表示他的值要大于深度缓存中的值才显示但是一开始深度缓存中的值是Max是最大的因为这是相机外简单来说上面A是不是被C挡住了一部分所以要看那一部分的深度缓存中的值(现在场上的物体可以看作是被相机挡住了所以要和相机那里的深度缓冲中的值比但那里的值是最大的所以你肯定比他小如果设置 ZTest Greater 这个深度测试 那就不会被渲染)(这个说法肯定不准确能帮助理解就好)上面可以不看看红色字就好ZTest Greater 表示 这个物体要大于对应的深度缓存中的值才会被渲染ZWrite Off 表示 这个物体 不会将位置等信息写到深度缓存中颜色混合流程一个物体设不设置Blend 表示这个物体颜色混不混合。混合这一步是在深度测试之后进行的一次深度测试就有一次颜色混合物体叠加一次混合一次混合之后会把颜色存储到颜色缓冲区中混合就是把自己颜色和对应的颜色缓冲区中的颜色进行混合假如现在场上有一个红色物体你现在又创建了一个透明的物体如果他们有叠加并且设置Blend的话他们的颜色就会混合。你可以按照我的理解也可以正确的理解举个列子假如现在场上有两个物体AB红色A遮挡了蓝色B的一部分先分两种情况A 不透明、A 是透明物体带 Blend一个物体若带有Blend就表示要颜色混合Blend 后面的内容就是怎么混合混合后的区域颜色会变然后存到颜色缓冲区中。