自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海洋个人博客

喜欢自由的飞翔!

  • 博客(14)
  • 论坛 (1)
  • 收藏
  • 关注

原创 聊聊引擎底层如何实现BRDF渲染算法

BRDF作为比较流行的渲染算法,但凡成熟的引擎的都有此功能,我们自己写引擎也不例外,我在编写引擎时也会参考网上的一些资料,这也是学习的过程,先介绍BRDF,它是双向反射分布函数,说白了它是对于物体表面上光的处理,BRDF有很多模型,我们在编写Shader的时候也是基于这些模型。BRDF使用的数学模型是Cook-Torrance公式,如下所示:我们实现的BRDF渲染算法会参考Unreal Eng...

2018-12-29 08:38:58 2859 2

原创 Fog Volume渲染算法实现

由于项目需求,需要实现Fog Volume的效果,查阅了网上资料没有找到相关算法介绍,Unity虽然提供了插件但是效果不是项目想要的,只能自己去写,为了便于日后查阅,写篇博客记录下来,在介绍Fog Volume算法实现之前,先介绍Fog Volume可以实现的效果表现,它可以跟blinn phone,阴影结合起来使用,效果更佳,看下面与blinn phone结合实现的效果:每种渲染效果的背后都...

2018-12-27 21:42:51 2095 2

原创 Unity屏幕雪花另类实现方式

今天是圣诞节平安夜,为此特别制作了一个雪花飘落的场景,我们的雪花渲染方式不同于网上流行的使用Camera Filter,而是采用自定义Mesh实现的,自定义Mesh可以帮助我们实现很多的效果,而且对效率的提升非常有帮助,雪花实现方式分为:C#脚本和Shader渲染,C#负责雪花的生成,Shader负责雪花的飞舞和渲染。下面我们介绍实现方式:关于unity,每帧可渲染65000顶点,表示雪的网状物...

2018-12-24 21:58:58 13283 10

原创 聊聊引擎底层如何实现Forward+Phone渲染

现在的渲染技术由于硬件的提升,算法也得到了极大的改进,Forward,Deferred在成熟引擎中已经得到了广泛的应用,比如Unity,UE4等。下面我们将其应用到我们自己的引擎中,先看看Phone算法。Phone算法首先要了解Phone模型算法的作用,它是计算镜面反射光强的模型,它的计算公式是一个叫Phong Bui Tuong提出的,我们的Shader编程也是根据此算法实现的,看下面的公...

2018-12-21 13:22:08 931

原创 聊聊引擎底层如何实现SSAO渲染

SSAO被称为屏幕空间环境光遮蔽,它的原理是:对于铺屏四边形(Screen-filled Quad)上的每一个片段,我们都会根据周边深度值计算一个遮蔽因子(Occlusion Factor)。这个遮蔽因子之后会被用来减少或者抵消片段的环境光照分量。遮蔽因子是通过采集片段周围球型核心(Kernel)的多个深度样本,并和当前片段深度值对比而得到的。高于片段深度值样本的个数就是我们想要的遮蔽因子。SS...

2018-12-19 09:01:56 1215

原创 聊聊引擎底层如何实现Deferred延迟渲染

Deferred又称为延迟渲染,它是后处理渲染技术的一种,网上也有相关的定义说明,它主要是采用GBuffer实现的,GBuffer可以存储的信息相比ZBuffer更多,这也是Unity引擎也提供了Deferred渲染,只是在手机端比较耗,所以大部分开发者并不是特别关注,其实它在引擎渲染里面也是非常重要的。程序我们还需要自己手动实现一下,这样对技术的理解能够更深入。我们在上篇博客中给读者介绍了关于...

2018-12-17 19:22:48 1199 1

原创 聊聊引擎底层如何编译Shader脚本

由于现在的引擎都比较完善,开发者无需关心引擎底层的技术,只负责写逻辑即可,比如Unity引擎和UE4引擎,它们的出现确实为开发者提供了便利,但是对开发者来说,个人认为并不是好事情,它导致了大部分开发者只能做些没有任何科技含量的东西,请允许我这么说,因为我们只是在如何用好引擎方面大动脑筋,而不是去思考如何改造引擎。更要命的是使用的引擎都是国外开发的,人家是做底层的技术,换句话说,核心技术掌握在人家手...

2018-12-15 16:51:21 1746 3

原创 应聘客户端主程需做哪些准备

上一篇博客给读者介绍了关于应聘引擎程序或者资深引擎需要做的准备工作,本篇博客给哪些想应聘客户端主程的开发者提供一些建议。客户端主程市场需求也是非常大的,我本人以前也应聘过客户端主程,也招聘过客户端主程,下面将一些心得分享给读者,以供参考。项目要求客户端主程就是要对整个项目负责,对主程的要求就比较多,比较杂了,因为他关乎整个项目的成功与失败,所以必须要谨慎对待。项目也分很多种类,比如MMOR...

2018-12-12 18:04:09 1976 1

原创 应聘引擎程序需做哪些准备

每个人进入企业都面临面试这一关,不同的职业面试的内容是不同的,即使都是IT游戏行业,也分多个职业,从技术角度讲,有客户端,服务器,引擎程序。它们面试的内容也是不同的,工欲善其事必先利其器,要想进入某个领域必须武装好自己,不打无准备的仗。下面就给读者分享关于面试引擎程序的一点心得。简历简历是门面,相信每个面试者都写过简历,应聘引擎的程序员在简历中最好能体现自己以前做过引擎编写工作,或者使用某...

2018-12-11 07:21:24 998 2

原创 利用运动学实现导弹仿真飞行

利用Unity实现导弹飞行的算法网上案例很多,本篇博客主要给读者介绍如何将所学算法运用到项目开发的实战教程。我们将使用运动学原理实现仿真,这意味着我们将只在计算中使用速度,而不考虑物体上的质量和其他作用的物理力,这些力会影响物体的运动,比如阻力。为了能够模拟导弹击中目标,我们将考虑以下变量:发射速度,发射角度,导弹距离目标的距离。很多程序员学过算法,学过数据结构,但是在项目开发过程中就不会灵...

2018-12-10 14:15:11 3796 1

原创 手把手教你成为Shader编程实战达人—GPU

GPU编程市场应用GPU全称是Graphics Processing Unit,中文成为图形处理器,所以GPU编程也叫图形学编程,它是针对的显卡中的芯片编程,游戏引擎的更新换代发展的一个重要阶段是显卡芯片的出现,引擎的渲染能力得到极大提升。GPU 加速器于 2007 年由 NVIDIA® 率先推出,引擎的更新换代也是跟GPU硬件息息相关的,从固定流水线变成了可编程流水线,画面品质得到了质的飞跃...

2018-12-08 10:53:43 2138

原创 手把手教你成为Shader编程达人系列概述

最近,很多大型的游戏公司或者虚拟现实公司,都在大量招聘资深的GPU渲染引擎程序员或者引擎主管等。对于从事游戏开发的程序员,尤其是客户端程序员掌握GPU编程非常重要,由于项目分工的缘故,大部分程序员并没有接触到GPU编程,认为GPU编程很高深,在项目开发过程中并不关心,只负责写逻辑,这样会严重阻碍自己的职业发展。作为一名从事IT行业多年的老程序员,要想在行业立足,技术要做到全面,当然自己最拿手的技术...

2018-12-07 08:07:47 3093 13

原创 手把手教你架构3D引擎高级篇系列八

本篇博客是给读者介绍引擎底层如何与Lua进行结合,方便开发者直接使用脚本编程,为什么选择Lua,通常开发者会使用Json,XML,txt等等。相比Lua有哪些优点呢?a、除了Lua库,在没有使用其他库可以使用。b、可以在文件中使用不同的公式,例如:some_variable = math.sqrt(2)* 2c、它非常轻巧,速度快d、它是在MIT许可下换句话说代码是开源的,因此我们可以以任...

2018-12-03 21:14:45 788

原创 手把手教你架构3D引擎高级篇系列七

前面封装了数据结构中常用算法,接下来给读者封装一个好用的东西——委托。使用过Unity开发的人知道,我们经常在项目中使用委托,类似我们说的回调。使用C#编写委托,其实质是什么呢?其实就是把委托函数加到一个列表中。我们在实现引擎的委托时,首先要清楚我们的委托面对的是所有类型的,因此很容想到模板。在实现委托时,我们分两个模块,一个是委托,一个是委托列表。在这里我们还是用了模板指针,C++模板这块技术,...

2018-12-01 16:57:24 1449 1

空空如也

海洋_的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除