unity的forward rendering 中光源的使用和light的render mode
- 格式:doc
- 大小:20.50 KB
- 文档页数:2
Unity 应用能力认证考试模拟题1. 以下哪一个选项不属于Unity引擎所支持的视频格式文件?【D】A. 后缀名为mov的文件B. 后缀名为mpg的文件C. 后缀名为avi的文件D. 后缀名为swf的文件2.HDR高动态光照渲染属于下列哪个选项的属性?【D】A. Lightmapping视图B. Light Probe组件C. Occlusion Culling视图D. Camera组件3. Unity引擎的中,以下对Mesh Renderer组件描述正确的是哪一项?【C】A. Mesh Renderer组件决定了场景中游戏对象的位置,旋转和缩放。
B. 为场景中的某一游戏对象增添物理的特性,需要为该游戏对象添加Mesh Renderer组件。
C. Mesh Renderer组件从Mesh Filter组件中获得网格信息,并根据物体的Transform组件所定义的位置进行渲染。
D. Mesh Renderer是从网格资源中获取网格信息的组件。
4. 当一个物体在视野内被其它物体遮挡,不希望对该物体进行渲染,可以通过以下哪一个模块实现该功能?【A】A. Occlusion CullingB. NavMeshC. Light ProbesD. Culling Mask5. 制作Skybox时,为了避免出现纹理拼接时产生的接缝,这些纹理的循环方式应该设置为以下哪一项?【B】A. RepeatB. ClampC. TrilinearD. Bilinear6. 下列哪个菜单可以用于打开设置发布程序选项的面板【C】A. General Settings →Layers →CollisionB. Edit →Render SettingsC. Edit →Project Settings →PlayerD. Edit →Preferences7. Unity引擎使用的是左手坐标系还是右手坐标系?【A】A. 左手坐标系B. 右手坐标系C. 可以通过Project Setting切换左右手坐标系D. 可以通过Reference切换左右手坐标系8. 对摄像机Rendering Path的设置中,以下哪一项可以使Spot Light对物体光照产生的阴影以实时的方式渲染?【C】A. Vertex LitB. ForwardC. Deferred LightingD. 以上都可以9. 以下哪组摄像机中Normalized View Port Rect的数值设置可以使得摄像机显示的画面位于1280*720分辨率的屏幕画面的右上角。
1.unity简介和安装(x)2.unity基础操作unity窗口界面介绍1.Scene场景编辑窗口(Q、W、E、R、T/按住鼠标右键—旋转视角、按住鼠标右键Q、E、W、S、A、D)2.Game游戏运行窗口(运行按钮,暂停按钮,下一帧画面)3.Hierar chy 场景物体列表窗口(三角符号表示物体间的父子关系)4.Projec t 项目资源列表窗口(与文件夹对应,mete文件,移动尽量在u nity中移动而不是在文件夹中移动,可能报错)5.Inspec tor 属性编辑列表窗口(选中Hier archy物体,出现物体相关属性)6.Console 控制台输出窗口7.其他常用窗口:Layers(层)2by3(显示模式)unity菜单界面介绍1.file 文件菜单2.edit 编辑菜单3.Assets资源菜单4.Gameobject物体资源菜单pon ent 组件菜单6.Window窗口菜单7.Help 帮助菜单Scene与场景漫游1.Scene窗口各项工具Q、W、E、R按住鼠标右键Q、W、E、RPivot物体自己的中心/center所有物体加权之后的中心Global 世界坐标/local自身坐标Textur ed Wite/render Paths显示2D/3D2.快捷键与视角的移动Hierar chy与场景搭建1.Gameobject:基本组件gameobject—>create other2.Gameob ject:灯光组件3.Gameobject:物体组件4.Gameobject:其他组件5.Hierar chy层级关系与应用6.场景搭建案例Projec t与资源管理Inspec tor与游戏组件3.C#语言基础C#的值类型C#的引用类型C#的类型转换C#的逻辑语句C#的集合类型C#的面向对象特性封装、继承、多态Unity协程:和线程的区别:没有异步同步的概念,每一帧都执行(有内容的情况);协程的作用:1)延时(等待)一段时间执行代码;2)等某个操作完成之后再执行后面的代码。
声明:本著作权归我一人所有,不经个人允许,禁止盈利和转载。
前言自Unity Technologies于今年3月4宣布:备受期待的次时代多平台引擎开发工具——Unity 5正式发布!这是Unity迄今为止最强大的版本,含有大量的图形改进和扩展的编辑器功能集,让开发者具备跨越21个平台创造出色、创新游戏的潜力。
此外,Unity还发布了Unity Cloud Build,这使得开发者能够通过云计算更有效率地进行游戏和应用的开发。
而现在关于unity5的中文资料比较少, 经本人历时4个月精心研究,特放出全面介绍unity5的中文手册,该手册将详细讲述unity5中的新特性以及编辑器知识,以及unity常用的插件、SpeedTree、World Machine、程序材质(substance designer、substance play和bitmap2material)和详细的ShaderLab的使用方法,相信你通过此教材将能基本掌握这款新次世代游戏引擎,做出你自己心目中的精彩游戏~~目录3D模块篇第一章Unity5界面介绍1.1工具栏1.2菜单栏1.3项目(Project)视图1.4层级(Hierarchy)视图1.5检视(Inspector)视图1.6游戏(Game)视图1.7场景(Scene)视图1.8分析器(Profiler)视图1.9遮挡剔除(Occlusion Culling)视图1.10帧调试(Frame Debugger)视图1.11动画控制器(Animator)视图1.12动画(Animation)视图1.13光照(Lighting)视图1.14导航网格(Navigation)视图1.15输出(Console)视图1.1工具栏首先工具栏最左边的是变换工具,依次是选择、移动、旋转、缩放和UI位置定位。
该变换工具是针对Scene场景视图进行编辑操作的。
工具栏左边第二个是Gizmo工具,首先Center是选择中心的意思,选择的是多个物体的共同中心点,而Pivot是轴心中心,选择的是当前选中物体的自身轴心点。
灯光-Light对于每一个场景灯光是非常重要的部分。
网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。
可以通过从菜单中选择 GameObject->Light并将其添加到你的场景中。
有3种类型的灯光。
一旦添加了一个灯光你就可以像操作其他物体一样操作它。
相关属性介绍◆Type:灯光的类型⏹Directional:平行灯,类似太阳光;⏹Point:点光源,类似灯泡;⏹Spot:聚光灯,类似舞台聚光灯;◆Baking:该选项有三个选择⏹Realtime:即光源不参与烘焙,只作用于实时光照;⏹Baked:表示光源只在烘焙时使用⏹Mixed:该光源会在不同的情况下做不同的响应;在烘焙时,该光源会作用于所有参与烘焙的物体;在实际游戏运行中,该光源会作为实时光源作用于那些不参与烘焙的物体或者动态的物体(不作用于静态的物体,就是勾选了Static);◆Color:光源的颜色,根据不同的环境设置不同的颜色,营造出不同的氛围;◆Intensity:光线强度;◆Bounce Intensity:光线的反射强度;◆Shadow Type:设置是否显示光源作用在的物体的阴影,⏹No Shadows不显示阴影,阴影不存在;⏹Hard Shadows:硬阴影(无过滤),效果不是很自然比较生硬;⏹Soft shadows:柔化阴影,更加贴近实际生活中的阴影显示,但比较消耗资源;◆Strength:阴影黑暗程度,取值范围0~1◆Resolution:阴影的清晰度,细化度,越高消耗越大;◆Bias:阴影的偏移量,越小,物体表面会有来自它自身的阴影,太大光源就会脱离了接收器;◆Cookie:灯光投射的纹理,如果灯光是聚光灯和方向灯就必定是一个2D纹理,如果是点光源必须是一个Cubemap(立体贴图);◆Cookie Size:缩放Cookie的投影,只适用于方向光◆Draw Halo:如果勾选,那光源带有一定半径范围的球形光源◆Flare:在选中的光源的位置出现镜头光晕;◆Render Mode:此项决定了选中的光源的重要性,影响照明的保真度和性能;⏹Auto:渲染的方法根据附近灯光的亮度和当前的质量设置在运行时由系统确定;⏹important灯光是逐个像素渲染的;⏹Not Important灯光总是以最快速度渲染;Culling Mask:剔除遮罩,类似摄像机的遮罩,选中指定的层收到光照影响,未选中的不受到光照影响;设置全局光照和烘焙光照贴图-LightMap一个场景中灯光添加多了资源消耗也就大了,为了降低资源的消耗,可以选择烘焙光照贴图;把光源的效果烘焙到贴图上,形成自带光源效果的贴图,这样就可以减少灯光的使用。
重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式:顶点照明渲染路径细节 Vertex Lit Rendering Path Details正向渲染路径细节 Forward Rendering Path Details延迟光照渲染路径的细节 Deferred Lighting Rendering Path Details以unity3d为例,以下将详细讲解三种灯光渲染方式的实现、原理及缺陷。
顶点照明渲染路径细节Vertex Lit Rendering Path DetailsVertex Lit path generally renders each object in one pass, with lighting from all lights calculated at object vertices.顶点照明渲染路径通常在一个通道中渲染物体,所有光源的照明都是在物体的顶点上进行计算的。
It's the fastest rendering path and has widest hardware support (however, keep in mind: it does not work on consoles).顶点照明渲染路径是最快的渲染路径并且有最广泛的硬件支持(然而,请记住:它无法工作在游戏机上)。
Since all lighting is calculated at vertex level, this rendering path does not support most of per-pixel effects: shadows, normal mapping, light cookies, highly detailed specular highlights are not supported.由于所有的光照都是在顶点层级上计算的,此渲染路径不支持大部分的逐像素渲染效果:如,阴影、法线贴图、灯光遮罩、高精度的高光。
gmod光源指令-概述说明以及解释1.引言1.1 概述概述Gmod是一款备受欢迎的沙盒游戏,它为玩家提供了广阔的创造空间和自由度。
在游戏中,充满了各种各样的元素和功能,其中之一就是光源指令。
光源指令可以用来调整游戏世界中的光照效果,使其更加逼真和吸引人。
本篇文章将详细介绍Gmod光源指令的使用方法、效果以及应用场景。
通过学习和掌握这些指令,玩家们可以为自己的创意作品增添更加出色的光影效果,提升游戏体验。
在接下来的章节中,我们将从简单到复杂地介绍这些光源指令的使用方法。
无论是初学者还是有经验的玩家,都可以通过本文得到一些有用的信息和技巧。
同时,我们也会探索一些光源指令在游戏中的实际效果和应用场景,帮助读者更好地理解和运用这些指令。
最后,我们将对本文进行总结,并展望一下未来对Gmod光源指令的发展和改进。
希望本文能够为读者提供一些有价值的启示和思考,鼓励大家在游戏中发挥创造力,创造出更加精彩的作品。
让我们一起开始探索Gmod光源指令的世界吧!文章结构是指在撰写一篇长文时,将内容按照一定的组织方式和逻辑顺序进行分类和安排的方法。
一个清晰、有条理的文章结构能够帮助读者更好地理解和阅读文章的内容。
以下是对于本篇文章1.2 文章结构的具体介绍。
在本篇文章中,我们将按照以下结构来组织和安排内容:1. 引言:在引言部分,我们将对整篇文章进行概述,介绍所要讨论的主要内容和目的。
2. 正文:在正文部分,我们将详细介绍Gmod光源指令的相关内容。
具体包括以下几个方面:2.1 Gmod光源指令简介:在这一部分,我们将介绍Gmod光源指令的基本信息,包括其定义、作用和特点等方面的内容。
2.2 Gmod光源指令的使用方法:在这一部分,我们将详细讲解如何使用Gmod光源指令,包括具体的指令格式、参数和用法等方面的内容。
2.3 Gmod光源指令的效果与应用:在这一部分,我们将探讨Gmod 光源指令的实际效果和应用场景。
同时,我们也可以介绍一些相关的案例和实例,以帮助读者更好地理解其实际应用价值。
unity 投影组件原理-回复Unity 投影组件原理Unity 是一款流行的游戏开发引擎,其投影组件是开发者在创建游戏中的光影效果时常使用的工具之一。
投影组件能够模拟光在三维空间中的传播和投射,使游戏场景显得更加真实和细致。
本文将一步一步对Unity 投影组件的原理进行解析,帮助读者更好地理解和使用这一功能。
第一步:灯光设置在Unity 中使用投影组件之前,我们需要先添加一个灯光组件,并对其进行设置。
常用的灯光类型有点光源、平行光源和聚光灯。
点光源是以一个点为中心,向四周发散的光源;平行光源是以一条直线为中心,光线方向一致的光源;聚光灯则是将光线聚焦到一个特定的方向上。
不同类型的灯光会产生不同的投影效果,因此我们需要根据游戏场景的需求来选择适当的光源类型。
第二步:投影类型设置Unity 投影组件提供了两种常用的投影类型:正交投影和透视投影。
正交投影是一种平行投影,能够保持物体的大小比例不变,但是没有透视效果;透视投影则能够根据物体的距离调整其大小和形状,使物体在远处显得较小,在近处显得较大。
我们可以根据游戏场景的需要选择适当的投影类型。
第三步:阴影设置阴影是投影组件中非常重要的一个功能。
它能够模拟物体之间的遮挡效果,使游戏场景更加真实。
在Unity 中,我们可以选择实时阴影或者预计算阴影。
实时阴影能够根据灯光的位置和物体的形状及材质等信息,实时计算出阴影效果;预计算阴影则是在游戏运行之前就将阴影效果预先计算好,然后以贴图的形式存储起来,游戏运行时直接使用。
不同的阴影设置会对游戏的性能和画面效果产生不同的影响,因此我们需要根据游戏的需求进行选择。
第四步:投影贴图投影组件最重要的功能之一是生成投影贴图。
在Unity 中,投影贴图是通过将场景中的物体投射到一个二维平面上来实现的。
这个平面称为“投影平面”,通常是一个具有一定大小的平面几何体。
当灯光发射出的光线碰到物体时,会产生投影效果,并将物体在投影平面上的投影绘制出来。
Unity-URP、LWRP、SRP1 Sriptable Render Pileline1.1 主要把渲染管线拆分成⼆层:⼀层是⽐较底层的渲染API那层,像OpenGL,D3D等相关的都封装起来。
另⼀层是渲染管线⽐较上层的描述,上层代码使⽤C#来编写。
在C#这层不需要关注底层在不同平台上渲染API的差别,也不需要关注具体如何做⼀个Draw Call。
1.2 特征官⽅基于SRP提供了⼆套模板:⼀个是LWRP(轻量级渲染管线,后改名URP),⼀个是HDRP(⾼清晰渲染管线)。
1.3 建议:可以不改源码实现,就尽量不改源码,因为改了源码后,升级会很⿇烦1.4 未来(移动游戏未来:AAA级,PBR,超⼤世界,各种特效,后处理...)2 LWRP2.1 优缺点优点Scriptable Render PassSRP Batcher合批Custom Render Pass缺点Shadow Mask的功能, Unity 2019.3提供延迟渲染Deferred Rendering, Unity 2019.3提供2.2 Bilibili-LWRP介绍1)流程以下是传统的BuiltIn渲染,LWRP是在绿点插⼊绘制命令(CommandBuff)2)特征新的Shader库 -- Core和Lightweight RP库,更⼩的‘chunk’兼容性 -- Unlit Built-In Shader 兼容,没有提供Surface ShadersShaderGraph -- 可视化编辑⼯具3)注意如需对默认Shader Keywords删除,应管线设置中取消掉对应设置,Keywords就会在构建时候Strip掉..Core.hlsl包含有⽤变量和功能(类似UnityCG.cginc)如果声明属性为UnityPerMaterial,属性会保存于CBUFFEER中,SRP就可以在帧之间缓存材质属性。
简单到复杂定制:LWRP + shader graphLWRP + Custom Render Passes编写⾃⼰的Custom Render Passes实现⾃⼰的RendererBuild your own SRP from scratch实操教程(以下是国外教程的译⽂)3 Universal Render Pipeline3.1 介绍与使⽤1)介绍通⽤渲染管线Universal RPLWRP是URP之前的名称,两者基本没有区别,URP相对LWRP的变化主要是把PostProcessing集成到内部了。
URP学习之三--ForwardRenderer上⼀章讲到了URP的RenderSingleCamera函数的Renderer之前,这次我们继续,开始了解Unity封装的ForwardRenderer是个什么神秘物体。
为了⽅便,先把上次讲到的⽅法贴在这⾥:1public static void RenderSingleCamera(ScriptableRenderContext context, Camera camera)2 {3if (!camera.TryGetCullingParameters(IsStereoEnabled(camera), out var cullingParameters))4return;56var settings = asset;7 UniversalAdditionalCameraData additionalCameraData = null;8if (camera.cameraType == CameraType.Game || camera.cameraType == CameraType.VR)9 camera.gameObject.TryGetComponent(out additionalCameraData);1011 InitializeCameraData(settings, camera, additionalCameraData, out var cameraData);12 SetupPerCameraShaderConstants(cameraData);1314 ScriptableRenderer renderer = (additionalCameraData != null) ? additionalCameraData.scriptableRenderer : settings.scriptableRenderer;15if (renderer == null)16 {17 Debug.LogWarning(string.Format("Trying to render {0} with an invalid renderer. Camera rendering will be skipped.", ));18return;19 }2021string tag = (asset.debugLevel >= PipelineDebugLevel.Profiling) ? : k_RenderCameraTag;22 CommandBuffer cmd = CommandBufferPool.Get(tag);23using (new ProfilingSample(cmd, tag))24 {25 renderer.Clear();26 renderer.SetupCullingParameters(ref cullingParameters, ref cameraData);2728 context.ExecuteCommandBuffer(cmd);29 cmd.Clear();3031#if UNITY_EDITOR3233// Emit scene view UI34if (cameraData.isSceneViewCamera)35 ScriptableRenderContext.EmitWorldGeometryForSceneView(camera);36#endif3738var cullResults = context.Cull(ref cullingParameters);39 InitializeRenderingData(settings, ref cameraData, ref cullResults, out var renderingData);4041 renderer.Setup(context, ref renderingData);42 renderer.Execute(context, ref renderingData);43 }4445 context.ExecuteCommandBuffer(cmd);46 CommandBufferPool.Release(cmd);47 context.Submit();我们从line 14开始学习:我们可以看到Renderer是从相机参数中获取的,即这个位置:这也就意味着我们可以⼀个相机⼀个Renderer,⽐如A相机Forward,B相机Deffered(当然,前提时⽀持多相机,⽬前可以在git上pull到camerastack,然⽽没有了depth only的flag,这⾥不是重点)接下来就是Renderer对象执⾏Clear⽅法,我们看⼀下ForwardRenderer中有哪些东西:const int k_DepthStencilBufferBits = 32;const string k_CreateCameraTextures = "Create Camera Texture";ColorGradingLutPass m_ColorGradingLutPass;DepthOnlyPass m_DepthPrepass;MainLightShadowCasterPass m_MainLightShadowCasterPass;AdditionalLightsShadowCasterPass m_AdditionalLightsShadowCasterPass;ScreenSpaceShadowResolvePass m_ScreenSpaceShadowResolvePass;DrawObjectsPass m_RenderOpaqueForwardPass;DrawSkyboxPass m_DrawSkyboxPass;CopyDepthPass m_CopyDepthPass;CopyColorPass m_CopyColorPass;DrawObjectsPass m_RenderTransparentForwardPass;InvokeOnRenderObjectCallbackPass m_OnRenderObjectCallbackPass;PostProcessPass m_PostProcessPass;PostProcessPass m_FinalPostProcessPass;FinalBlitPass m_FinalBlitPass;CapturePass m_CapturePass;扑⾯⽽来的就是⼀堆Pass,熟悉的味道,还是按照Pass组织渲染,⼤概看了以下Pass的种类,基本上了解了可以做的操作和⽐之前优化的地⽅,总的来说和之前内置管线差的不太多。
unity的forward rendering 中光源的使用和light的render
mode
在Unity中的light都有一个属性RenderMode,可以设置light的渲染模式为impotant还是非important,以前只是肤浅的认为important对应的就是像素光,非important就是顶点光,而auto就按照graphic quality里面的设置。
后来看了一下unity的文档,其实不是这样,它完全的规则非常复杂:最亮的几个光源会被实现为完全的逐像素光照然后最多4个光源会被实现为顶点光照剩下的光源会被实现为效率较高的球面调谐光照(Spherical Harmonic)决定一个光源属于上面哪一类的规则:最亮的那盏方向光一定是第1类
render moder是important的光一定是第1类如果前面两条加起来的像素光少于Quality Setting里面的像素光数量,从剩下是所有光中找出这里面找出最亮的几盏变为第1类最后剩下的光按照前面规则是第2或3类
也就是说我们在Quality Setting里面设置的值并不能约束像素光的数量,它其实是像素光最少要保证的数量。
真正越苏像素光的使用一时要调节quality setting,二还是要讲render mode设为非important 这些光在渲染中的行为如下
base pass里面执行一盏像素光和所有定点光(包括球谐光照)其余的像素光每盏多一个pass,注意这些pass里面无阴影计算,所以unity只计算最亮的那个方向光的阴影。