图形
文章平均质量分 72
knowthyselfcn
桌面端、网站架构,会点opengl,会点Android
展开
-
Vulkan Specification(Vulkan规范):第十三章 13.1 描述符类型
13.1. 描述符类型如下几个小节简单讲解Vulkan支持的各种描述符类型。 每一小节定义了一种描述符类型,每一种类型在着色器语言和SPIR-V中都有详细讲解。 描述符类型和着色器语言中不透明类型的类别大多数情况下是一对一的,着色器语言中不透明类型必须指代 对应描述符类型的管线布局中的一个描述符。 但是,对于此规则,如下情形是一个例外Combined Image Sampler。13.1...翻译 2020-03-22 14:22:58 · 1455 阅读 · 0 评论 -
Vulkan Specification(Vulkan规范):第十三章 13 资源描述符
着色器通过使用特殊的着色器变量(通过API间接绑定到缓冲区或者图像视图)来访问缓冲区和图像资源。 这些变量被组织进入集合,每一个绑定的集合都通过API的一个描述符集合对象来表示,描述符集合只能被绑定一次。 一个描述符是一个不透明的数据类型,表示一个着色器资源,诸如缓冲区视图、图像视图、采样器或者被绑定的着色器资源。 每一个集合的内容由它自己的描述集合布局来决定,可以被管线内部的着色器资...翻译 2020-03-22 14:21:23 · 304 阅读 · 0 评论 -
Vulkan Specification(Vulkan规范):第十一章 11.7. 资源共享模式
11.7. 资源共享模式缓冲区和图像对象能以共享模式被创建,控制它们如何被队列访问。 受支持的共享模式如下:typedef enum VkSharingMode { VK_SHARING_MODE_EXCLUSIVE = 0, VK_SHARING_MODE_CONCURRENT = 1,} VkSharingMode; VK_SHARING_MODE_EXC...翻译 2020-03-21 20:24:10 · 520 阅读 · 0 评论 -
OSG入门简介
Gitchat开通要先写一篇文章,我还没有想好完整的的教程目录。不过,肯定是三维方面的。后续的,想要开展一些桌面端、网站服务端架构介绍的专题。OpenGL与DX11/12的选择?我认为,最好还是学习一下OpenGL。对于想做游戏的开发者,那毫无疑问,应该去学习DX。 OSG与OGRE选择?我之前的文章没有提过,这里简单提一下。OSG比OGRE要简单多了,OSG仅仅是一个三维渲...原创 2019-11-16 10:15:12 · 1017 阅读 · 0 评论 -
Vulkan编程指南翻译 第六章 着色器和管线 第1节 GLSL简介
第六章 着色器和管线在本章你将学到l 什么事着色器及如何使用它l SPIR-V -- Vulkan渲染语言的基础知识l 如何构造着色器管线并用它做工作 着色器是在设备上执行的小程序。他们是任何复杂Vulkan程序构建的基础单元。对你的应用程序中操作来讲,着色器比Vulkan API更重要。本章介绍着色器和着色器模块,展示他们如何从SPIR-V二进制文件构建,并讲解如何使用标翻译 2017-03-04 12:02:26 · 2354 阅读 · 0 评论 -
Vulkan编程指南翻译 第七章 图形管线 第4节 创建简单的图形管线(下)
这一节实在太长了,拖了好久。还是分开发吧。7.4.3 输入组装图形管线的输入组装阶段接受顶点数据,并把它们分组,组成图元,以供管线接下来的部分处理。它是通过一个VkPipelineInputAssemblyStateCreateInfo类型的数据描述的,通过VkGraphicsPipelineCreateInfo类型数据的pInputAssemblyState翻译 2017-03-22 00:51:23 · 1329 阅读 · 0 评论 -
Vulkan编程指南翻译 第七章 图形管线 第2节 Renderpasses(未完成)
a翻译 2017-03-22 00:53:46 · 2343 阅读 · 0 评论 -
Vulkan编程指南翻译 第八章 图形管线 第3节 索引化绘制
s翻译 2017-03-29 09:28:38 · 884 阅读 · 0 评论 -
Vulkan编程指南翻译 第八章 图形管线 第4节 实例化
s翻译 2017-03-29 09:29:13 · 862 阅读 · 0 评论 -
Vulkan编程指南翻译 第八章 图形管线 第5节 间接绘制
s翻译 2017-03-29 09:30:06 · 1915 阅读 · 0 评论 -
Vulkan编程指南翻译 第七章 图形管线 第1节 逻辑图形管线
第七章 图形管线 在本章你将学到图形管线是什么样子的如何创建图形管线对象如何使用Vulkan绘制图元 或许Vulkan最常被当作图形管线API来使用。图形是Vulkan和驱动最基础的功能,是任何视觉效果程序的核心。Vulkan中图形处理可以被看作是管线,管线接受多个贯穿多个阶段图形命令,并在显示器上产生图像。本章将覆盖Vulkan中图形管线的基础并介绍第一个管线的例子。翻译 2017-03-12 21:47:37 · 833 阅读 · 0 评论 -
Vulkan编程指南翻译 第六章 着色器和管线 第5节 第6段 图像采样
这一节实在太长了,分篇来翻译。Sampled Images 当着色器从图像读数据时,他们可以可以使用两种方式。第一种是原生加载,从图像的指定位置直接读取格式化的或非格式化的数据,第二种是使用采样器对图像采样。采样包括:在图像坐标空间做基础变形或者纹素过滤来光滑图像返回到着色器。采样器的状态通过一个采样器对象表示,它可像图像或者缓冲区一样被绑定到描述符集合。可调用函数vkCreate翻译 2017-03-11 18:48:50 · 898 阅读 · 0 评论 -
Vulkan Programming Guide 第一章 第2节
这是本书翻译的第一章,由wanghexu09008126 翻译,大家可以直接到该博客上查看。等所有的章节完成后,再合并。 Vulkan Programming Guide 第一章 第2节转载 2017-03-21 13:49:43 · 961 阅读 · 0 评论 -
Vulkan Programming Guide 第一章 第3节
这是本书翻译的第一章,由wanghexu09008126 翻译,大家可以直接到该博客上查看。等所有的章节完成后,再合并。 Vulkan Programming Guide 第一章 第2节转载 2017-03-28 09:25:13 · 754 阅读 · 0 评论 -
Vulkan Programming Guide 第一章 第一节
这是本书翻译的第一章,由wanghexu09008126 翻译,大家可以直接到该博客上查看。等所有的章节完成后,再合并。http://blog.csdn.net/wanghexu09008126/article/details/60649590转载 2017-03-07 11:57:02 · 650 阅读 · 0 评论 -
3D游戏引擎设计--实时计算机图形学的应用方法
2015-03-06 这本书是非常好的参考资料,我在做最近的一个任务,需要在CAD程序中把全局坐标映射到局部坐标,本来对这个计算过程还是有一点模糊的,按照书中相关章节的分析,没花多久就实现出来了。虽然说这是图形学中最为基本的操作,我从无到有的学会并实现出来了,是非常受鼓励的。第1章 概述第2章 图形系统第3章 渲染器第4章 场景图第5章 控制器动画第原创 2017-03-07 10:25:59 · 2535 阅读 · 0 评论 -
Vulkan编程指南翻译 第六章 着色器和管线 第5节 在着色器中访问资源
6.5 在着色器中访问资源应用程序中的着色器有两种方式来消耗和生产数据。第一种是通过固定管线,第二种是直接读取和写入资源。你在第二章”内存和资源“中看到如何创建缓冲区和图像。在本节,我们介绍描述符集合,它表示着色器程序可以操作的资源的集合。 6.5.1描述符集合描述符集合是被绑定到管线的一系列资源形成的组。多个集合可以同时绑定到管线。每一个集合都有布局,描述了集合中资源的排放顺序翻译 2017-03-10 08:16:33 · 1361 阅读 · 0 评论 -
Vulkan编程指南翻译 第六章 着色器和管线 第4节 执行工作
6.4 执行工作在前一节,你看到了如何使用vkCreateComputePipelines()构造一个计算管线并把大绑定到一个命令缓冲区。一旦管线被绑定,你可以用它来执行工作。计算着色器作为计算管线的一部分,以分组的形式来执行,分组成为本地工作组。这些工作逻辑上速度一致的执行,在着色器里被指定了固定的大小。本地工作组最大个数一般比较小,但是至少是128调用 × 128 调用× 64 调用翻译 2017-03-10 08:16:01 · 1050 阅读 · 0 评论 -
Vulkan编程指南翻译 第六章 着色器和管线 第3节 管线
6.3 管线如你在前面小节所读到的,Vulkan使用着色器module来表示一系列的着色器程序通过把module代码交给vkCreateShaderModule()可以创建着色器module,但是,在它们可以在设备上被用来工作之前,你需要创建管线。在Vulkan中有两种管线:计算和图形。图形管线相对复杂,且包含许多和着色器相关的状态。然而,计算管线在概念上简单多了,且出来着色器代码也不包翻译 2017-03-07 00:26:35 · 1295 阅读 · 0 评论 -
什么叫做算法的?
2015-03-03 刚进入团队的时候,并没有什么具体的活儿,就是学习OpenGL红宝书并参看CAD系统的代码,理解架构。现在团队还没有完全建立起来,干活儿的只有几个人,还有学生帮着干活儿。一周多以后,我就接到了一个任务,帮着渲染族的同学做一个工具,是他们在实现一篇衣服渲染的BRDF算法的论文时,需要这么一个工具。在我工作以来,这就是我想要的,不想只能利用他人写的框架、库,离了它们就原创 2017-03-04 00:00:33 · 1495 阅读 · 1 评论 -
Vulkan编程指南翻译 第七章 图形管线 第4节 创建简单的图形管线
7.4 创建简单的图形管线 可调用和第六章“着色器和管线”中创建计算管线的函数类似的函数来创建图形管线。然而,你可以看到,图形管线包含很多个着色阶段和固定功能处理单元,所以,对于图形管线的相应的描述就复杂的多了。可调用vkCreateGraphicsPipelines()来创建图形管线,其原型如下: VkResultvkCreateGraphicsPipelines翻译 2017-03-20 10:08:22 · 1579 阅读 · 0 评论 -
Vulkan编程指南翻译 第七章 图形管线 第5节 动态状态
7.5 如之前章节所见,图形管线是大型的、复杂的,包含很多状态的对象。在很多图形应用程序中,我们期望能够高频率的改变一些状态。如果每一个状态的每一次更改都需要你创建一个新的图形管线对象,那么你的应用程序中对象的个数将会迅速的变得很大。要精细粒度的管理状态的改变,Vulkan提供了以便定图形管线某部分为动态的能力,这意味着它们可以被命令缓冲区的命令而不是一个对象直接在运行时修改。因为这减少了翻译 2017-03-22 19:52:52 · 1531 阅读 · 0 评论 -
Vulkan编程指南翻译 第八章 图形管线 第1节 准备绘制
第八章 绘制在本章你将学到:l Vulkan中不同绘制名利的细节l 如何通过实例化来绘制多分复制的数据l 如何通过缓冲区传递绘制参数 绘制是Vulkan中基础的操作,由图形管线触发工作被执行。Vulkan包含多条绘制命令,每一个都以稍微不同的方式声称图形工作。本章深入研究Vulkan所支持的绘制命令。首先,我们在回顾一下第七章“”讨论过的基本绘制命令;然后,我们探索i翻译 2017-03-24 13:18:32 · 1516 阅读 · 0 评论 -
Vulkan编程指南翻译 第八章 图形管线 第2节 顶点数据
8.2 顶点数据如果你所使用的图形管线需要顶点数据,在执行任何绘制操作前,你需要绑定用来获取数据的哦缓冲区。当缓冲区被用来作为顶点数据的来源时,它们有时也被称为顶点缓冲区。把缓冲区当作顶点数据来用的命令是vkCmdBindVertexBuffers(),它的原型是: voidvkCmdBindVertexBuffers (VkCommandBuffer翻译 2017-03-24 14:04:07 · 989 阅读 · 0 评论 -
OSG实现正交投影
2019-08-10 前段时间群里有人问OSG的正交投影怎么实现,似乎不熟悉的同学都陷入错误的思考方式,从而难以把问题想明白。其实,这个功能很简单。只要想明白了,就会豁然开朗,也能对类似的问题有所帮助。OSG内置的manipulator都是为透视投影准备的。但是,CAD程序多数情况下需要使用正交投影。OSG抽象了一个Manipulator类型,鼠标、键盘驱动camera进行交互浏览。其继承层...原创 2019-08-12 09:40:38 · 2812 阅读 · 4 评论 -
Qt 与 MVC
2018-11-14 MVC软件架构模式出现的很早,80年代随着可视化操作系统的兴起就开始发展了。“MVC模式最早由Trygve Reenskaug在1978年提出[1],是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。”在那个8086的年代直接从语言层面为UI显示考虑,我真的不得不佩服项目负责人开拓创新的精神。但此文并不讨...原创 2019-08-06 10:51:49 · 913 阅读 · 0 评论 -
《百面机器学习》推荐
2018-10-21 我不得不推荐一下这本书。相信,很多人并不是机器学习科班出身的,但是,出于兴趣想要学习这些带来巨大效益的知识和技术。虽然我们也在跟着课本学习,但由于没有研究型项目的实践,效率就可想而知了。相较于app、web等技术的学习,这里的项目实践更加有意义、更重要,因为涉及到的各种算法和基础知识,非常依赖于项目的具体需求,变动非常大。机器学习中涉及到的算法、模型种类繁多,就是因为要...原创 2019-08-06 10:50:53 · 376 阅读 · 0 评论 -
基于OSG的资源导入
2018-09-13 我们经常需要在渲染程序中继承各种格式的文件导入功能,虽然我们可以自行编译各种文件类型处理的lib,但是,如果渲染引擎能够有一个模块来处理这样的工作是最好的了。OSG插件机制真的是利器。这里主要讲讲用OSG插件进行资源导入。OSG支持多种3D格式,链接[1]表明,基本囊括了我们能接触到的数据交换格式。对于每一种格式,OSG都有插件来处理。插件用dll来实现,根据文件...原创 2019-08-06 10:50:25 · 554 阅读 · 0 评论 -
OSG场景管理
2018-09-01 场景管理是渲染引擎的核心功能,我们希望能够把所有的渲染物体合理的组织在一起,而且能够方便的查找、管理。本质上就是设计一个或者多个数据结构。这个目标很容易实现,放在一个数组里就可以了,各种操作的代价也不是很大。但是,这是不行的。 首先,我们需要把显示物体分组,一堆对象可能是属于一起的,在逻辑上在一个集合,虽然我们可以用额外的数据结构来进行分组管理,那很容出错。所以...原创 2019-08-06 10:49:47 · 1199 阅读 · 5 评论 -
OSG 八叉树 与 Kd Tree
2018-09-01 在游戏或者CAD程序中,我们经常面对的一个需求:已知空间(多数是二维、三维,也有少数高维空间)内的一个物体,求解距离它最近的k个物体是哪些。当然,这个问题可能很简单,假设空间内只有几百几千、甚至几万个个物体,我们只需要遍历一下即可。也花费不了几毫秒时间。但是,当空间内的物体有几百万、几千万个的时候呢,或者几亿几十亿呢?你个简单的查找就耗费几十分钟、几个小时,这绝不能忍...原创 2019-08-06 10:48:54 · 2302 阅读 · 0 评论 -
基于OSG的巨量点云渲染
2018-08-12 点云渲染是非常简单的事情。因为我们只需要处理顶点,光照都不需要考虑。但是,当点云的数量很大,达到千万、亿级别时,事情就变得困难了。FPS低于10,就根本没有办法做什么交互了,甚至显存根本装不下需要渲染的对象,或者顶点数量超过了显卡的能力上限。所以,我们需要优化这个过程。点云显示最大的性能瓶颈就是光栅化,顶点的数量是最大的问题所在。针对此问题,我们一般由两种优化措施...原创 2019-08-06 10:48:19 · 4479 阅读 · 1 评论 -
计算几何实践2.2:3D窗口的拾取操作
2018-02-25 在三维CAD 软件和3D游戏中,都有目标的拣选操作。通常有两种方式来实现这个功能:一是通过手工计算从屏幕发出的射线与场景内的物体求交,二是使用Vulkan/OpenGL的拾取机制(Selection Mode)。 即使是自己实现三维选择操作,也有多种方式。简单的拾取操作分为两类:点选和框选。点选非常简单,就是求解一条射线和场景内物体的相交。框选则需要按照投影模式分一下:...原创 2018-02-25 21:22:05 · 726 阅读 · 0 评论 -
计算几何实践3:三角化
2017-12-10 想写一篇三角化的总结,竟然拖了三年时间。这是我拖的最久的一篇总结了。再不写,没准以后不做这方面内容了,就没有机会了。刚开始进入项目组的时候,项目刚进入初始阶段,我们人手不够,紧迫性也不是那么高,所以,我也被允许有一些时间来阅读网格化相关的材料,一份70页的paper,一个小册子Polygon Mesh Processing。那时候还是很痛苦的,完全没有这方面原创 2017-12-22 22:26:58 · 12500 阅读 · 1 评论 -
计算几何实践1:基础
2017-11-27 计算几何在CAD开发,游戏开发中比较重要,可能只有机械和CAD方向的研究生才把这门课作为基础课程,很多做游戏的同学未必专门学习过这门课程。我觉得专门学习一下还是非常有必要的。我这两年多基本上在做CAD的开发,或多或少都需要涉及到这门课程里的知识。只是,一直没有系统的总结一下。我这两年虽然也做了很多的杂活儿,但是,主要还是在CAD组的工作。我个人对于CAD没有那么原创 2017-12-05 14:08:42 · 574 阅读 · 0 评论 -
Vulkan规范:第九章 9.1
9.1. 计算管线计算管线有单个静态计算着色器阶段和管线布局组成。计算管线代表着一个计算着色器,通过参数module 和 pName从计算着色器中选择一个入口点来 调用vkCreateComputePipelines, 这个入口点定义了一个有效的计算着色器,包含在VkComputePipelineCreateInfo数据结构中的VkPipelineShaderS翻译 2017-11-14 23:47:40 · 582 阅读 · 0 评论 -
曲线拟合与绘制
2017-07-27 在学习图形学课程中,一个很重要的部分就是绘制曲线、曲面。其实,这部分需要的基础课程有“最优化”、“数值分析”,其实,想要完全弄清楚,还是有一定难度的。但是,曲线、曲面的绘制是分为两部分的,一部分是数学,一部分是绘制。一,拟合 简单来讲,问题的定义是:我们通常会获取到一些离散的点,二维的、三维的, 比如在CAD软件开发需求中,我们经常获取到的数据可能原创 2017-10-25 16:12:25 · 3081 阅读 · 0 评论 -
Vulkan规范 翻译招募
2017-09-14 其实,很早就开始翻译这份文档了,应该是二月份。但是,奈何时间总是不够的。本来也邀请了同学来做,也没有时间。我只能断断续续的做,速度太慢了,总共都没有完成七章,打算加把劲,完成十章。 在这里,也希望招募有兴趣的同学,加入到翻译的工作中,如果有五六个人,没人只有四章,每一章都是很短的,估计长一点三四天完成,短一点的两三天。 如果有意向,请加群QQ61640...原创 2017-11-01 20:33:08 · 657 阅读 · 0 评论 -
Vulkan Programming Guide翻译计划
2017-02-18 这本书出版有一段时间了,国内还没有引进。相关也的材料比较难找,所以,我打算把这本书翻译出来。目前只有两个人参与这个翻译活动。如果有人对这个翻译活动感兴趣,请联系我,cloudqiu1110在gmail。 我将保持每天至少一节的翻译速度,把翻译文章放到我的blog和CSDN上,如果大家有什么建议或反馈,请到我的 CSDN翻译页面留言。有任何翻译错,我原创 2017-02-18 11:39:38 · 4084 阅读 · 2 评论 -
Vulkan编程指南翻译 第七章 图形管线 第3节 帧缓冲区
7.3 Framebuffer帧缓冲区是一个用来表示一些存储渲染结果的图像的对象。这影响管线最后几个阶段:深度和stencil测试,混合,logic 操作,多采样等等。一个帧缓冲区对象通过使用renderpass的引用来创建,可以和多个有类似附件排放的renderpass一同使用。调用vkCreateFramebuffer()可创建一个帧缓冲区对象,其原型如下: VkRe翻译 2017-03-16 19:56:12 · 860 阅读 · 0 评论 -
Vulkan规范:第九章
9. 管线接下来的figure 展示了Vulkan管线的一些图表。一些Vulkan命令指定了需要被绘制对象或者需要执行的计算任务, 其他的指定了控制对象如何被管线各个阶段控制,或者控制了数据如何在有组织的内存(如图像、缓冲区)之间转移。 命令通过一个处理管线(图形管线 或者 计算管线)高效的发送出去。graphics pipeline(Input Assem翻译 2017-11-14 23:46:51 · 515 阅读 · 0 评论