![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenSceneGraph
Night_Aurora
渲染引擎工程师
展开
-
OSG 高效渲染 之 多线程模型与渲染
这里以OSG多线程渲染为例,谈谈OSG渲染引擎多线程渲染模式,再说说哪里有点“过时”了需要改进。先谈点题外话,曾经看到知乎上一篇关于游戏引擎的设计讨论的文章,有位“大大”提出游戏引擎的设计关键在于架构设计,这是灵魂,一味强调画质如何,shader , 特效算法写的如何好,渲染的怎么真实漂亮那是舍本逐末,这些都可以照着“Real-TimeRendering” 或 是相关的 paper 实现即可...原创 2019-10-28 15:10:21 · 4975 阅读 · 6 评论 -
增加场景真实感
最近看了看sketchfab,一个以模型内容为主的展示和交易平台,感觉它的web端渲染效果做的比较不错,有些达到了照片级别的显示效果,我就研究下了渲染管线及相关后处理,它采用了OSGJS作为模型浏览器,说实在的,OSGJS 从渲染效果上比不过现在如日中天的threejs,但OSGJS渲染引擎架构比较出色,它是基于OSG架构开发的,模块划分、调用、层次关系更合理,其它的web端显示引擎架构多数都比较...原创 2019-08-16 10:21:47 · 758 阅读 · 0 评论 -
OSG 后处理局限性
OSG 大部分插件及Demo都停留在固定管线阶段,虽然离屏渲染支持的比较完善,而且最近也加了一些新特性,比如支持UBO, 图像原子操作等,但后处理渲染还是有不少局限性:一、 延迟渲染+ 正向渲染的局限性如果对架构不做大的调整,不同渲染通道对实体的拣选只能靠实体掩码做过滤,多通道情况下效率和灵活性比较低,一帧要遍历多次。二、基于多重采样的反走样处理的局限性由于采用的Resove 模式...原创 2019-08-07 12:01:54 · 887 阅读 · 2 评论 -
OSG OIT 顺序无关透明绘制(PPLL_OIT, WB_OIT) 实现及注意事项
这段时间研究了一下顺序无关的半透明实体绘制实现方法,顺便完善了OSG显示引擎半透明实体绘制部分,看了看相关资料,正确性、效率最好的是基于权重函数的混合算法和GPU端链表法,还有个基于矩的数学方法,绘制的效果比基于权重函数的混合算法效果更好,太复杂,俺也懒得看了,看也看不懂,只有DX代码,放弃了。两种方法存在的问题罗列一下,给其他有兴趣实现的OIT透明绘制的朋友做个参考,本人比较水:)。先来张...原创 2019-05-22 11:16:48 · 20101 阅读 · 9 评论 -
OSG 渲染剖析 之 Geometry中使用VBO、VAO
在OSG 渲染剖析 之 Geometry VBO 生成中,我们分析了OSG 的几何数据如何转换成OpenGL 对应的相数据, 及相关实现类,这一节我们看看,Geometry中的几何数据是怎样被渲染出来的。我们先认识一下VBO,VAO的数据派发及绑定状态管理工具类:class OSG_EXPORT VertexArrayState : public osg::Referenced{ ...原创 2019-05-06 19:19:28 · 2554 阅读 · 0 评论 -
OSG 渲染剖析 之 Geometry 的 VBO生成
对于一个渲染引擎的渲染过程,我们一般关心的是渲染引擎如何组织、绘制场景对象。OSG 通过状态树与渲染树对渲染节点进行分组、排序与渲染。我们先抛开OSG 事件更新与处理等宏观渲染过程,这里我们从更细的角度研究OSG 是如何将场景对象数据与状态转换成OpenGL 具体实现。如果让你设计一个渲染引擎渲染场景对象,你通常会怎么做?我们一般都会这样做:首先设计场景对象的组织与数据封装类,将数据从文件或程...原创 2019-05-06 16:08:15 · 1627 阅读 · 0 评论 -
Normal Mapping Without Precomputed Tangents
Normal Mapping Without Precomputed TangentsPosted on2013-01-20bychristianThis post is a follow-up to my 2006 ShaderX5article [4] about normal mapping without a pre-computed tangent bas...转载 2019-03-27 14:58:30 · 1353 阅读 · 0 评论 -
OSG 渲染引擎特性与架构
OSG 作为老牌的开源渲染引擎之一,有一定的用户群体,不少个人、企业、科研机构都在使用OSG进行开发。随着不少商业渲染引擎的开源与准门槛的降低(比如Unity3D 授权费用比较低,中小企业甚至个人都能负担的起授权费用,UE开源且准门槛也比降低了不少),OSG, OGRE这样的开源渲染引擎正在逐步走向没落。虽然OSG同样走向没落,但对于自研引擎或基于OSG的二次开发的商业应用,OSG还有很大的参考...原创 2019-03-20 09:37:29 · 5551 阅读 · 0 评论 -
正交矩阵与透视矩阵 裁剪变换后的注意事项:
对于正交投影,裁剪空间本身也是标准设备坐标空间,对于透视投影,裁剪空间变换到设备空间需要做透视除法。在阴影投影计算中,对于正交投影,光源MVP* V 就是规范化坐标系下的坐标。正交投影透视投影...原创 2019-03-19 17:07:49 · 760 阅读 · 0 评论 -
OSG 物理渲染
目前产出了些成果,材质还不够精细 :Demo 模型浏览器 下载链接链接: https://pan.baidu.com/s/1H4lS-iKoTqroq6V-xiwpkw 提取码: f3ig原创 2019-01-08 16:44:14 · 1524 阅读 · 2 评论 -
OSG 级联阴影实现与改造
最近公司业务需要,在做BIM相关显示与渲染开发,OSG 显示引擎库包里本来包括一些阴影方案,由于都是基于OPENGL固定管线实现的,而且内容比较老,OSG 一些功能可用,但真正的用在项目中,BUG 比较多,大多数需要修改、细化,总感觉它只是提供了Demo级别的演示功能,并没有给你现成的东西去用。因为涉及到建筑的显示,场景规模较大而且需要尽可能的减少阴影锯齿,提高深度纹理精度,这里我主要对OSG...原创 2018-11-13 13:58:29 · 1032 阅读 · 0 评论 -
阴影算法
阴影算法,在3D渲染中是很重要的一部分。阴影算法大致可以分为以下三类:基于ray tracing,基于shadow volume,基于shadow map(Z buffer). Ray tracing可以很自然地实现shadow,不需要特殊处理,但是ray tracing一般都用于离线渲染。Shadow Volume在实时渲染中也有应用,但是Shadow Volume依赖于geometr...转载 2018-10-29 14:57:22 · 2342 阅读 · 0 评论 -
OSG 渲染(2) 渲染树的构建方式
什么是OSG渲染树?为调整对象的渲染顺序及子场景的渲染顺序的产物 ,树状层次关系,渲染树可以看成挂接了子场景节点的集合。根节点是渲染台,子节点是渲染元,真正的绘制者是渲染叶。RenderStage RenderBinRenderLeaf渲染树由哪些方式构建渲染树通过camera 和 由StateSet 设置的渲染序号和渲染名称在场景对象遍历过程中,通过裁剪器构建起来的。场景执行裁剪之前,系统会默认...原创 2018-02-11 11:34:41 · 517 阅读 · 0 评论 -
OSG 渲染(3) 动态剖切的实现方法
在CAD工程软件里,很多时候需要动态剖切模型来查看模型截面情况。我们知道OpenGL 固定管线支持用户自定义剖面,且最多支持6个剖平面,OpenGL3.0 以后的版本虽然已经逐步废弃固定管线,但我们可以使用shader,并传递截平面方程参数给shader,使用discard 语句实现类似固定管线用户自定义截面的效果。下面将介绍如何实现上图动态剖切且加盖的效果,也将说明存在哪些技术难点。一般方法: ...原创 2018-02-11 15:02:27 · 3196 阅读 · 3 评论 -
OSG 多线程模型 设计思想
A New Processing Model forMultithreaded, Multidisplay Scene GraphsCopyright © 2001 Don Burns (DB - Apr 28, 2004) This article was written in 2001 before the initial implementation of Producer. ...转载 2018-02-11 13:49:47 · 879 阅读 · 0 评论 -
OSG 渲染(1) 多视图的实现方法
一般多视图、视口在CAD、仿真领域里用的比较多,游戏里用的相对较少。尤其是CAD,要求在多视口内用不同的渲染模式来显示零件。比如,在单视图内用多视口方式,分别用着色模式,线框消隐模式来绘制显示模型。这里提到视口,视图,在不同的软件中因其定义实现的方式不同,显得比较混乱,有时两者不同,有时两者又等价!按我自己理解,一个窗口内划分成几个部分,如果每个子区域包括业务处理逻辑(如事件处理,在子区域内平...原创 2018-02-11 09:51:32 · 2066 阅读 · 4 评论