汉语大全>话题作文范文>unity,中让物体发光

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度

四元数