unity shader教程怎么模拟方向光

Cg入门18:Fragment shader - 边缘泛光和透明
处理后效果:
1.tags{&queue&=&transparent&}//调整渲染顺序
2.blendsrcAlphaoneMinussrcalpha //混合透明
3.zwriteoff //写入的z轴深度关掉
关掉z轴深度与不关掉的区别:
Shader &Sbin/trans& {
Properties {
_Scale(&Scale&,Range(1,8)) = 2
SubShader {
tags{&queue& = &transparent& }
blend srcAlpha oneMinussrcalpha
zwrite off //写入的z轴深度关掉
#pragma vertex vert
#pragma fragment frag
#include &UnityCG.cginc&
struct v2f{
float4 pos : POSITION;
float4 col : COLOR;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
v2f vert(appdata_base v){
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.col = fixed4(0,1,1,1);
o.vertex = v.
o.normal = v.
fixed4 frag(v2f v):COLOR
float3 N = mul((float3x3)_World2Object,v.normal);
N = normalize(N);
float4 wpos = mul(_Object2World,v.vertex);
float3 V = _WorldSpaceCameraPos.xyz - wpos.
V = normalize(V);
float bright = 1 -saturate(dot(N,V));
bright = pow(bright,_Scale);
return fixed4(1,1,1,1)*
FallBack &Diffuse&
优化部分:
怎么关掉pass方法,
方法1:注释掉
方法2:blend zero one (解释:zero 表示0乘以当前pass颜色输出,0就是不输出;one就是全部输出前面的pass通道计算的颜色值)
dstAlpha : 当前渲染的alpha值乘以当前alpha值
srcAlpha :采用原始alpha乘以当前alpha值
blendoprevsub:用之前pass渲染的颜色值减去当前的pass颜色值
Shader &Sbin/trans& {
Properties {
_MainColor(&MainColor&,Color) = (1,1,1,1)
_Scale(&Scale&,Range(1,10)) = 2
_Outer(&Outer&,Range(0,1)) = 0.2
SubShader {
tags{&queue& = &transparent& }
blend srcAlpha oneMinussrcalpha
zwrite off //写入的z轴深度关掉
#pragma vertex vert
#pragma fragment frag
#include &UnityCG.cginc&
struct v2f{
float4 pos : POSITION;
float4 col : COLOR;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
fixed4 _MainC
v2f vert(appdata_base v){
v.vertex.xyz += v.normal*_O
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.col = fixed4(0,1,1,1);
o.vertex = v.
o.normal = v.
fixed4 frag(v2f v):COLOR
float3 N = mul((float3x3)_World2Object,v.normal);
N = normalize(N);
float4 wpos = mul(_Object2World,v.vertex);
float3 V = _WorldSpaceCameraPos.xyz - wpos.
V = normalize(V);
float bright = saturate(dot(N,V));
bright = pow(bright,_Scale);
_MainColor.a *=
return _MainC
//==============================================================================
blendop revsub
blend dstAlpha one
//之前的alpha值
//blend zero one
zwrite off //写入的z轴深度关掉
#pragma vertex vert
#pragma fragment frag
#include &UnityCG.cginc&
struct v2f{
float4 pos : POSITION;
v2f vert(appdata_base v){
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
fixed4 frag(v2f v):COLOR
return fixed4(1,1,1,1);
//==============================================================================
blend srcAlpha oneMinussrcalpha
//blend zero one
zwrite off //写入的z轴深度关掉
#pragma vertex vert
#pragma fragment frag
#include &UnityCG.cginc&
struct v2f{
float4 pos : POSITION;
float4 col : COLOR;
float3 normal:TEXCOORD0;
float4 vertex:TEXCOORD1;
v2f vert(appdata_base v){
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.col = fixed4(0,1,1,1);
o.vertex = v.
o.normal = v.
fixed4 frag(v2f v):COLOR
float3 N = mul((float3x3)_World2Object,v.normal);
N = normalize(N);
float4 wpos = mul(_Object2World,v.vertex);
float3 V = _WorldSpaceCameraPos.xyz - wpos.
V = normalize(V);
float bright = 1 - saturate(dot(N,V));
bright = pow(bright,_Scale);
return fixed4(1,1,1,1)*
FallBack &Diffuse&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'后使用快捷导航没有帐号?
只需一步,快速开始
&加载中...
1 / 250 页
查看: 58889|回复: 2495
非常牛逼的2个外发光shader!~~~~~~~~~~
TA的其他好贴
马上注册,加入CGJOY,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
本帖最后由 akbinlin 于
10:25 编辑
实现效果:可以使模型外表有发光效果
RimLight.shader:
RimLight1.png (73.34 KB, 下载次数: 860)
13:51 上传
RimLight2.png (19.47 KB, 下载次数: 842)
13:50 上传
RimLight只要设置一个成材质球就行
SM_TransparentRim.shader:
SM_TransparentRim1.png (77.36 KB, 下载次数: 869)
13:53 上传
SM_TransparentRim2.png (59.34 KB, 下载次数: 829)
13:53 上传
SM_TransparentRim需要设置成2个材质球~
下载地址:~
游客,如果您要查看本帖隐藏内容请 升级到三星以上高级会员可
如何勾引别人关注你?
感谢楼主分享,正是我需要的好东西~~谢谢~
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
新手请多指教
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
CGJOY网友&
& && && && && && && && && && && && && && && && &kan& &kan
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
新手请多指教
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
走过,路过千万不哟错过啊
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
正需要这个材质&&下来试一下
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
看起来不错
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
感谢楼主分享,正是我需要的好东西~~谢谢~
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
超牛逼的插件。。。顶。。。
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
很酷的插件
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
超牛逼的插件。。。。顶。。。
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
超牛逼的插件。。。。顶。。。
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
{:5_187:}顶
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
好牛啊& &顶一个
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
超牛逼的插件。。。。顶。。。ooooooooooo
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
1 / 250 页
找CG工作,上CG招聘网!
Powered by【风宇冲】Unity3D教程宝典之Shader篇:第九讲Render&Path
原创文章如需转载请注明:转载自
&& Shader第九讲 Render
Render Path定义Render
Path,就是采取的光照流程。
Path设置可以在Edit-& Project
Settings-&Player 里设定,见下图。也可以直接在摄像机的Inspector面板里设置。
Path详细讲解&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
一:Vertex Lit
Lit即顶点光照,顾名思义, 就是所有的光照计算都是在顶点进行的,因此所有的像素运算效果都不支持,如阴影,法线贴图,light
cookies等。一个物体一般只有一个pass。效果最差,运行最快。适合老设备或者一般的移动设备。
二:Forward Lighting
Forward Lighting是以shader为基础的。支持像素光照(包括法线贴图和light
cookies)。支持单方向光的实时阴影。通常最亮(对环境影响最大)的光在Render
Mode项勾选Important,对应Forward,其余的用Not Important,对应Vertex Lit。
(1)最亮的几个光源使用像素计算
(2)其次的(最多4个)使用顶点计算。剩余的使用
(3)Spherical Harmonics (SH)计算,它是一种快速的近似算法。
1.Render Mode为Not Important的肯定是顶点计算或者SH.
2.亮度值最高的方向光肯定是像素计算
3.Important的是像素计算。
如果光的数量没有达到Quaility Setting里设置的Pixel Light
Count。则依据亮度值将顶点或者SH转换成像素计算。
Bass Pass:
渲染一个像素计算的方向光。以及所有顶点计算和SH方向光。之后每增加一个逐像素计算的光都需要增加一个对应的pass.LightMap在此应用,在此步的方向光可以有阴影。
Additional Pass:额外的像素计算光,无阴影。也就是说Forward
Lighting只支持一个有阴影的方向光。
Spherical Harmonics,效率极高,不支持light
cookies和法线贴图,更新频率慢,不支持镜面反射,
三:Deferred
LightingDeferred Lighting
给予光照和阴影最棒的效果,对设备性能要求最高。要求Unity Pro。不支持移动设备及Flash。
细节:支持,多个带实时阴影的光(例如足球里多个灯打在球员身上的效果),&
不真正支持反锯齿,不支持半透明。至少是Shader Model 3.0
。光照是在屏幕裁剪空间计算的,所以复杂度是根据涉及的像素点的数量,而并不是场景模型的复杂度。适合小范围光源
三个阶段:
Base Pass: 绘制深度缓冲等裁剪空间的缓冲信息。储存在一张ARGB32 Render
Texture中,RGB存该点法线,A存镜面反射强度。如果深度能读取为Texture的话,深度不会被显式渲染。不能读取的话,则使用着色器替换Shader
Replacement,即Camera.RenderWithShader。Base
Pass的结果是,场景的物体附带了深度缓冲,以及一张储存法线和镜面强度的Texture。
Lighting Pass:
只支持Blinn-Phong光照模型,阴影也是在这一步计算。之前产生的缓冲在这一步用于计算光照。产生的光照缓冲同样是一张ARGB32
Render Texture,RGB表漫反射光的颜色,A表单色镜面光 。
Final Pass: 将纹理颜色与储存的光照结果组合。LightMap在这一步被应用 注意:在Deferred
Lighting的这一步完成后,才会到Forward Lighting。
Path对比图
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。后使用快捷导航没有帐号?
只需一步,快速开始
&加载中...
查看: 828|回复: 1
请教一下模型的发光shader怎么写
TA的其他好贴
马上注册,加入CGJOY,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
类似highlighting system这个插件的沿着mesh发光的效果,原理是什么呢?谢谢
如何勾引别人关注你?
同问同问同问
本楼回复(<span id="dp_count_)
如何勾引别人关注你?
找CG工作,上CG招聘网!
Powered by}

我要回帖

更多关于 unity玻璃材质shader 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信