Shader学习笔记2
来源:互联网 发布:华为 acl 端口 编辑:程序博客网 时间:2024/06/06 04:58
这一篇就全是官方文档上我感觉有用的一些效果了。
这是一种加入天空盒的Shader,他会呈现出以下状态,他也可以放在人物模型上,有反光的感觉
注意: 如果需要加入发现贴图,在Input结构体里要加上INTERNAL_DATA(没分号)
Shader"MySurfaceShader/CubeMapShader"{
Properties{
_MainTexture("MainTexture",2D)="white"{}
//加入一个天空盒
_Cube("Cubemap",CUBE) = ""{}
}
SubShader{
//RenderType表示渲染模式,Opaque表示不透明物体
Tags{"RenderType"="Opaque"}
//Level of Detail
LOD200
CGPROGRAM
#pragma surface surf Lambert
structInput{
//取得属性面板的纹理uv,用固定格式:uv变量名
fixed2uv_MainTexture;
fixed3worldRefl;
};
//2D在CG语言里面用sampler2D表示,sampler中文含义:采样
//Color在CG语言里面用fixed4表示
sampler2D_MainTexture;
samplerCUBE_Cube;
voidsurf (InputIN,inoutSurfaceOutputo){
//每个顶点的颜色,通过uv计算得到
o.Albedo =tex2D(_MainTexture,IN.uv_MainTexture).rgb;
o.Emission =texCUBE(_Cube,IN.worldRefl).rgb;
}
ENDCG
}
FallBack"DIFFUSE"
}
这个是边缘光的Shader
可以调节边缘光的颜色和强度
Shader"MySurfaceShader/HeroShader"{
Properties{
_MainTexture("MainTexture",2D)="white"{}
_BumpTex("BumpTexture",2D) ="bump"{}
//边缘照明强调对象的边缘。(看上去像是边上一圈光)添加一些放射光基于曲面法线夹角和视图方向。
_RimColor("Rim Color",Color) = (0.26,0.19,0.16,0.0)
_RimPower("Rim Power",Range(0.5,8.0))=3.0
}
SubShader{
//RenderType表示渲染模式,Opaque表示不透明物体
Tags{"RenderType"="Opaque"}
//Level of Detail
LOD200
CGPROGRAM
#pragma surface surf Lambert
structInput{
//取得属性面板的纹理uv,用固定格式:uv变量名
fixed2uv_MainTexture;
fixed2uv_BumpTex;
//使用viewDir内置表面着色器变量。
fixed3viewDir;
};
//2D在CG语言里面用sampler2D表示,sampler中文含义:采样
//Color在CG语言里面用fixed4表示
sampler2D_MainTexture;
sampler2D_BumpTex;
fixed4_RimColor;
half_RimPower;
voidsurf (InputIN,inoutSurfaceOutputo){
//每个顶点的颜色,通过uv计算得到
o.Albedo =tex2D(_MainTexture,IN.uv_MainTexture).rgb;
o.Normal =UnpackNormal(tex2D(_BumpTex,IN.uv_BumpTex));
halfrim = 1.0 -saturate(dot(normalize(IN.viewDir),o.Normal));
o.Emission = _RimColor.rgb*pow(rim,_RimPower);
}
ENDCG
}
FallBack"DIFFUSE"
}
贴图细节Shader
贴图细节Shader
效果就像屏幕上的脏东西,长得和贴图一样
Shader"MySurfaceShader/TextureDetailShader"{
Properties{
_MainTexture("MainTexture",2D)="white"{}
//细节处理,更真实,更立体
_Detail("Detail",2D)="grey"{}
}
SubShader{
//RenderType表示渲染模式,Opaque表示不透明物体
Tags{"RenderType"="Opaque"}
//Level of Detail
LOD200
CGPROGRAM
#pragma surface surf Lambert
structInput{
//取得属性面板的纹理uv,用固定格式:uv变量名
fixed2uv_MainTexture;
//感觉像屏幕上的脏东西,长得和贴图一样
fixed4screenPos;
};
//2D在CG语言里面用sampler2D表示,sampler中文含义:采样
//Color在CG语言里面用fixed4表示
sampler2D_MainTexture;
sampler2D_Detail;
voidsurf (InputIN,inoutSurfaceOutputo){
//每个顶点的颜色,通过uv计算得到
o.Albedo =tex2D(_MainTexture,IN.uv_MainTexture).rgb;
fixed2screenUV = IN.screenPos.xy/IN.screenPos.w;
screenUV *=fixed2(8,6);
o.Albedo *=tex2D(_Detail,screenUV).rgb*2;
}
ENDCG
}
FallBack"DIFFUSE"
}
这是细节Shader,和上面的代码差别不大,但是效果还是有区别的。就是在基础贴图上乘等于一张细节贴图,产生一种贴图融合的感觉
Shader"MySurfaceShader/DetailShader"{
Properties{
_MainTexture("MainTexture",2D)="white"{}
_BumpTex("BumpTexture",2D) ="bump"{}
//细节处理,更真实,更立体
_Detail("Detail",2D)="grey"{}
}
SubShader{
//RenderType表示渲染模式,Opaque表示不透明物体
Tags{"RenderType"="Opaque"}
//Level of Detail
LOD200
CGPROGRAM
#pragma surface surf Lambert
structInput{
//取得属性面板的纹理uv,用固定格式:uv变量名
fixed2uv_MainTexture;
fixed2uv_BumpTex;
fixed2uv_Detail;
};
//2D在CG语言里面用sampler2D表示,sampler中文含义:采样
//Color在CG语言里面用fixed4表示
sampler2D_MainTexture;
sampler2D_BumpTex;
sampler2D_Detail;
voidsurf (InputIN,inoutSurfaceOutputo){
//每个顶点的颜色,通过uv计算得到
o.Albedo =tex2D(_MainTexture,IN.uv_MainTexture).rgb;
o.Albedo *=tex2D(_Detail,IN.uv_Detail).rgb*2;
o.Normal =UnpackNormal(tex2D(_BumpTex,IN.uv_BumpTex));
}
ENDCG
}
FallBack"DIFFUSE"
}
卡通效果Shader是对物体的定点进行修改,产生扩张和收缩的效果,扩张0.1,大概就像是卡通的样子(夸张)
Shader"MySurfaceShader/AmountShader"{
Properties{
_MainTexture("MainTexture",2D)="white"{}
//人物变粗变细,0是正常,0+是向外扩张,0-是向内收缩
_Amount ("Extrusion Amount",Range(-1,1))= 0.5
}
SubShader{
//RenderType表示渲染模式,Opaque表示不透明物体
Tags{"RenderType"="Opaque"}
CGPROGRAM
#pragma surface surf Lambert vertex:vert
structInput{
//取得属性面板的纹理uv,用固定格式:uv变量名
fixed2uv_MainTexture;
};
fixed_Amount;
voidvert(inoutappdata_fullv){
v.vertex.xyz += v.normal*_Amount;
}
//2D在CG语言里面用sampler2D表示,sampler中文含义:采样
//Color在CG语言里面用fixed4表示
sampler2D_MainTexture;
voidsurf (InputIN,inoutSurfaceOutputo){
//每个顶点的颜色,通过uv计算得到
o.Albedo =tex2D(_MainTexture,IN.uv_MainTexture).rgb;
}
ENDCG
}
FallBack"DIFFUSE"
}
颜色修补Shader
颜色修补Shader
这个Shader主要是surface中有finalcolor(Tint)的函数,是最后调用修补颜色用的
Shader"MySurfaceShader/TintShader"{
Properties{
_MainTexture("MainTexture",2D)="white"{}
//色彩(底色)
_ColorTint("Tint",Color) = (1.0,0.6,0.6,1.0)
}
SubShader{
//RenderType表示渲染模式,Opaque表示不透明物体
Tags{"RenderType"="Opaque"}
CGPROGRAM
//需要定义
#pragma surface surf Lambert finalcolor:mycolor
structInput{
//取得属性面板的纹理uv,用固定格式:uv变量名
fixed2uv_MainTexture;
};
fixed4_ColorTint;
//颜色修补函数
voidmycolor (InputIN,SurfaceOutputo,inoutfixed4color){
color*= _ColorTint;
}
sampler2D_MainTexture;
voidsurf (InputIN,inoutSurfaceOutputo){
//每个顶点的颜色,通过uv计算得到
o.Albedo =tex2D(_MainTexture,IN.uv_MainTexture).rgb;
}
ENDCG
}
FallBack"DIFFUSE"
}
0 0
- Shader学习笔记2
- D3D10与Geometry Shader学习笔记2
- 风宇冲shader学习笔记
- unity3d shader 学习笔记
- Shader 学习笔记 20151031
- Shader 学习笔记 20151102
- Shader 学习笔记 20151103
- Shader 学习笔记 20151104
- Shader 学习笔记 20151105
- Shader 学习笔记 20151110
- Shader 学习笔记 20151112
- Shader 学习笔记 20151113
- Shader 学习笔记 20151121
- Shader 学习笔记 20151124
- Shader 学习笔记 20151201
- shader学习笔记二
- shader学习笔记一
- shader学习笔记三
- 【复习代码】双向链表
- 16.git使用总结
- 《Asp.Net Web Api 》-----路由机制
- 深度学习BP算法 BackPropagation
- 二叉树插入算法的非递归版本
- Shader学习笔记2
- 关于微信小程序
- 一个新任程序猿的自白
- linux ubuntu12.04初学 ssh/putty配置
- java中的堆和栈
- Android流氓代码块(亲测可行)
- 树莓派上的kaili 每次启动都进入emergency mode
- android 相邻两个activity跳转的时候动画设置
- codeforces 500c New Year Book Reading 【思维】