【www.520z-2.com - 话题作文】
篇一:《Unity内置Shader着色器效果整理》
Unity内置及常用Shader整理
一、Shader脚本结构:
Shader "Custom/zhezhao1"
{
Properties
{
}
SubShader
{
Tags {"Queue"="Transparent"}
Pass
{
}
}
SubShader
{
//ENDCG
}
Fallback "Diffuse"
}
二、Unity自带的Shader描述
1、标准着色器系列(Normal Shader Family)
(1)、凹凸漫反射(Bumped Diffuse)
属性:
NormalMap(法线贴图)属性,不改变对象形状,使用纹理来模拟较小表面的细节,而不是使用更多的多边形来实际雕刻细节。
漫反射属性:表面光照强度随表面与光之间夹角的减小而减小。光照强度仅取决于此角,且不随相机的移动或旋转而变化。
(2)、凹凸高光 (Bumped Specular)
属性:
1、法线贴图属性(Normal Map)
2、高光属性,与漫反射 (Diffuse) 一样,高光也计算简单的
(Lambertian) 光照,并附加一个依赖于观察者的高光亮点。这个称为 Blinn-Phong 光照模型。其具有取决于面角、光角和观察角的高光亮点。该亮点实际上只是对光源模糊反射的实时适宜模拟。亮点的模糊层次由检视器 (Inspector) 中的反光 (Shininess) 滑块控制。
此外,主纹理的 alpha 通道用作高光贴图 (Specular Map)(有时称为“光泽贴图”),用于定义对象哪些区域的反射性更强。Alpha 的黑色区域是零高光反射区域,而白色区域是全高光反射区域。
(3)、印花 (Decal)
属性:
1、印花属性,该着色器是顶点光照 (VertexLit) 着色器的变型。该着色器上的所有光照都将被其渲染为顶点光照。除主纹理之外,该着色器还将第二个纹理用于其它细节。第二个“印花”(Decal) 纹理使用 alpha 通道来确定主纹理的可见区域。印花纹理应为主纹理的补充。
比如说你有一个砖砌的墙壁,你可以使用一个砖块的纹理作为主纹理,然后使用带有 alpha 通道的 Decal 纹理在墙壁的不同地方涂鸦。
(4)、漫反射(Diffuse)
Diffuse 基于一个简单的光照模型-Lambertian,光照强度随着物体表面和光入射角夹角的减小而减小(即光垂直于表面时强度最大)。光照的强度只和该角度有关系,和摄像机无关。
(5)、顶点光照(Vertex-Lit)
属性:最简单的一种 Shader 之一,所有照射在该物体上的光在一个 Pass 里面渲染完,光源只在顶点计算。所以不会有任何基于像素渲染得效果,比如说:normal,light cookies 和 shadows.这个shader 对模
型的剖分(将一个物体从几何描述变为多边形表示的过程)非常敏
篇二:《unity3D学习之光照贴图》
光照贴图完全集成到 Unity 中,可在编辑器 (Editor) 中创建整个关卡,然后对其进行光照映射,让所有材质自动获取光照贴图,无需手动进行。对 Unity 中的光照贴图来说,所有灯光属性会直接映射到 Beast 光照烘培贴图工具中并烘培到纹理,提高性能。Unity 专业版扩展了全局照明 (Global Illumination) 功能,可烘培出真实、美观的光照,实时的相反操作则不可行。此外,Unity 专业版提供天光和发光材质,使场景照明更加有趣。 在本页中,您将看到光照贴图 (Lightmapping) 窗口中出现的所有属性的深入描述。要打开光照贴图 (Lightmapping) 窗口,请选择窗口 (Window) – 光照贴图 (Lightmapping) 选项。
检视器顶部有三个场景筛选器 (Scene Filter) 按钮,供用户将操作应用到所有对象或限制在灯光或渲染器内。
对象 (Object)每个对象的灯光、网格渲染器和地形烘培设置根据当前的选择而定。 单击场景筛选器 (Scene Filter) 按钮可在层级视图 (Hierarchy) 中轻松看到灯光、渲染器或地形。文章来自【狗刨学习网】
网格渲染器和地形 (Mesh Renderers and Terrains):
灯光 (Lights):
烘培 (Bake)全局烘培设置
篇三:《unity3d游戏开发之材质球、预设体镜头耀斑》
材质球(Material)的设置:
左键单击Assets-Create-Material(可直接把材质球拖拽给物体)
示例:设置颜色
设置贴图
材质球 Shader->Bumped Diffuse 法线视图 不要直接把图片拖拽到游戏对象上,否则会直接生成一个材质
所谓预设 (Prefab)就是把一个对象设置好需要的属性,脚本等,然后拖拽到提前创建好的文件夹。好处就是每次在需要它的时候直接使用就可以了,不用在重新创建,省时省力。预设体的使用一般都需要代码实现
PS:随着添加的东西越来越的,我们要对其进行分类,把同一类的放在一个文件夹,方便以后查找
先导入Light Flares 耀斑资源包。 在场景中选择主摄像机,调整摄像机位置和角度,使其面对平行光源,在Game窗口中就能看到耀斑的效果了。
产生耀斑的两个条件:
摄像机添加了FlareLayer组件,把耀斑资源拖给平行光“Flare”属性中。产生耀斑的太阳光需要在摄像机的范围内。
PS:耀斑效果只能被碰撞盒遮挡,对于实体模型无法遮挡这种效果。
这篇文章来自狗刨学习网
篇四:《unity3d外发光的shader》
Shader "Faye/OutLightting"
{
Properties
{
_MainTex("Texture (RGB)", 2D) = "black" {}
_Color("Color", Color) = (0, 0, 0, 1)
_AtmoColor("Atmosphere Color", Color) = (0.5, 0.5, 1.0, 1)
_Size("Size", Float) = 0.1
_Falloff("Falloff", Float) = 5
_FalloffPlanet("Falloff Planet", Float) = 5
_Transparency("Transparency", Float) = 15
_TransparencyPlanet("Transparency Planet", Float) = 1
}
SubShader
{
Pass
{
Name "PlanetBase"
Tags {"LightMode" = "Always"}
Cull Back
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform float4 _MainTex_ST;
uniform float4 _Color;
uniform float4 _AtmoColor;
uniform float _FalloffPlanet;
uniform float _TransparencyPlanet;
struct v2f
{
float4 pos : SV_POSITION;
float3 normal : TEXCOORD0;
float3 worldvertpos : TEXCOORD1;
float2 texcoord : TEXCOORD2;{unity自发光材质}.
v2f vert(appdata_base v)
{
v2f o;
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);
return o;
}
float4 frag(v2f i) : COLOR
{{unity自发光材质}.
i.normal = normalize(i.normal);
float3 viewdir = normalize(_WorldSpaceCameraPos-i.worldvertpos);
float4 atmo = _AtmoColor;
atmo.a = pow(1.0-saturate(dot(viewdir, i.normal)), _FalloffPlanet);
atmo.a *= _TransparencyPlanet*_Color;
float4 color = tex2D(_MainTex, i.texcoord)*_Color;
color.rgb = lerp(color.rgb, atmo.rgb, atmo.a);
return color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0), i.normal);
}
ENDCG
}
Pass
{
Name "AtmosphereBase"
Tags {"LightMode" = "Always"}
Cull Front
Blend SrcAlpha One
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma fragmentoption ARB_fog_exp2
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
uniform float4 _Color;
uniform float4 _AtmoColor;
uniform float _Size;
uniform float _Falloff;
uniform float _Transparency;
struct v2f
{
float4 pos : SV_POSITION;
float3 normal : TEXCOORD0;
float3 worldvertpos : TEXCOORD1;
};
v2f vert(appdata_base v)
{
v2f o;
v.vertex.xyz += v.normal*_Size;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.normal = v.normal;
o.worldvertpos = mul(_Object2World, v.vertex);
return o;
}
float4 frag(v2f i) : COLOR
{
i.normal = normalize(i.normal);
float3 viewdir = normalize(i.worldvertpos-_WorldSpaceCameraPos);
float4 color = _AtmoColor;
color.a = pow(saturate(dot(viewdir, i.normal)), _Falloff);
color.a *= _Transparency*_Color*dot(normalize(i.worldvertpos-_WorldSpaceLightPos0), i.normal);
return color;
}
ENDCG
}
}
FallBack "Diffuse"
}
篇五:《unity3d模型制作规范》
模型制作规范
本文提到的所有数字模型制作,全部是用3D MAX建立模型,即使是不同的驱动引擎,对模型的要求基本是相同的。当一个VR模型制作完成时,它所包含的基本内容包括场景尺寸、单位,模型归类塌陷、命名、节点编辑,纹理、坐标、纹理尺寸、纹理格式、材质球等必须是符合制作规范的。一个归类清晰、面数节省、制作规范的模型文件对于程序控制管理是十分必要的。
首先对制作流程作简单介绍:
素材采集-模型制作-贴图制作-场景塌陷、命名、展UV坐标-灯光渲染测试-场景烘培-场景调整导出
第一章 模型制作规范
1 在模型分工之前,必须确定模型定位标准。一般这个标准会是一个CAD底图。制作人员必须依照这个带有CAD底图的文件确定自己分工区域的模型位置,并且不得对这个标准文件进行任何修改。{unity自发光材质}.
导入到MAX里的CAD底图最好在(0,0,0)位置,以便制作人员的初始模型在零点附近。
2 在没有特殊要求的情况下,单位为米(Meters),如图
所示。
3 删除场景中多余的面,在建立模型时,看不见的地方不用建模,对于看不见的面也可以删除,主要是为了提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度。如Box底面、贴着墙壁物体的背面等。
4 保持模型面与面之间的距离推荐最小间距为当前场景最大尺度的二千分之一。例如:在制作室内场景时,物体的面与面之间距离不要小于2mm;在制作场景长(或宽)为1km的室外场景时,物体的面与面之间距离不要小于20cm。如果物体的面与面之间贴得太近,会出现两个面交替出现的闪烁现象。模型与模型之间不允许出现共面、漏面和反面,看不见的面要删掉。在建模初期一定要注意检查共面、漏面和反面的情况;
5 可以复制的物体尽量复制。如果一个1000个面的物体,烘焙好之后复制出去100个,那么他所消耗的资源,基本上和一个物体所消耗的资源一样多。
6 建模时最好采用Editable Poly面片建模,这种建模方式在最后烘焙时不会出现三角面现象,如果采用Editable Mesh 在最终烘焙时可能会出现三角面的情况。如图所示。
7 模型的塌陷
当一栋建筑模型经过建模、贴纹理之后,然后就是将模型塌陷,这一步工作也是为了下一步烘焙做准备。所以在塌陷的时候要注意一些问题:
(1) 按照“一建筑一物体”的原则塌陷,体量特别大或连体建筑可分塌为2-3个物体,
但导出前要按建筑再塌成一个物体,城中村要按照院落塌陷。
(2) 用Box反塌物体,转成Poly模式,这时需检查贴图有无错乱;
(3) 塌陷物体,按楼或者地块来塌陷,不要跨区域塌陷;
(4) 按项目对名称的要求进行严格的标准的命名;
(5) 所有物体的质心要归于中心,检查物体位置无误后锁定物体;