3D引擎设计
Crazy Engine
自由职业者一名,20年引擎研发经验,研发过4代3D引擎,正在开发第5代。
展开
-
为什么屏幕亮度不使用lux,而是使用nit作为单位?
最近发售的Mac book pro的屏幕:1000 nits sustained (full screen), 1600 nits peak。我们知道,基于物理的光照常用的单位有4种:那么为什么屏幕要选择nit呢?原因是这些单位分为亮度和照度,比如说太阳光用的单位是lux,这种单位属于照度,也就是说垂直于光的方向上,每平米上有多少流明照射上去。而nit是亮度单位,也就是定量描述特定角度和距离下,有多少光通量。我们看屏幕时,一般视线垂直于屏幕,这个角度上看屏幕最亮。当然,屏幕还有个关键指标原创 2021-11-18 18:53:07 · 10829 阅读 · 0 评论 -
3D渲染引擎着色方式的演化史
Forward rendering最初始的渲染方式,原理是以mesh为单位进行渲染,在光栅化后,对每个PS进行计算时,根据光照进行着色计算,所以这种方式称为前向着色。弊端:1、如果像素被其他像素遮蔽了,就浪费了宝贵的处理结果;2、光源多起来后管理很麻烦,Shader也不好写。这样,Deferred rendering就应运而生了。Deferred renderi原创 2016-11-16 19:52:57 · 2212 阅读 · 0 评论 -
给立志于游戏引擎研发的新手的一些建议
经常遇到一些新手,问如果想立志于游戏引擎研发,有一些什么好的建议。另外个人认为游戏程序员即使是在使用商业引擎做项目,也应该至少达到引擎初级水平,这样才能知其然也知其所以然,也能更好的应用。总结了下自己这么多年的经验和教训,做个分享。一家之言,仅供参考。 1、至少要熟悉C++和数据结构。目前大多数游戏引擎为了效率,都会选择C++作为开发语言。原创 2016-11-18 02:02:45 · 10139 阅读 · 5 评论 -
关于遮挡剔除的几个算法尝试
之前在公司使用DX9做端游引擎,优化性能中涉及到一个算法,就是遮挡剔除。最经典的算法就是使用API中的遮挡查询接口,GPU Gem上面有一篇文章专门讲这个。实话说,这个算法看过好几次,直到今天都没有彻底明白。后来看到有的人评价说这个算法不一定能改进性能,甚至还会导致更低。看到这个我有点底气彻底放弃了,是的,我一直有个观点,就是越简单越好,一旦某个东西很复杂,我就会警惕起来,就会怀疑设计有问题。原创 2016-10-31 23:09:08 · 5005 阅读 · 0 评论 -
如何保证游戏资源名全局唯一
在最初两家创业公司开发3D端游时,使用的是自主研发的3D引擎。资源文件索引都是使用“相对于根目录的相对路径”+“文件名”作为ID,并且规定资源只有一个根目录,这样就能利用操作系统的文件管理系统保证资源全局唯一(当然你也可以把同一个文件复制多份放在别处,但是引擎会把它们当成完全不同的文件)。这种方式要求项目在最初就把资源文件路径结构规划好了,否则开发中移动文件会非常麻烦,必须重新修改文件原创 2017-09-12 11:03:02 · 670 阅读 · 0 评论