Q&A——图形渲染(一)

d3d11renderers.rar https://blog.youkuaiyun.com/zlyadvocate/article/details/118669454配套代码 立即下载

图形渲染

Q1:当关闭预渲染GI时会出现IndirectResolution,这个参数有什么用,为什么调大了以后会大大增加渲染时间,但是烘培出来却没有什么效果。

该值主要控制的是GI的烘焙密度,数值越大,表示每个单位距离内的Texel越多,即烘焙得越精致,自然烘焙的时间也越长。
该值并非越大越好,场景越小建议该值越低。该值为1时,对于多数场景,其烘焙效果已经足够了,升高该值,其效果也不会有明显提升。

图形渲染

Q2:请问Unity引擎中使用什么贴图压缩格式,可以保证在占用内存相对较小的情况下True Color效果和原图相当?同时在iOS和Android平台上图片的压缩格式分别用什么比较合适?有什么需要注意的地方吗?

目前来讲,并不存在一个所有GPU平台都支持硬件解压的压缩格式。 ETC1 和 PVRTC 分别是Android和iOS上我们最推荐的格式。 但对于透明纹理,ETC1不支持,而 PVRTC 则可能有较大失真,因此更推荐使用 RGBA 16。

一般来说建议直接使用 Unity 默认的压缩格式(即选择 Compressed 即可,不需要做特殊设置),Unity 会做如下处理:

  1. Android 上不带Alpha通道的图片采用 ETC1,带Alpha通道的图片采用True Color中的RGB16,TrueColor中的 RGBA16 会>比 RGBA32 更节省空间,但图像的显示质量会差一些;
  2. iOS 上使用 PVRTC,但PVRTC格式要求纹理的长宽相等,且都是2的幂次(即POT,在ImportSettings中可以将NPOT的纹理自动转换成POT)。
    另外,针对Android 上的带Alpha通道的图片,还有一种常见的做法,即把Alpha通道独立出来作为另一张纹理,从而将 RGB 部分和 Alpha 部分分别采用 ETC1来压缩,但渲染时就需要自定义的 Shader来处理。

同时,我们不建议直接使用 RGBA32 格式的纹理,因为它占用了很大的内存。一般建议使用 RGBA16 和 ETC 格式的纹理来进行加载。 如果转换到 RGBA16 格式时出现了类似“色阶”的颜色问题,则建议尽可能避免大量的过渡色使用。

图形渲染

Q3: 在Unity开发中,大规模使用粒子特效会有什么问题 ?如何去针对性的优化?

普遍来说,会造成Draw call高、渲染开销大、CPU高等问题。下图就是UWA性能诊断系统对粒子系统检测的几个注意点。

UWA Tech Doc

图形渲染

Q4:在游戏中,有些Mesh在编辑时候是接收Lightmap的,出于某些原因我们合并了相同的Mesh(材质也相同)。但是发现原先的Lightmap不再影响合并后的Mesh,请问怎么才能实现让合并后的Mesh也接收原先的Lightmap?

如果Lightmap不止一个的话,手动合并Mesh是会出现问题的,因为合并的Mesh烘焙信息很可能出现在不同的Lightmap中,但合并之后的Mesh在渲染时只能使用一个Lightmap,这样uv2读取到Lightmap信息就会出现问题,进而出现这种现象。其实,对于材质相同的Static物体并不需要手动对其Mesh进行combine,因为Unity的Static Batching会自行完成。而如果由于某种特定需求一定要将Mesh进行合并的话,那么也要将其所需要的Lightmap也一并合并,同时改变相应的uv2。不仅如此,Shader中Lightmap也需要进行相应修改,这是比较复杂的,所以我们并不建议这样的做法,因为可能会花掉开发团队大量的开发时间。

图形渲染

Q5:我在shader里这么写的代码

o.texcoord1 = vec2(mod(v.texcoord.x,1.0),mod(v.texcoord.y,1.0));  

但是报错 undeclared identifier 'mod' at line 106 (on d3d11),请问是什么原因导致的呢?

报错表明mod在d3d11的Shader中是未定义的,如果开发团队无需在d3d11的平台上使用该 Shader,则可以添加以下预编译指令:

#pragma exclude_renderers d3d11

如果Shader依旧无法正常显示,那可能是因为在Editor中使用的是 DX11(可以从标题栏中看出)。 可以尝试修改DX9的参数 :Build Settings -> 点击 PC, Mac ... -> Player Settings(不需要点击 Switch Platform) -> 去掉 Auto Graphics API for Windows 的勾选,只保留 Direct3D9。同时,开发团队也可以直接使用 fmod 替换 mod,理论上 fmod 在各个平台都是支持的。

图形渲染

Q6:当关闭预渲染GI时会出现IndirectResolution,这个参数有什么用,为什么调大了以后会大大增加渲染时间,但是烘培出来没有啥效果。

简单来说,该值主要控制的是GI的烘焙密度,数值越大,表示每个单位距离内的texel越多,即烘焙得越精致,自然烘焙的时间也越长。该值并不需要越大越好,场景越小,建议该值越低。该值为1时,对于多数场景,其烘焙效果已经足够了,升高该值,其效果也不会有明显提升。

开发者也可以参考Unity官方的说明文档:
http://docs.unity3d.com/Manual/GlobalIllumination.html

图形渲染

Q7:关于抗锯齿和BLOOM,有什么好的优化方案或者优秀插件推荐?

A:通常在中低端的设备上,抗锯齿并没有比较高效的方案;而对于中高端的设备,可尝试直接使用 Unity 内置的 MSAA 功能,但也只推荐使用 2x。

关于Bloom效果,以下是适用于移动端,且评价较好的一款插件:BloomPro
UWA Tech Doc
UWA Tech Doc

图形渲染

Q8:我们这种英雄UI,里面嵌了一个类似场景的Prefab,开了实时光照之后内存就特别高。这种不属于场景,又没有办法烘培,有没有什么好的建议呢?
UWA Tech Doc

A:首先,理论上开实时光对内存是没什么影响的。

开发团队可以尝试烘焙,因为Unity 5.x 中也是有办法进行动态加载Lightmap 的,只是需要通过脚本将烘焙时每个物件的Lightmapindex和Lightmapscaleoffset记录下,并在运行时动态加载后设置回去的方式来实现。因为目前Lightmapindex和Lightmapscaleoffset信息是和场景绑定在一起,储存在Lightmapsnap.assets 中,发布时也是放在场景信息中,因此不会记录在Prefab 上。

图形渲染

Q9:在Unity 4.x的版本中,所有UI贴图使用ETC2格式,即使目标设备不支持该格式,也会解压成RGBA32使用。 而在目前使用的Unity 5.3.4版本中,iOS平台无法设置ETC2格式。如果压缩只能使用PVRTC格式,那么PVRTC存在显示效果比较差,并且图片必须为正方形,但如果用RGBA32格式,贴图占用的内存和存储又都过大,请问目前版本的Unity在iOS平台上应该如何设置UI贴图的压缩格式?

我们建议可以先尝试其他的压缩格式看是否可以达到类似的效果,如ASTC格式。ASTC 在 iOS 的高端机上是被支持的,因此理论上在 Editor 下不会强制把 ASTC 转为 RGBA32,建议尝试设置为 ASTC 后打包,从 Editor.log 中或者直接从包体大小上可以看出是否确实使用了 ASTC。

一般来说,如果 RGBA16 的效果可以接受的话,建议使用 RGBA16,虽然打包时相对大一些,但是内存中相比 RGBA32 能够减半,但使用 ASTC 的话,虽然打包时比较小,但是在普通机型上会被处理成 RGBA32,导致过大的内存开销。

图形渲染

Q10:如下图所示,第一张显示的是没有烘培Lightmap的场景效果,里面有一盏点光源;第二张显示的是烘培Lightmap后的场景效果。请问为什么同一盏点光源照亮的效果差别那么大?

UWA Tech Doc
UWA Tech Doc

简单来说,这就是实时的直接光照和全局光照的差别。
在渲染时前者只能处理光源和单个物件之间的直接光照,而后者在烘焙时是通过光线跟踪或者辐射度等复杂算法,计算出所有物体各个表面之间相互反射的光照信息,这也是烘焙Lightmap需要较久的时间的原因 。可以发现在全局光照下,即使是物体的背面也会因为其它表面的反射而被照亮,这在直接光线下就无法实现这样的效果。


3D图形库实心渲染源代码 3D图形库实心渲染源代码 平底三角形 平顶三角形 任意三角形 物体实心渲染 立即下载

相关推荐

shader类渲染图形

NULL 博文链接:https://andli.iteye.com/blog/1187142

Unity中Shader编译目标渲染器

Unity中Shader编译到目标渲染器。

楠溪泽岸的博客 1973

渲染成3D图形的源代码

里面包涵纹理,盒子的创建代码,还有怎么创建窗体

Unity3d URP无光shader初始模板

Shader "Unlit URP Shader" { Properties { _BaseColor("Base Color",color) = (1,1,1,1) _BaseMap("BaseMap", 2D) = "white" {} } SubShader { Tags { "Queue"="Geometry" "RenderType" = "Opaque" "IgnoreProjector" = "True.

cqchenweijiang_a的博客 4446

Zynq UltraScale+ RFSoC实战:用XCZU49DR开发板实现雷达信号处理全流程

本文详细介绍了如何利用Xilinx Zynq UltraScale+ RFSoC系列中的XCZU49DR开发板,高效实现雷达信号处理全流程。文章深入剖析了该芯片集成的射频直采ADC/DAC、可编程逻辑与Arm多核处理器的异构计算优势,并通过实战案例展示了从环境搭建、硬件链路设计到软件优化的完整开发路径,为相控阵雷达等高性能应用提供了单芯片解决方案。

weixin_29291863的博客 581

无人机机场自动化巡检钢铁厂管廊技术方案

摘要:针对钢厂管廊人工巡检效率低、成本高等问题,提出5G+无人机自主巡检解决方案。该系统由智能机库、5G无人机、AI分析平台等组成,可实现自动起降、实时数据传输、缺陷智能识别等功能。无人机配备四合一云台相机,支持42分钟续航和复杂环境飞行,通过深度学习算法自动生成巡检报告。方案实施后可提升巡检效率3倍以上,降低人工成本和安全风险,实现全天候自动化巡检,为钢厂管廊安全管理提供智能化技术支持。(149字)

gxdhlg的专栏 1685

4.Noise

此时得到的有可能是[0.25,0.3]这种在[0,1]范围内的值,但也有可能超出了[0,1]范围,那么需要对范围外的值进行处理。比如uv坐标为[0.25,0.3],纹理的宽高为[256,256],那么相乘可得到[64,76.8]。,如果你需要纹理往右移,则你需要把窗口向左移,用u–0.5而不是u+0.5。将uv坐标经过处理变换后,根据实际的纹理尺寸,转化为纹理空间坐标。由此可以得到,要想让纹理向上跑,那么窗口就要下移,uv上面需要减。比如旋转平移缩放,...

小感悟 267

双有源桥变换器(DAB)TPS控制:从理论建模到Simulink/PSIM仿真实践

本文深入探讨了双有源桥变换器(DAB)的三重移相(TPS)控制技术,从理论建模到仿真实现。文章详细分析了TPS相比SPS和DPS的优势,阐述了其12种工况的划分逻辑与电流应力最优调制策略,并提供了在Simulink和PSIM平台搭建仿真模型的详细步骤与实战经验,帮助工程师掌握这一高效控制方法。

white的博客 584

Unity里的延迟渲染

延迟渲染 延迟渲染渲染下,光源计算的消耗的消耗和光源占屏幕的范围(像素)相关,而不是像正向渲染中,和光源照射的物体数量相关。 延迟渲染也分为2个Pass(不在同一个shader里) GBuffer Pass(Defferred Pass):这个pass写在想要支持延迟渲染的游戏物体的shader里,和正向渲染不同,Gbuffer会渲染输出4份贴图(如果用了混合光照还有第五份) RT0, ...

贤愚的博客 5286

Autoware.universe部署03:与Carla(二进制版)联调

本文介绍了 Autoware.universe 与 Carla 二进制版的联调过程。Autoware.universe 是一个开源的自动驾驶软件平台,而 Carla 则是一个用于自动驾驶仿真的开源工具。将这两者联调起来可以在仿真环境中测试和验证 Autoware.universe 的功能和性能,为自动驾驶系统的开发和测试提供有力支持。

zardforever123的博客 7371

告别底噪和发热:TPA3255的PCB布局与散热设计保姆级教程(附嘉立创EDA文件)

本文详细解析TPA3255 Class D音频功放的PCB布局与散热设计,提供从电源系统分层架构到热管理系统的全流程优化方案。通过实战案例展示如何消除底噪、降低发热,并附嘉立创EDA文件,助力工程师快速设计高性能音频功放。

weixin_29208077的博客 379

Unity Shader - shader forge - #pragma only_renderers 和 exclude_renderers - 导致像素全黑 - subprogram指令丢失

文章目录环境目的问题DX 没有问题OpenGLES 就全黑色分析DX 的OpenGLES 的问题所在修复优化 环境 Unity : 2018.2.11f11 Pipeline : Built-In 目的 今天合作部门的某位程序同学可能对 shader 不熟悉 他是在省外的(异地) 但是公司没有了解 shader 的同学(-_- ~~!!) 所以有比较多的一些效果问题、兼容性问题,都只能找到我~ (-_- ~~!!) 问题 DX 没有问题 OpenGLES 就全黑色 分析 很有可能就是平台设置

Jave.Lin 的学习笔记 4442

Cesium初级开发教程之三十:Primitive集合

教程示例网站:https://thomaz529.github.io。

485

Q&A——图形渲染(二)

图形渲染 Q1:以前端游时代,材质根据Pass不同、光照环境不同可以离线预编译成ShaderCache,运行时并不需要拼材质再实时编译,只要加载二进制代码就好了。那Unity有没有做这件事呢?我们是根据平台和环境预编译的Shader。 对于支持 Binary Shader 加载的设备,在首次编译某个 Shader 的时候是会生成其对应的 Binary Shader Cache ,生

起个名字好难啊 794

HotSpot G1 GC 的分区记账、SATB 并发标记与停顿目标调优解析

线上GC毛刺该调停顿目标、加大新生代还是换收集器?本文从HotSpot G1的设计出发,梳理分区与巨型对象、卡表与记忆集、写屏障与细化线程、停顿预测、SATB并发标记、自适应IHOP、混合回收规则及Full GC兜底,并注明JDK8至JDK27的版本差异。文中在JDK8与JDK17上实测:停顿目标从200ms降到20ms,伊甸区缩小四成、P99下降但仍超目标;巨型对象会反复触发又撤销并发标记;JDK17并行Full GC平均停顿约为JDK8的三成。最后给出日志解读、参数清单、调优流程与选型。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 170万+

重回童年的经典系列☀️| 【坦克大战3D版】游戏制作+解析

带你重回童年的经典系列——坦克大战3D版制作,感兴趣的可以看看呀~

努力前行,总会成为自己心中的那道光 5万+

Q&A——图形渲染(三)

图形渲染 Q1:我们的游戏中有一些静止的建筑,会和整个场景一起烘焙(包括了每个建筑在地表的阴影)。现在希望这些建筑是逐步开放的,比如玩家1级的时候只有建筑A开放,2级的时候建筑B开放,现在的问题是当建筑未开放时(SetActive(false))地表的相关阴影还在。这种问题一般是怎么处理的? 这种问题是因为研发团队将整个场景烘焙成一张Lightmap所致。如果地图中的建筑是固定

起个名字好难啊 840

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Q&A】装饰模式在Qt中有哪些运用?

Qt在IO模块和图形模块中广泛使用装饰模式,既保证了底层设备的通用性,又通过灵活的装饰器实现了功能扩展。这种设计符合开闭原则,是学习结构型设计模式的经典案例。

Antonio915的博客 1410

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Q&A】cocos2dx中如何使用plist中的图片

qq_21568643的博客 956

【HGE引擎】学习HGE遇到的若干问题及解决方式记录 Q&A

Q1: 错误 3 error LNK2019: 无法解析的外部符号 "public: __thiscall hgeSprite::hgeSprite(unsigned long,float,float,float,float)" (??0hgeSprite@@QAE@KMMMM@Z),该符号在函数 _WinMain@16 中被引用 hge_tut01.obj A1: 没有加载相关的l

走向CTO的路上... 3150

【Q&A】2012-11-13 移动技术公开课《ArcGIS移动应用新主张》 Q&A

下载授权相关 Q:ArcGIS的移动SDK是免费的吗?如果只是用移动的API、地图服务使用自有的地图服务发布平台,是否可以? A:ArcGIS的3大移动开发包:ArcGISRuntime SDK for iOS/Android/Windows Phone均可以在Esri的官方网站上免费下载,并且免费用于学习研究、公益性项目,只需要在使用的地图中标上Esri的Logo即可。对于商业应用,需要Ar

ArcGIS产品与技术专栏 3081

Q&A——资源加载/卸载

资源加载/卸载 Q1:如下图,通过纹理图片通过文件流形式加载到内存, 这样的资源还可以使用Resources.UnloadUnusedAssets()和Resources.UnloadAsset(m_Asset)进行资源卸载吗? 如果是自己载入内存并初始化为Unity的Texture2D,则还是要重点查看Texture2D对象的创建方式。一般来说,会用new Textur

起个名字好难啊 736

2012-11-13 移动技术公开课《ArcGIS移动应用新主张》 Q&A

下载授权相关 Q:ArcGIS的移动SDK是免费的吗?如果只是用移动的API、地图服务使用自有的地图服务发布平台,是否可以? A:ArcGIS的3大移动开发包:ArcGISRuntime SDK for iOS/Android/Windows Phone均可以在Esri的官方网站上免费下载,并且免费用于学习研究、公益性项目,只需要在使用的地图中标上Esri的Logo即可。对于商业应用,

1万+

DeepLearningFlappyBird技术演讲:Conference报告准备指南

你是否在准备AI/强化学习领域的学术报告时,面临"算法复杂难以可视化"、"代码演示效果差"、"听众理解门槛高"的三重挑战?作为最经典的深度强化学习入门案例,DeepLearningFlappyBird项目包含从环境交互到神经网络训练的完整闭环,是技术演讲的理想素材。本指南将通过**5大核心模块**(项目架构解析→算法原理可视化→实验结果呈现→代码演示优化→Q&A应对策略),帮助你打造一场兼具学术深...

gitblog_00198的博客 469
上一篇: Q&A——资源加载(一)
下一篇: Q&A——UI
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值