zoukankan      html  css  js  c++  java
  • 剖析虚幻渲染体系-开篇说明

    前言

    笔者的博客园博文断更很久了,上一篇文章是去年10月,有关UE的PBR材质制作。断更的原因有二:一是潜心研读UE底层源码,做二次开发;二是工作压力和KPI考核较紧,人在江湖身不由己,生计为先。

    众所皆知,虚幻引擎(Unreal Engine)是当今世界上最流行最知名的商业引擎之一,并且在几年前开放了源代码,前两年随着PUBGM而起,在移动端发力,渐渐成为游戏研发厂商的首选(反观某U以卖源码为荣,以高昂的学费开班授课为赚钱之道,结果移动端也被UE反超,实在是目光短浅所致)。毫不夸张地说,UE是浓缩了实时渲染界几十年来的精华和瑰宝。研究UE的人也数不胜数,并有逐年增加之势。

    在此背景下,笔者认为更有撰写文章剖析UE渲染体系的必要性。

    笔者从2019年年中接触UE以来,也有一年多了。在这段时间里,潜心研究UE而无法自拔,从最初熟悉编辑器的使用,再到光照系统、材质系统、延迟渲染管线、后处理、光线追踪等功能模块,再到近期的底层源代码研读和二次开发。这期间历经了很多思考、摸索、探索,踩过不少坑,当然更多的是收获、感悟和总结,于是萌生了撰写这个系列文章的念头,以飨同行,以师新人。

    本想将此系列文章发表到知乎,因为知乎的用户基数大,利于传播,也利于圈粉,笔者也梦想有朝一日成为知乎大V,成为技术网红。

    截止2020年8月中旬,笔者之前的数篇技术文章浏览量达数万,但粉丝只有区区数十。难道这是传说中的叫好不叫座?

    然而,静下来思索,写文章的最终目的还是在于分享和教学,而不是圈粉,加上博客园的页面干净纯粹,不夹杂任何广告,在商业化和物欲横流的当今,确实是一股清流。此外,良好地支持Markdown和(LaTeX)等语法(如支持数学公式,支持目录,支持跳转等等),这些特点正与笔者的初衷和设想不谋而合,既有偏好,也有情怀,不为商业低头,舍它其谁?

    能看到自己的文章帮助到很多人,看到他们为发扬图形学技术而前仆后继,后浪推前浪,这是圈粉所不能带来的满足和快乐感。这些想法让笔者更加坚定了继续将文章发表在博客园的决心。

    当然,按惯例事先声明,这不是UE的入门教程,要求读者具备以下计算机专业技能:

    • 良好的计算机语言(如C++、C#等)基础。
    • 良好的计算机图形学基础。
    • 掌握UE的使用。
    • 掌握UE的材质、光照、后处理等模块。
    • 掌握Shader编程基础。

    如果读者不具备以上技能,或者对UE不熟悉,建议先从阅读UE的官方文档,熟悉UE后再阅读此系列文章。

    内容纲目

    本系列文章以UnrealEngine 4.25.3版本的源码为基础,分析它在PC平台延迟渲染管线的渲染体系和特性。

    本系列文章将分很多篇章,每篇都将是长篇大论。由于笔者本就工作繁忙,只能抽取业余时间一边研读UE源码,一边参考众多文献,一边撰写,更新频率不会很快,短则数周,长则数月,但求有足够动力和精力维继下去,尽力不太监。

    由于UE太过庞大,单单渲染模块涉及的体系和知识点众多,预计每篇数万字,整个系列的总字数将达到数十万字,即便抽出大部分业余时间,也需要耗费长达1~2年才能完成

    言归正传,本系列文章初定了以下章目:

    • 剖析虚幻渲染体系(01)- 综述和基础
    • 剖析虚幻渲染体系(02)- 多线程渲染
    • 剖析虚幻渲染体系(03)- 渲染机制
    • 剖析虚幻渲染体系(04)- 延迟渲染管线
    • 剖析虚幻渲染体系(05)- BasePass和LightingPass
    • 剖析虚幻渲染体系(06)- Shader体系
    • 剖析虚幻渲染体系(07)- 材质体系
    • 剖析虚幻渲染体系(08)- 后处理
    • 剖析虚幻渲染体系(09)- RHI
    • 剖析虚幻渲染体系(10)- RDG
    • 剖析虚幻渲染体系(11)- 实时光线追踪
    • 剖析虚幻渲染体系(12)- 特殊渲染技术
    • 剖析虚幻渲染体系(13)- 优化技术
    • 剖析虚幻渲染体系(14)- 实用工具合集

    以上章目可能有变动,有增有删有改,但总的宗旨在于先总后分、先上而下、由外入里,层层递进,逐步揭开UE庞大且复杂的渲染体系的神秘面纱。

    感兴趣的读者可以收藏这篇说明页面链接,以便能够及时查阅到更新。

    特别说明

    本系列文章为笔者原创,只发表在博客园上,欢迎分享本文链接,但未经同意,不允许转载!

    参考文献

  • 相关阅读:
    使用python3安装frida-tools出错
    xposed代码示例
    android studio3.4打jar包
    uiautomator代码例子--java
    Mac下不能成功打开uiautomatorviewer的问题解决
    mac下生成keystore
    Python杨辉三角算法
    Python迭代器:捕获Generator的返回值
    Python函数:一个简单的迭代
    Python参数组合
  • 原文地址:https://www.cnblogs.com/timlly/p/13512787.html
Copyright © 2011-2022 走看看