unity,中让物体发光
详细内容
篇一:《unity3d外发光的shader》
Shader"Faye/OutLightting"
{
Properties
{
_MainTex("Texture(RGB)",2D)="black"{}
_Color("Color",Color)=(0,0,0,1)
_AtmoColor("AtmosphereColor",Color)=(0.5,0.5,1.0,1)
_Size("Size",Float)=0.1
_Falloff("Falloff",Float)=5
_FalloffPla("FalloffPla",Float)=5
_Transparency("Transparency",Float)=15
_TransparencyPla("TransparencyPla",Float)=1
}
SubShader
{
Pass
{
Name"PlaBase"
Tags{"LightMode"="Always"}
CullBack
CGPROGRAM
#pragmavertexvert
#pragmafragmentfrag
#pragmafragmentoptionARB_fog_exp2
#pragmafragmentoptionARB_precision_hint_fastest
#include"UnityCG.cginc"
uniformsampler2D_MainTex;
uniformfloat4_MainTex_ST;
uniformfloat4_Color;
uniformfloat4_AtmoColor;
uniformfloat_FalloffPla;
uniformfloat_TransparencyPla;
structv2f
{
float4pos:SV_POSITION;
float3normal:TEXCOORD0;
float3worldvertpos:TEXCOORD1;
float2texcoord:TEXCOORD2;
v2fvert(appdata_basev)
{
v2fo;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.normal=v.normal;
o.worldvertpos=mul(_Object2World,v.vertex).xyz;
o.texcoord=TRANSFORM_TEX(v.texcoord,_MainTex);
returno;
}
float4frag(v2fi):COLOR
{
i.normal=normalize(i.normal);
float3viewdir=normalize(_WorldSpaceCameraPos-i.worldvertpos);
float4atmo=_AtmoColor;
atmo.a=pow(1.0-saturate(dot(viewdir,i.normal)),_FalloffPla);
atmo.a*=_TransparencyPla*_Color;
float4color=tex2D(_MainTex,i.texcoord)*_Color;
color.rgb=lerp(color.rgb,atmo.rgb,atmo.a);
returncolor*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0),i.normal);
}
ENDCG
}
Pass
{
Name"AtmosphereBase"
Tags{"LightMode"="Always"}
CullFront
BlendSrcAlphaOne
CGPROGRAM
#pragmavertexvert
#pragmafragmentfrag
#pragmafragmentoptionARB_fog_exp2
#pragmafragmentoptionARB_precision_hint_fastest
#include"UnityCG.cginc"
uniformfloat4_Color;
uniformfloat4_AtmoColor;
uniformfloat_Size;
uniformfloat_Falloff;
uniformfloat_Transparency;
structv2f
{
float4pos:SV_POSITION;
float3normal:TEXCOORD0;
float3worldvertpos:TEXCOORD1;
};
v2fvert(appdata_basev)
{
v2fo;
v.vertex.xyz+=v.normal*_Size;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.normal=v.normal;
o.worldvertpos=mul(_Object2World,v.vertex);
returno;
}
float4frag(v2fi):COLOR
{
i.normal=normalize(i.normal);
float3viewdir=normalize(i.worldvertpos-_WorldSpaceCameraPos);
float4color=_AtmoColor;
color.a=pow(saturate(dot(viewdir,i.normal)),_Falloff);
color.a*=_Transparency*_Color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0),i.normal);
returncolor;
}
ENDCG
}
}
FallBack"Diffuse"
}
篇二:《Unity3D学习之物体阴影效果实现》阴影在3D游戏中是非常重要的一个细节,所以这一章我们专门介绍如何给物体添加阴影效果。
我们在运行前面的Demo的时候会有一种感觉,就是经过大树的时候会有阴影投射到方块上。
那么下面就来介绍一下如何给方块添加阴影。
灯光是阴影产生的一个非常重要的要素,
默认的灯光的ShadowType是NoShadows:
将其选中SoftShadow便可以产生柔和的阴影效果:
选中HardShadow阴影边界则更为明显:文章来自【狗刨学习网】
这个根据需要自行调整。
在方块周围放上树木,那么树木也会产生阴影:
至此,简单的阴影设置便完成了。
篇三:《Unity内置Shader着色器效果整理》Unity内置及常用Shader整理
一、Shader脚本结构:
Shader"Custom/zhezhao1"
{
Properties
{{unity,中让物体发光}.
}
SubShader
{
Tags{"Queue"="Transparent"}
Pass
{
}
}
SubShader
{
//ENDCG
}
Fallback"Diffuse"
}
二、Unity自带的Shader描述
1、标准着色器系列(NormalShaderFamily)
(1)、凹凸漫反射(BumpedDiffuse)
属性:
NormalMap(法线贴图)属性,不改变对象形状,使用纹理来模拟较小表面的细节,而不是使用更多的多边形来实际雕刻细节。
漫反射属性:表面光照强度随表面与光之间夹角的减小而减小。光照强度仅取决于此角,且不随相机的移动或旋转而变化。
(2)、凹凸高光(BumpedSpecular)
属性:
1、法线贴图属性(NormalMap)
2、高光属性,与漫反射(Diffuse)一样,高光也计算简单的
(Lambertian)光照,并附加一个依赖于观察者的高光亮点。这个称为Blinn-Phong光照模型。其具有取决于面角、光角和观察角的高光亮点。该亮点实际上只是对光源模糊反射的实时适宜模拟。亮点的模糊层次由检视器(Inspector)中的反光(Shininess)滑块控制。{unity,中让物体发光}.
此外,主纹理的alpha通道用作高光贴图(SpecularMap)(有时称为“光泽贴图”),用于定义对象哪些区域的反射性更强。Alpha的黑色区域是零高光反射区域,而白色区域是全高光反射区域。
(3)、印花(Decal)
属性:
1、印花属性,该着色器是顶点光照(VertexLit)着色器的变型。该着色器上的所有光照都将被其渲染为顶点光照。除主纹理之外,该着色器还将第二个纹理用于其它细节。第二个“印花”(Decal)纹理使用alpha通道来确定主纹理的可见区域。印花纹理应为主纹理的补充。
比如说你有一个砖砌的墙壁,你可以使用一个砖块的纹理作为主纹理,然后使用带有alpha通道的Decal纹理在墙壁的不同地方涂鸦。{unity,中让物体发光}.
(4)、漫反射(Diffuse)
Diffuse基于一个简单的光照模型-Lambertian,光照强度随着物体表面和光入射角夹角的减小而减小(即光垂直于表面时强度最大)。光照的强度只和该角度有关系,和摄像机无关。
(5)、顶点光照(Vertex-Lit)
属性:最简单的一种Shader之一,所有照射在该物体上的光在一个Pass里面渲染完,光源只在顶点计算。所以不会有任何基于像素渲染得效果,比如说:normal,lightcookies和shadows.这个shader对模
型的剖分(将一个物体从几何描述变为多边形表示的过程)非常敏
篇四:《Unity3D资料简单的物体运动》Unity3D入门简单的物体运动
这章我们来了解一下Translate的使用
首先我们来看看场景的搭建:建一个立方体,加一个点光源。
我们要实现的就是让场景中的立方体延X轴嗖嗖的移动
那么我们在Project新建一个js脚本Creat->Javascript
键入代码1.
2.
3.
4.functionUpdate(){transform.Translate(Vector3(1,0,0));}
复制代码
然后将js文件拖到Hierarchy面板的立方体上实现绑定。
运行一下,我们可以看到,立方体嗖的一声不见了。它一定是肚子饿了赶去吃饭了。{unity,中让物体发光}.
好了,我们来修改代码让它慢一点。
1.functionUpdate()
2.{
3.transform.Translate(Vector3(1,0,0)*Time.deltaTime);4.}
复制代码
运行一下,这会它老实了,慢慢的移动了。
这是怎么回事呢。接下来我们一步一步的分解代码。
首先Update()没什么好讲的了,一直在用,相信大家都明白怎么回事。
接下来是
transform:场景中的每一个对象都有一个transform,用来储存和控制物体的位置,旋转和缩放。
Translate:是transform的函数,用来移动物体。它接受一个三维向量(Vector3)参数来移动。其实它还有第二个参数,就是按照自身坐标轴移动还是按照世界坐标轴移动。这里暂且不表。
Vector3:表示3D的向量和点。3个参数分别代表了向量x,y,z。
transform.Translate(Vector3(1,0,0));这句代码的意思就是,让被绑定的物体,也就是场景中的立方体,向x轴的方向移动1个单位.
Time.deltaTime:是一个时间增量,我想应该是这一帧的时间。像flash中的一秒30帧,每帧多少秒之类的。在这个程序中它的值是0.016左右。原本移动一个单位,现在乘以0.016,那肯定慢了。也就是说,它的作用其实就是减慢移动的速度。
篇五:《unity3D学习之光照贴图》光照贴图完全集成到Unity中,可在编辑器(Editor)中创建整个关卡,然后对其进行光照映射,让所有材质自动获取光照贴图,无需手动进行。对Unity中的光照贴图来说,所有灯光属性会直接映射到Beast光照烘培贴图工具中并烘培到纹理,提高性能。Unity专业版扩展了全局照明(GlobalIllumination)功能,可烘培出真实、美观的光照,实时的相反操作则不可行。此外,Unity专业版提供天光和发光材质,使场景照明更加有趣。在本页中,您将看到光照贴图(Lightmapping)窗口中出现的所有属性的深入描述。要打开光照贴图(Lightmapping)窗口,请选择窗口(Window)–光照贴图(Lightmapping)选项。
检视器顶部有三个场景筛选器(SceneFilter)按钮,供用户将操作应用到所有对象或限制在灯光或渲染器内。
对象(Object)每个对象的灯光、网格渲染器和地形烘培设置根据当前的选择而定。单击场景筛选器(SceneFilter)按钮可在层级视图(Hierarchy)中轻松看到灯光、渲染器或地形。文章来自【狗刨学习网】
网格渲染器和地形(MeshRenderersandTerrains):
灯光(Lights):
烘培(Bake)全局烘培设置
篇六:《【龙图教育】unity3d:如何让物体(自动)旋转》Unity中的旋转。主要有三种方式。变换矩阵,四元数和欧拉角。
变换矩阵
可以执行任意的3d变换(平移,旋转,缩放,切边)并且透视变换使用齐次坐标。一般比较少用到。Unity中提供了一个Matrix4x4矩阵类
欧拉角
“用来确定定点转动刚体位置的3个一组独立角参量,由章动角θ、旋进角(即进动角)ψ和自转角j组成”{unity,中让物体发光}.
在Unity中,Quaternion.eulerAngles返回旋转的角度,绕z轴旋转euler.z角度,绕x轴旋转euler.x度,绕y轴旋转euler.y度
四元数