- 博客(79)
- 资源 (12)
- 收藏
- 关注
原创 FMViewer三维模型浏览器
FMViewer 能够浏览FBX, OBJ, DAE 三维格式的文件和JPG,PNG,DDS 等图片文件,目前功能还不太完善,作为一款简单的模型浏览器还是能用起来的。下载地址:链接:https://pan.baidu.com/s/1H4lS-iKoTqroq6V-xiwpkw提取码:f3ig...
2020-04-20 00:40:45 1530 1
原创 OSG 渲染引擎特性与架构
OSG 作为老牌的开源渲染引擎之一,有一定的用户群体,不少个人、企业、科研机构都在使用OSG进行开发。随着不少商业渲染引擎的开源与准门槛的降低(比如Unity3D 授权费用比较低,中小企业甚至个人都能负担的起授权费用,UE开源且准门槛也比降低了不少),OSG, OGRE这样的开源渲染引擎正在逐步走向没落。虽然OSG同样走向没落,但对于自研引擎或基于OSG的二次开发的商业应用,OSG还有很大的参考...
2019-03-20 09:37:29 5452
原创 OSG 物理渲染
目前产出了些成果,材质还不够精细 :Demo 模型浏览器 下载链接链接: https://pan.baidu.com/s/1H4lS-iKoTqroq6V-xiwpkw 提取码: f3ig
2019-01-08 16:44:14 1509 2
原创 WebGPU 纹理与纹理类型基础 (D3D对纹理的描述比较详细)
文中对纹理的概念做了详细讲解,介绍了一维纹理,二维纹理,三维纹理,纹理数组的概念和逻辑表示。
2023-06-09 14:50:41 1282 2
原创 从WEBGL 迁移到 WEBGPU
本文介绍从webgl 迁移到 webgpu的要点,指出了webGL 与 WebGPU 在着色器方面, 顶点属性,资源传递,渲染管线等方面的不同。
2023-01-13 17:32:07 1350
转载 Multi-Threading in Vulkan
Quick backgroundVulkan was created from the ground up to be thread-friendly and there's a huge amount of details in the spec relating to thread-safety and the consequences of function calls. In OpenGL, for instance, the driver might have a number of back
2022-04-20 10:28:26 156
转载 VK_KHR_dedicated_allocation unofficial manual
IntroductionThis is an unofficial manual for a Vulkan extension "VK_KHR_dedicated_allocation". I've written it because I couldn't find anything like this on the Internet, while understanding all the logic involved in its usage based on Vulkan specificati
2021-09-15 15:15:47 416
原创 Vulkan 内存
内存分类Vulkan 的内存分为两类: 宿主机内存 和 设备内存。两种内存的特点:宿主机内存 访问速度慢 ,但可分配空间大。 设备内存 直接对设备可见的,可分配空间小,但访问速度快。宿主机内存Vulkan 通过宿主机内存来存储API 的内部数据结构, Vulkan 允许程序控制宿主机端的内存分配,宿主机的内存管理通过以下数据结构来完成:typedef struct VkAllocationCallbacks { Void* ...
2021-09-03 16:41:57 535
转载 Vulkan层的简要说明
Vulkan has a lot of really nice concepts, but one that hasn't had as much attention until now is the layer system that's built into the API ecosystem.For other APIs you generally link directly against a runtime, which is entirely opaque and calls into th
2021-08-27 15:10:30 2039
原创 Vulkan 简介
序言Vulkan 的设计理念 开放性 和 轻量化Vulkan 将 “绘制物体” 描述成为多个不同缓存和多组不同的流水线之间的关联和组合。Vulkan 将实现引擎在底层接口兼容性测试和调试工作部分转移到了算法封装和框架设计上。vulkan 的介绍 概念 术语 ,与 openGL 的不同点vulkan 的原始概念由AMD 的 Mantle API 设计和实现的, AMD将 Mantle 的源码贡献给 khronos 组织, 而后 khronos 组织发布了vulkan。..
2021-08-23 17:13:59 15157
原创 自旋锁(spin lock)与互斥量(mutex)的比较
下面摘录一些关于C++当中自旋锁(spin lock)与互斥量(mutex)的比较自旋锁是一种非阻塞锁,也就是说,如果某线程需要获取自旋锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取自旋锁。互斥量是阻塞锁,当某线程无法获取互斥量时,该线程会被直接挂起,该线程不再消耗CPU时间,当其他线程释放互斥量后,操作系统会激活那个被挂起的线程,让其投入运行。两种锁适用于不同场景:如果是多核处理器,如果预计线程等待锁的时间很短,短到比线程两次上下文切换时
2021-06-10 10:02:11 1416
原创 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 196
翻译 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 3283 7
原创 What is the difference between framebuffer and image in Vulkan?
Answers:VkFramebuffer + VkRenderPass defines the render target.Render pass defines which attachment will be written with colors.VkFramebuffer defines which VkImageView is to be which attachment.VkImageView defines which part of VkImage to use.VkImage
2021-02-05 16:03:43 201
原创 Filament渲染引擎剖析 之 通过图元构建几何体
使用filament渲染图元什么是图元filament可绘制的图元类型构建图元的工具VertexBufferIndexBufferPrimitive什么是图元图元是构成图形实体的最小单元,可见物体的表面可以由数量不等的三角形拟合而成,常见的图元类型有点、线、三角形等,无论多么复杂的物体外观,一般都可以用这三类基础图元拟合而成。OpenGL 常见的图元类型: 点、线、条带线、循环线、三角形、三角形条带、三角形扇面。在OpenGL早期版本中多边形与四边形也是OpenGL 基本图元类型,但在OpenGL3.
2021-01-04 17:32:40 2024
原创 OpenGL 采样器的比较模式
来自flyfish|已发表2020-10-27深度纹理可以通过两种模式进行采样, 第一种是按传统的纹理采样模式直接采样来获取深度值,这将会返回一个单浮点数vec4 类型的值。也可以使用比较模式(comparison mode) 模式来采样深度纹理。使用比较模式时,我们需要指定一个参考值(reference value) , 该参考值与从深度纹理中采样的深度值进行比较,为了使参考值与采样的深度值进行比较,我们还需要设置一个比较函数(comparison function),比较结果只有R值是比较结果。..
2020-10-27 15:00:40 1000
原创 从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 524
原创 区分C++的常量指针与指针常量
我们知道const 修饰的变量作为常量来看待, 所谓常量就是赋值后不能被改变的量, const 修饰的变量或指针有时很难区分其类别,在这里推荐一种简单的方法来区分到底是常量指针 还是 指针常量。这里我们先搞清楚 何为常量指针 和 指针常量:常量指针: 指向常量的指针,由于指向的是常量,当用指针解引用来修改被指对象的值时,是无法完成操作的。指针常量: 这个词可以参考 const int 或 int const , 我们说 const int 是整形常量 , 当修饰指针时,我们就说指针常量。首先
2020-08-12 15:02:21 265
原创 Filament 渲染引擎剖析 之 ECS模式
一、什么是 ECS 模式ECS Entity-Component-System(实体-组件-系统) 是基于组合优于继承原则的一种模式,每一渲染对象都是一个实体,每个实体由一个或者多个组件构成,每个组件仅包含该组件需要关注的数据,而系统来处理这些实体的集合,只有逻辑部分,不存在状态。ECS 的优势:(1) 容易添加新的复杂的实体类型显而易见,将需要的组件整合起来就会形成一个新的实体类型。(2) 容易定义新的实体数据;、实体数据是在组件中定义的,只需要扩充新的组件很容易的定义新的实体属性。(3)
2020-07-07 15:35:23 3076
原创 加载OpenGL函数
加载OpenGL函数是创建OpenGL上下文后的一项重要的初始化工作,需要使用平台特定的函数查询函数指针,且不同的版本有不同的语义。获取平台特定的OpenGL函数1.Window我们使用 wglGetProcAddress 来查询函数指针。该函数接收一个ASCII字符串作为参数,可以查询 OpenGL 函数 和 平台特定的 WGL 函数。这个函数只能在有效的上下文(OpenGL context) 上才能执行,返回的函数指针也是上下文相关的。Windows 文档指出查询出的函数可以在另外的上下文中执行
2020-05-20 18:33:09 771
转载 git 版本管理
Git常用命令一、本地操作:1.其它git init:初始化本地库git status:查看工作区、暂存区的状态git add :将工作区的“新建/修改”添加到暂存区git rm --cached :移除暂存区的修改git commit :将暂存区的内容提交到本地库tip:需要再编辑提交日志,比较麻烦,建议用下面带参数的提交方法git commit -m “提交日志” :文件从暂...
2020-04-29 10:34:02 119
原创 Filament 渲染引擎剖析 之 FrameGraph 2 动态构建渲染管线
一、渲染通道的设计与实现1 Fostbite 构建FrameGraph的准则我们先看下Fostbite 构建FrameGraph原则,包括三个阶段:设置阶段 setup、编译阶段compile、执行阶段execute。2 Filament使用FrameGraph动态构建渲染管线流程如下图所示:如果不考虑渲染通道的并行计算与同步问题,FrameGraph 的实现还是比较直观的。实现 ...
2020-04-21 23:26:39 1956 1
原创 Filament 渲染引擎剖析 之 FrameGraph 1 虚拟资源的定义与创建
Filament 使用了可扩展渲染管线(FrameGraph)来组织渲染通道和管理渲染资源,网上也搜了下可扩展渲染管线的相关的文章,一般认为可扩展渲染管线是次时代渲染引擎应该具备的比较先进的管线组织架构方式。所以就硬着头皮读了读Frostbite 对FrameGraph 的宣讲PPT,看完后觉得似懂非懂,爱钻牛角尖的个性也不适合全局看问题,总爱在细节上卡壳,卡住也就不管下面的原理了(应该...
2020-04-20 18:33:36 3633 1
原创 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 396
原创 管理数据库事务
一、什么是事务事务是对数据库执行的一个操作单位, 以逻辑顺序完成的工作单元或工作序列, 由数据操作语言(DML)完成的。 任何指定的事务(DML 语句组)都必须作为一个整体来完成, 否则其中任何一条语句都不会完成。特点:事务都有开始 和 结束; 事务可以被保存 或者 撤销; 如果事务在中途失败, 事务中的任何部分都不会被执行;二、事务控制事务控制命令只与 DML 命令 ...
2020-01-22 10:46:57 268
原创 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 14371 12
FMViewer 模型文件 exterior.7z
2019-05-23
FMViewer 模型浏览器
2019-05-23
Nginx高性能Web服务器实战教程(完整清晰带目录)
2018-09-13
OSG三维渲染引擎设计与实践
2018-02-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人