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 光照计算
======================================= 有空再更
链接: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 光照计算
======================================= 有空再更
相关文章推荐
- 令人印象深刻的设计过程
- 谈谈怎样的设计能给人留下深刻印象?
- 令人印象深刻的40个设计工作室网站案例
- 用户记忆设计:如何设计印象深刻的用户体验 | Viget
- 28 令人印象深刻的亮色系网站设计灵感
- 35个令人印象深刻的创意404错误页面设计
- 为了今年印象最深刻的唱片,转演唱会消息一个,虽然我去不了 55555
- 分析设计要照顾到哪些人
- 最近看过的几本给我印象深刻的书
- 《世界因你而不同》我印象最深刻的几句话
- 印象深刻的一篇中学文章:华罗庚《统筹方法》
- 如何写一份让人印象深刻的简历
- 架构师应该掌握哪些设计模式
- CMMI中印象深刻的三个词
- 一个好的设计应当具备哪些要素
- 职场秘籍:给上司留下深刻印象的“十大方针”
- 令人印象深刻的河北工业大学7号楼楼层指示牌
- 合理的网页设计具有哪些特征
- 网页设计需要学习哪些技术
- 团队管理中印象深刻的两句话