OpenGL
文章平均质量分 90
Night_Aurora
渲染引擎工程师
展开
-
Issue with glBindBufferRange() OpenGL 3.1
Issue with glBindBufferRange() OpenGL 3.1My vertex shader is ,uniform Block1{ vec4 offset_x1; vec4 offset_x2;}block1;out float value;in vec4 position;void main(){ value = block1.offset_x1.x + block1.offset_x2.x; gl_Pos原创 2021-05-21 17:18:01 · 222 阅读 · 0 评论 -
GLSL std140布局规则
标准uniform块布局默认情况下,包含在uniform block 中的uniform 从 buffer storage 中的提取依赖与实现方式。应用程序可以通过OpenGL提供的查询函数来查询uniform 的偏移量。在着色器中通过 layout 布局标识符 来控制 uniform 在uniform block中的布局。std140 布局规则可以使我们能够推导出uniform 在 uniform block 中的偏移量。如果一个 unform block 声明在多个着色器中并连接成单独的程序,除非翻译 2021-04-26 11:55:31 · 3707 阅读 · 7 评论 -
OpenGL 采样器的比较模式
来自flyfish|已发表2020-10-27深度纹理可以通过两种模式进行采样, 第一种是按传统的纹理采样模式直接采样来获取深度值,这将会返回一个单浮点数vec4 类型的值。也可以使用比较模式(comparison mode) 模式来采样深度纹理。使用比较模式时,我们需要指定一个参考值(reference value) , 该参考值与从深度纹理中采样的深度值进行比较,为了使参考值与采样的深度值进行比较,我们还需要设置一个比较函数(comparison function),比较结果只有R值是比较结果。..原创 2020-10-27 15:00:40 · 1069 阅读 · 0 评论 -
从OpenGL 矩阵中提取裁剪平面
来自flyfish|已发表2020-09-29我们假设 顶点 列向量 v =(x y z w=1) 和 M 是 4X4 的是变换到裁剪空间的矩阵矩阵(column major projection matrix), 将v 变换到 clip space v’ = Mv , 如下OpenGL 在测试顶点可见性时,是根据:一般视锥体分别由 左、右、底、顶、远、近、六个裁剪平面包围而成:-w’ < x’ x’在左裁剪平面正半空间内 x’ < w’ x’在右..原创 2020-09-29 18:14:19 · 578 阅读 · 0 评论 -
加载OpenGL函数
加载OpenGL函数是创建OpenGL上下文后的一项重要的初始化工作,需要使用平台特定的函数查询函数指针,且不同的版本有不同的语义。获取平台特定的OpenGL函数1.Window我们使用 wglGetProcAddress 来查询函数指针。该函数接收一个ASCII字符串作为参数,可以查询 OpenGL 函数 和 平台特定的 WGL 函数。这个函数只能在有效的上下文(OpenGL context) 上才能执行,返回的函数指针也是上下文相关的。Windows 文档指出查询出的函数可以在另外的上下文中执行原创 2020-05-20 18:33:09 · 851 阅读 · 0 评论 -
OpenGL 编程指南中 关于 uniform block 绑定错误解释
这里捋顺下uniform block 的使用方法:(1) 首先,我们在shader 中定义uniform blcok ,例如:layout (std140) uniform Matrices{ mat4 projection; mat4 view;};(2) 着色器程序连接后,获取 uniform block 的索引GLunit uboIndex,;uboInde...原创 2020-04-03 12:10:08 · 442 阅读 · 0 评论 -
gl_FragCoord 的含义
gl_FragCoord 表示当前片元着色器处理的候选片元窗口相对坐标信息,是一个 vec4 类型的变量(x, y, z, 1/w), 其中 x, y 是当前片元的窗口坐标,OpenGL 默认以窗口左下角为原点, 在 着色器中通过布局限定符可以重新设定原点,比如窗口左上角为原点origin_upper_left,窗口大小由 glViewport() 函数指定。x, y 默认是像素中心 而非 整...原创 2020-01-06 18:02:03 · 15100 阅读 · 12 评论 -
History of hardware tessellation
History of hardware tessellationPosted on2010-09-29byDaniel RákosDISCLAIMER:This article was migrated from the old blog thus may contain formatting and content differences compared to th...转载 2019-11-20 17:46:48 · 716 阅读 · 0 评论 -
OpenGL 立即模式 与 保留模式的区别,概念不是很清晰的可以看看。。。
What does “immediate mode” mean in OpenGL?One example of "immediate mode" is usingglBeginandglEndwithglVertexin between them. Another example of "immediate mode" is to useglDrawArrayswith a...转载 2019-11-15 11:11:10 · 1856 阅读 · 0 评论 -
GLSL Versions
GLSL Versionsmattdesl edited this pageon 13 Sep 2013·15 revisionsIntroYou can use the#versioncommand as the first line of your shader to specify GLSL version:#version 120void main() {...原创 2019-07-17 10:14:12 · 282 阅读 · 0 评论 -
Computing Alpha Mipmaps
这篇文章主要是解决使用带alpha 通道的贴图渲染草、树这类对象时,由于mipmap 的原因,更高一级的mipmap 贴图变得透明会导致当对象缩小时,会出现渲染对象变得光秃了或不可见了。。。Computing Alpha Mipmaps原文链接: Computing Alpha MipmapsA little problem that we had when we started to...转载 2019-07-16 14:13:14 · 353 阅读 · 0 评论 -
answer: GL_ALPHA/GL_LUMINANCE/GL_INTENSITY
GL_ALPHA/GL_LUMINANCE/GL_INTENSITYThe difference between the three single-component texture formats, GL_ALPHA, GL_LUMINANCE and GL_INTENSITY, is in the way the four-component RGBA color vector is g...原创 2019-07-09 11:11:42 · 574 阅读 · 0 评论 -
What does (gl_FragCoord.z / gl_FragCoord.w) represent?
This was asked (by the same person) and answered elsewhere. I'm paraphrasing and embellishing the answer here:As stated in section 15.2.2 of the OpenGL 4.3 core profile specification (PDF), gl_FragC...原创 2018-10-31 18:50:39 · 503 阅读 · 0 评论 -
OpenGL Projection Matrix (讲的比较通俗易懂,而且细致)
OpenGL Projection MatrixRelated Topics: OpenGL TransformationOverview Perspective Projection Orthographic ProjectionUpdates: The MathML version is available here.OverviewA computer monitor ...转载 2018-11-01 09:26:51 · 6438 阅读 · 0 评论 -
OSG 级联阴影实现与改造
最近公司业务需要,在做BIM相关显示与渲染开发,OSG 显示引擎库包里本来包括一些阴影方案,由于都是基于OPENGL固定管线实现的,而且内容比较老,OSG 一些功能可用,但真正的用在项目中,BUG 比较多,大多数需要修改、细化,总感觉它只是提供了Demo级别的演示功能,并没有给你现成的东西去用。因为涉及到建筑的显示,场景规模较大而且需要尽可能的减少阴影锯齿,提高深度纹理精度,这里我主要对OSG...原创 2018-11-13 13:58:29 · 1064 阅读 · 0 评论 -
正交矩阵与透视矩阵 裁剪变换后的注意事项:
对于正交投影,裁剪空间本身也是标准设备坐标空间,对于透视投影,裁剪空间变换到设备空间需要做透视除法。在阴影投影计算中,对于正交投影,光源MVP* V 就是规范化坐标系下的坐标。正交投影透视投影...原创 2019-03-19 17:07:49 · 784 阅读 · 0 评论 -
OSG 渲染引擎特性与架构
OSG 作为老牌的开源渲染引擎之一,有一定的用户群体,不少个人、企业、科研机构都在使用OSG进行开发。随着不少商业渲染引擎的开源与准门槛的降低(比如Unity3D 授权费用比较低,中小企业甚至个人都能负担的起授权费用,UE开源且准门槛也比降低了不少),OSG, OGRE这样的开源渲染引擎正在逐步走向没落。虽然OSG同样走向没落,但对于自研引擎或基于OSG的二次开发的商业应用,OSG还有很大的参考...原创 2019-03-20 09:37:29 · 5915 阅读 · 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 · 1480 阅读 · 0 评论 -
OSG 渲染剖析 之 Geometry 的 VBO生成
对于一个渲染引擎的渲染过程,我们一般关心的是渲染引擎如何组织、绘制场景对象。OSG 通过状态树与渲染树对渲染节点进行分组、排序与渲染。我们先抛开OSG 事件更新与处理等宏观渲染过程,这里我们从更细的角度研究OSG 是如何将场景对象数据与状态转换成OpenGL 具体实现。如果让你设计一个渲染引擎渲染场景对象,你通常会怎么做?我们一般都会这样做:首先设计场景对象的组织与数据封装类,将数据从文件或程...原创 2019-05-06 16:08:15 · 1729 阅读 · 0 评论 -
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 · 2663 阅读 · 0 评论 -
OpenGL 片元着色及输出
片元着色器处理光栅化后的产生片元并输出一系列的颜色和一个深度值。片元着色器是图元光栅化后,OpenGL显示管线的下一阶段,被图元覆盖的像素将产生输出。每一个片元着色器都具有窗口空间的位置和一系列在前一阶段顶点着色器输出的逐顶点插值。片元着色器将输出一个深度值(depth value 范围 0 - 1),也可能包含一个模版值(看定义的深度缓冲格式是否包含模版 GL_DEPTH_COMPONENT...原创 2019-05-09 14:14:04 · 2265 阅读 · 0 评论 -
关于Fragment output 数据格式
Fragment outputQ:The shader outputs to an 8 bit unsigned integer texture and a half-float RGBA (ie 16 bit) texture.how do I describe these in the glsl layout command in the fragment shader?A:...原创 2019-05-09 14:54:38 · 241 阅读 · 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 · 2393 阅读 · 0 评论