![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Shader
Young_Super
这个作者很懒,什么都没留下…
展开
-
Unity内建的着色器
Unlit :不发光,只是一个纹理,不被任何光照影响Vertex Lit :顶点光照Diffuse :漫反射 --> 不是仅仅在顶点上计算光照,而是在片段程序中进行光照计算Normal mapped :法线贴图,比漫反射更昂贵 --> 增加了一个或多个纹理(法线贴图)和几个着色器结构 :一张关于法向量存储的贴图,把这张图采样出来的数据当做法向量,然后进行光照计算;主要目的是当我们的几何原创 2016-12-10 14:51:38 · 417 阅读 · 0 评论 -
Blend运算
Alpha Blending --> Alpha混合 Blending即是控制透明,处于光栅化的最后阶段给模型贴一个材质,在某个点处计算出的颜色成为源,而该点之前所累积的所有颜色值称为目标。语法 : Blend off --> 默认,不混合 Blend SrcFactor DstFactor原创 2017-02-24 16:00:54 · 1293 阅读 · 0 评论 -
MVP矩阵
MVP矩阵 : MVP变换 : 模型 --> 视口 --> 摄像机的变换,对应于顶点的透视变换,为了产生立体效果。 struct v2f { float4 pos : POSITION; } v2f vert(appdata_base v) { v2f o; o.原创 2017-03-06 09:31:05 · 1665 阅读 · 0 评论 -
Unity Shader内建的时间因子
_Time --> 类型 :float4 _SinTime --> 类型 :float4 --> 值 :(t/8 , t/4 , t/2 , t) _SinTime.x/ y / z / w_CosTime --> 类型 :float4 --> 值 :(t/8 , t/4 , t/2 , t)原创 2017-03-06 09:53:25 · 1180 阅读 · 0 评论 -
Fixed function Shader 1
Fixed function Shader必须要有pass通道,在pass通道中 :例 :Color(1,1,1,1) 表示这个shader有固定的颜色; 但是如果想要在面板上可配置这个颜色,那么就必须需要在properties中声明 :_Color("Color" , color) = (1,1,1,1) 然后在pass块中使用命令 :Color[_Color]原创 2017-02-27 14:05:28 · 329 阅读 · 0 评论 -
Shader中顶点片段级
Shader中的模型顶点,默认使用的是自身坐标系。例 :struct v2f { float4 pos : POSITION; fixed4 color : COLOR;}v2f vert(appdata_base v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP ,原创 2017-03-06 16:42:19 · 507 阅读 · 0 评论 -
Fragment Shader
顶点程序计算光照执行效率高,片段程序计算光照较慢,但是效果更加细腻平滑。从顶点集中传参数到片段集中,是不可以用NORMAL语义的将光照计算从顶点程序集中移植到片段程序集中 :struct v2f { float4 pos : POSITION; float3 normal : TEXCOORD1; // 不原创 2017-04-07 12:55:29 · 1702 阅读 · 0 评论 -
漫反射光照
法向量 :垂直于平面的向量 ; float3 N = normalize(v.normal);得到顶点到光源的向量 :_WorldSpaceLightPos0; float3 L = normalize(_WorldSpaceLightPos0); 模型旋转后环境光的设置 : win原创 2017-03-22 14:42:29 · 1486 阅读 · 0 评论 -
高光效果
V为从顶点指向摄像机的向量,L为顶点到光源的向量,R为反射向量如何证明高亮: 当V与R重合的时候,最为高亮。所以原创 2017-03-30 11:01:32 · 1582 阅读 · 0 评论 -
阴影效果
首先光源要开启阴影类型 :Shadow Type 改为不是No的类型,一般选择Soft Shadows地板(影子的载体) : 5.0以前,系统内建的shader,只能接收平行光产生的投影;5.0版以后的标准着色器则就可以接收任何形式的光源的投影 如果在4.x版本,如果想要让点光源投射的阴影也能显示,将playersettings中的Rend原创 2017-04-19 16:40:37 · 1375 阅读 · 1 评论 -
CG变量
在CG中不能直接使用Properties中的属性名称,在使用之前,必须现在CG代码块中声明一个同名的变量。Properties { _MainColor("MainColor", color) = (1,1,1,1) }CGPROGRAMfloat4 _MainColor;uniform float4 _SecondColor;原创 2017-03-03 16:34:38 · 537 阅读 · 0 评论 -
Shader中的Tags
SubShader内部可以有标签(Tags)的定义。Tags指定了这个SubShader的渲染顺序(时机),以及其他的一些设置。1、"Queue"标签 :定义渲染顺序,预制值为 : (1)、Background :值为1000,多用于天空盒 (2)、Geometry :值为2000,大部分物体都处于这个队列中,不透明的物体也处于这个队列中,这个队列内部的物体原创 2017-02-24 13:15:36 · 1113 阅读 · 0 评论 -
CG函数
函数 : 自定义函数 : 自定义的函数必须要先声明才能被使用; (1)、把函数定义在调用定制方法的方法(片段函数)前。 (2)、前向声明,前向声明方法的返回值类型、方法名和参数列表,一定没有方法体。 CG中所有的函数都是通过值拷贝进行传参,如果想要通过调用方法得到返回值进行赋值操作,可以通过ou原创 2017-03-03 16:22:02 · 773 阅读 · 0 评论 -
Shader整理
/***************** Shader就是给定了输入,然后给出输出进行着色的代码 ************一个Shader(着色器)包括:属性定义(Property Definition) : 用来指定这段代码将有哪些输入,定义的属性将被作为输入提供给所有的子着色器;一个或者多个子着色器(Subshader) : 子着色器是代码的主体,每一个子着色器中包含原创 2016-11-28 15:36:59 · 354 阅读 · 0 评论 -
Fixed function Shader 2
最重要的命令 :settexture 设置纹理 combine命令 :合并当前纹理,只有当前纹理会生效,之前计算的顶点数据等就不会有效果了,所以需要乘上primary(之前计算得到的数据)。又因为这个两个值都是浮点数,相乘得到的结果会比之前都要小,所以需要使用Unity的double(双倍)或者quad(四倍)操作。 一个settexture只可以带一个参数,原创 2017-02-28 14:22:20 · 337 阅读 · 0 评论 -
Fixed function Shader 3
透明处理 : 1、使用Blending命令,需要加上标签 :tags = { "Queue" = "Transparent" }Properties{ _MainTex("MainTex" , 2d) = "white" {} _SecondTex("Second" , 2d) = ""{} _ConstantCo原创 2017-03-01 10:52:27 · 405 阅读 · 0 评论 -
Surface Shader
surface shader是一种对vertex and fragment shader的一种包装,不能加pass通道,加pass会编译报错#pragma surface surf standard fullforwardshadowspragma :表示是一条编译指令surface :表示这个Shader是一个表面着色器surf :函数名,在之后的代码块中原创 2017-03-01 15:50:04 · 690 阅读 · 0 评论 -
vertex and fragment shader
在顶点和片段着色器中,至少要有一个pass通道。在CGPROGRAM 和 ENDCG中嵌入语言在顶点和片段着色器中,要求顶点和片段两个片段级都要编写函数 : #pragma vertex(关键字) vert(方法名) #pragma fragment frag顶点函数中,必须要又POSITION原创 2017-03-02 13:10:10 · 347 阅读 · 0 评论 -
Shaderlab的基本结构
Shaderlab 不区分大小写,Properties中不能加分号Shader "name" { [Properties] --> 可无 [SubShaders] [FallBack] --> 可无原创 2017-02-23 15:43:25 · 636 阅读 · 0 评论 -
CG基本数据类型
CG中的基本数据类型 : float --> 32位浮点数据,一个符号位。 half --> 16位浮点数据。 fixed --> 12位定点数,被所有的fragment profiles支持。 int --> 32位整型数据。 bool --> true or false 三目运算 :原创 2017-03-03 09:22:09 · 1270 阅读 · 0 评论 -
2D纹理采样
采样函数 :tex2D函数。 对一张贴图的采样范围 :(0~1)位图 :CG中,每有一个sampler2D(纹理),就会有一个uv坐标位图的模式 : Repeat :在左侧再拼接一个一样的图片 clamp :不重复过滤模式 : Billinear :会有两个颜色的混合原创 2017-04-24 16:38:50 · 3371 阅读 · 0 评论