您的位置:首页 > 其它

Unreal4有哪些令你印象深刻拍案叫绝的设计

2017-02-28 16:00 295 查看
作者:梧桐

链接:https://www.zhihu.com/question/42128016/answer/94670767

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

尽量挑冷门的说。

官方顶点动画插件:用贴图来记录顶点动画数据,用 VTF 做顶点动画,而不是传统的动态顶点提交。(https://docs.unrealengine.com/latest/INT/Engine/Animation/Tools/VertexAnimationTool/index.html

Render To Texture Blueprint 工具集之 3D Imposter Sprites:先预渲染多个角度的公告板,然后在运行时根据视角选择最接近的一个(https://docs.unrealengine.com/latest/INT/Engine/Content/Tools/RenderToTextureTools/3/index.html

Render To Texture Blueprint 工具集之 Render a Normalized Depth Map:预渲染ShadowMap贴图,然后再材质里面把ShadowMap算一遍,来实现自阴影(https://docs.unrealengine.com/latest/INT/Engine/Content/Tools/RenderToTextureTools/4/index.html

Bullet Train 拿材质编辑器当 Substance Designer 用,烘培贴图来提高性能,还是Render To Texture Blueprint 工具集(https://www.youtube.com/watch?v=PG2fHLdzRIs&feature=youtu.be&t=2000

Phong 高光的 SG 近似:把Phong方程里面的Pow函数给干掉,代码在BasePassForForwardShadingPixelShader.usf里面的PhongApprox(Spherical
Gaussian approximation for Blinn-Phong, Phong and Fresnel)

利用移动平台的 framebuffer_fetch 扩展在 shader 里面做 alphablend,代码在BasePassForForwardShadingPixelShader.usf 的 FrameBufferBlendOp;同时,在 framebuffer_fetch_depth_stencil 不支持时候用 framebuffer 的 w 存深度

虚幻3的半透明头发自动排序工具,虚幻4代码还在,工具没做(DCC 软件里有没有类似的东西?有用过的麻烦分享下),(https://udn.epicgames.com/Three/TranslucentHairSorting.html

材质里 WorldPositionBehindTranslucency 函数实现的各种类贴花效果,比如虚幻竞技场2014(UT2014)主角足下阴影、UT2014 的 Outpost23 外景地表半透明云的投影、Showdown 里面汽车的阴影等

材质里用 CustomUV 通道存 Color 数据,来实现在材质编辑器里面把像素着色器计算转移到顶点着色

禅意花园里面不使用 RelectionVector+Cubemap 的组合来制作水面,而是先假设水面法线朝上,然后通过法线对反射UV做个简单的偏移,再取 Cubemap,来提高性能,龚神这篇文章第二点就是在介绍这个思路(加速反射的渲染

在广角镜头下需要避免屏幕边缘的广角畸变,传统做法一般是两个摄像机 FOV 分开渲染,而 UT2014 则利用 Panini 投影来做,代码在 PaniniProjection.usf(http://tksharpless.net/vedutismo/Pannini/panini.pdf),也有全局的
Panini(https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/PaniniProjection/index.html

延迟渲染下实现个别对象置顶显示,一种思路是模板缓冲区处理,但是牵一发动全身太麻烦,UT2014 在顶点着色器里把武器的所有顶点朝摄像机移近了一定的百分比

沙发骑士的小人跑到沙发后面也会变成类似全息影像的置顶显示,他的做法是做了两个材质,第二个材质禁用了深度测试,平时用第一个材质,当检测到摄像机和小人中心点中间有遮挡就切换到第二个材质。正常做这个用CustomDepth+Postprocess也行,他这个做法要节省点。

材质编辑器里面的 PixelDepthOffset 只能为正,不能为负,开始以为是引擎代码写的不严谨,后来才知道这叫 conservative depth output(Conservative
Depth Output (and Other Lesser-Known D3D11 Features))

按住鼠标右键,滚动中间滚轮可以调节WASD的速度(拍案叫绝?拍桌大笑!)

Slate 实现的这套 DSL 是为了在传统 UI 基础上实现类 Unity 的 IMGUI 的优势(https://docs.unrealengine.com/latest/INT/Programming/Slate/Architecture/index.html

有时候水底看起来因为折射在波动,其实是水塘的顶点在波动,和水和折射没有关系

禅意花园里面的蝴蝶和鱼都不是骨骼动画,翅膀、尾巴或头的正弦运动,可以是刷上了顶点权重色配合 RotateAboutAxis 在顶点着色器里做正弦动画。

Showdown 里面的窗户玻璃,并不是透明材质,而是不透明材质加上 bumpoffset(parallax mapping)做的伪透明

FastMath.usf 里面一大把黑科技数学函数,当然少不了卡神的 0x5f3759df 啦

BSP 里面 pen 和 brush clip 只有在顶视图等正交视图用空格键操作才有效,最吓人的是 lathe 工具,教程 https://www.youtube.com/watch?v=zJLVq-7vNbg ,官方案例的 BSP 关卡做的真是让人拍案叫绝(不过感觉现在引擎的重心没在这块?各种
bug 不修)

粒子系统配合材质编辑器加上粒子 Event 体系,扩展性太强了,可惜 Niagara 模块很久没有动静,否则再配合上蓝图,已经是我能想象出来的极限

无尽之剑里的 PBR 材质直接把 basecolor 贴图的某个通道做简单的 lerp 之类的处理就传给了roughness,效果显著,性能优秀。UT2014 的武器 material layer 做多了以后,性能不行,单个材质层也用这个技术来做优化贴图采样。

PS 里法线越叠越平?那是因为没有掌握法线混合的 N 种姿势(
Blending in Detail,web 预览:Shader
Sandbox),材质节点里面的 BlendAngleCorrectedNormals 就是 RNM(Reoriented Normal Mapping),当然啦,入 Substance Designer 神教就没这个问题了

yEd 是个好玩的工具,把引擎内树状数据结构可视化打印出来(yEd - Graph Editor),r.CompositionGraphDebug
这个命令可以把光照合成、后期处理的流程打印出来

不过还是 gephi (Gephi - The Open Graph Viz Platform)好看点,引擎用它来打印
UnrealBuildTool 的上下文依赖关系(GraphVisualization.cs 文件)

与其折腾策划数据编辑软件,不如学好 VBA,直接来扩展 Excel,Driving Gameplay with Data
from Excel,文章里面的 Export To CSV 内嵌按钮就是 VBA 写的,UT2014 也在用这个方案(例子的下载链接失效了,用这个:https://docs.unrealengine.com/latest/attachments/Gameplay/DataDriven/Example.xlsm

Lightmass 用挡光板逆向打光模拟区域光源(Simulating Area Lights in UE4),妈妈再也不用担心我打不好光了,禅意花园的室内氛围就是这么出来的

Fresnel 在不明显的时候,用 lerp 替代 pow 只要慢慢调也能差不多,性能还好点,材质函数 Fresnel_Function 内部就同时集成了两种实现

材质的自发光通道可以直接算光照模型,把光照模型关了,补一个 Lambert,补一个 Phong,甚至更简化的版本,小东西这么用比较省,尤其移动平台

官方的 PostProcess Matinee (https://www.youtube.com/watch?v=Hd3AV_Sx65Y)里面蝴蝶的翅膀,高光效果感人,就用上面说的方法:Phong
的一个变种,可以双向高光。不过他还是保留了 Volumetric 的 NonDirectional 光照计算

======================================= 有空再更
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: