摘要: BIT祝威博客汇总(Blog Index) 目测我已经写了好几十篇博文,再这样下去就不好找了。因此将此汇总帖置顶,并即时更新,以方便查找(Ctrl+F即可)。 带有“推荐”是我觉得可以见人的,推荐大家(也包括我)没事看看,温故知新。 阅读全文
posted @ 2014-07-13 08:40 BIT祝威 阅读(8982) 评论(7) 推荐(7) 编辑
摘要: 究竟是如何设计的电路,具有计算和控制的智力? 这一点也不高深。本文从下面这个初中学的电路图说起,看看能不能从最初的有一个继电器的电路,画到一个简单的CPU。电路图用multisim12.0绘制,这样就可以看到效果了。 阅读全文
posted @ 2014-03-24 16:29 BIT祝威 阅读(35087) 评论(169) 推荐(225) 编辑
摘要: 公司战略与风险管理-笔记 战略与战略管理 公司战略的基本概念 公司的使命与目标★★ 使命=? 1 目的(营利or非营利) 2 3 宗旨(经营业务范围) 4 5 经营哲学(企业文化) View Code 目标=? 1 使命的具体化 View Code 战略管理过程★ 评估备选方案的3个标准=? 1 适 阅读全文
posted @ 2021-08-19 10:57 BIT祝威 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 用一种语言写的诗歌,被翻译成另一种语言,往往很难表达出原意。其他文字材料也有这样的问题。通过读《资本论》英文版,可以减少翻译带来的突兀生硬感,看似比读中文版慢,实则能更快地理解它。《资本论》原版是德语写的,可是我只学过英语,所幸德语英语都属于西日耳曼语支,问题应该不大。 我将边读边总结,分章节段放到博客里,并在这一篇里添加链接。等全部读完,我再写个总的总结。 阅读全文
posted @ 2021-07-18 21:06 BIT祝威 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 《45个十分钟读懂资本论》原文、适合朗读版和个人见解 这里有《45个十分钟读懂资本论》原文。原文电子版中的标点符号缺失、文字误传等现象我已解决了一遍。就算还有也不多了。 《45个十分钟读懂资本论》原文经常有一些长难句子,不便于理解,更不利于朗读。所以我根据自己的理解,将原文的句子拆解润色,改写为简单好理解的句子,分45小节保存。这也利于朗读和听书。 阅读全文
posted @ 2020-07-22 00:21 BIT祝威 阅读(1425) 评论(0) 推荐(0) 编辑
摘要: 在Vulkan SDK的安装文件夹里,有一个Documentation\apispec.html文件。这是一个由代码生成的对Vulkan API的说明。它包含了Vulkan API的枚举类型、结构体、函数声明以及这一切的详细注释。如果我能将它转换为C#代码,那会是多么美妙的一个Vulkan库啊! 阅读全文
posted @ 2019-09-13 19:07 BIT祝威 阅读(1142) 评论(0) 推荐(0) 编辑
摘要: Vulkan是新一代3D图形API,它继承了OpenGL的优点,弥补了OpenGL的缺憾。有点像科创板之于主板,歼20之于歼10,微信之于QQ,网店之于实体店,今日之于昨日。 阅读全文
posted @ 2019-08-30 16:12 BIT祝威 阅读(1936) 评论(1) 推荐(2) 编辑
摘要: 本文翻译一下《Mathematics for ..》中的门系统(Portal Systems)的一部分。 在清华大学出版社出版的詹海生译的中文版中,缺少了对此章节关键一段的翻译。可能是作者疏忽,可能是别的什么,不过下面这个中文版的图我就不能忍了。 阅读全文
posted @ 2019-08-05 20:02 BIT祝威 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 《资本论》核心思想 试读《资本论》,总结感悟如下。如有谬误,感谢指正。 价值(value)理论 使用价值和价值 鸡蛋可以用来吃或砸人,这是它的用处。商品的用处,被称为它的使用价值(worth)。 某个鸡蛋的质量(mass)是55克。鸡蛋有“质量”这一自然界的属性。商品,则有价值(value)这一人类 阅读全文
posted @ 2019-07-30 18:57 BIT祝威 阅读(2030) 评论(0) 推荐(0) 编辑
摘要: 现代凹凸映射(也被称为法线映射)要求为网格中的每个顶点计算出其tangent平面基向量。本文描述了对任意三角形网格计算逐顶点tangent空间的数学理论,还提供了实现数学计算的源代码。 阅读全文
posted @ 2019-07-25 14:04 BIT祝威 阅读(1194) 评论(0) 推荐(0) 编辑
摘要: 我们的程序现在加载了多层LOD的纹理,它修复了对象远离观察者时的锯齿问题。现在的图像平滑得多了,但是对于靠近观察者的物体,你仍旧会观察到锯齿形的边缘-在几何体上。这在我们早起的一个程序上十分显眼when我们渲染一个四边形: 阅读全文
posted @ 2019-07-17 14:24 BIT祝威 阅读(1591) 评论(2) 推荐(1) 编辑
摘要: 现在我们的程序可以加载和渲染3D模型了。本章,我们将添加一个特性,mipmap生成。Mipmap广泛应用于游戏和渲染软件,Vulkan给了我们完全的控制权-关于如何创建它们。 阅读全文
posted @ 2019-07-16 18:31 BIT祝威 阅读(1273) 评论(0) 推荐(1) 编辑
摘要: 你的程序现在可以渲染有纹理的3D网格了,但是现在的几何体-在vertices 和indices数组中-不怎么有趣。本章里我们要扩展这个程序to加载顶点和索引-从一个实际的模型文件to让图形卡实际地做点工作。 阅读全文
posted @ 2019-07-16 13:20 BIT祝威 阅读(940) 评论(0) 推荐(0) 编辑
摘要: 我们使用的几何体是投影为三维图像的,但是它还是彻底平的。本章里我们要添加Z坐标到位置里,好使用3D网格。我们要用这第3个坐标来放置一个四边形到另一个四边形之上to看看当几何体不是按深度排序时出现的问题。 阅读全文
posted @ 2019-07-15 23:57 BIT祝威 阅读(956) 评论(0) 推荐(0) 编辑
摘要: 在本教程的uniform buffer部分,我们首次认识了描述符。本章,我们将认识一个新类型的描述符:组合的image采样器(译者注:后文简称CIS)。这个描述符让shader通过采样器对象(例如我们在上一章创建的那个)存取image资源成为可能。 阅读全文
posted @ 2019-07-15 14:21 BIT祝威 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 本章我们要创建2个资源that为采样image而被图形管道需要。第一个资源是我们之前用交换链image时见过的,但是第二个是新的——它与shader如何从image中读取纹素有关。 阅读全文
posted @ 2019-07-15 11:58 BIT祝威 阅读(661) 评论(0) 推荐(0) 编辑
摘要: 现在几何体已经用逐顶点的颜色上色了,但是很初级。从本章开始我们要实现纹理映射to让几何体看起来更有趣。这也会让我们能够加载和绘制基本的3D模型-在后续章节。 阅读全文
posted @ 2019-07-13 20:03 BIT祝威 阅读(1345) 评论(0) 推荐(0) 编辑
摘要: 从之前的章节可知,描述符布局描述了描述符可被绑定的类型。本章我们要为每个VkBuffer 资源创建描述符set,以绑定它到uniform buffer描述符 阅读全文
posted @ 2019-07-12 19:32 BIT祝威 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: 我们现在可以传递任意属性到顶点shaderfor每个订单,但是全局变量呢?从本章开始我们要折腾3D图形了,这需要用到模型-视图-投影矩阵。我们可以把它放到顶点数据里,但是那就浪费内存了,它还会要求我们随着变换的改变而更新顶点buffer。而变换是很可能每一帧都在改变的。 阅读全文
posted @ 2019-07-12 01:15 BIT祝威 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 你在真实世界应用程序中要渲染的3D网格,常常会在多个三角形之间共享顶点。这在绘制简单的矩形的时候就出现了: 阅读全文
posted @ 2019-07-11 16:12 BIT祝威 阅读(565) 评论(0) 推荐(0) 编辑
摘要: 我们现在的顶点buffer可以正确地工作,但是允许我们从CPU读写的内存类型,对图形卡可能不是最优的。最优的内存有VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT 标志,它通常在专用图形卡上是不能被CPU读写的。本章我们将创建2个顶点buffer。在CPU可读写的内存里的一个暂存buffer,用于保存顶点数组的数据,和最终的设备局部内存的顶点buffer。我们然后用一个buffer复制命令来将数据从暂存buffer移动到实际的顶点buffer。 阅读全文
posted @ 2019-07-11 10:17 BIT祝威 阅读(546) 评论(0) 推荐(0) 编辑
摘要: ulkan中的buffer是一块内存-用于保存任何数据that可以被图形卡读取。它可用于保存顶点数据,which我们将在本章这样做,但是它也可以用于许多其他用途that我们将在后续章节探索。不像我们处理过的其他Vulkan对象,buffer不会自动给自己分配内存。前几章的工作已经表明,Vulkan API让程序员控制几乎所有事,内存管理就是其中之一。 阅读全文
posted @ 2019-07-11 08:05 BIT祝威 阅读(794) 评论(0) 推荐(0) 编辑
摘要: 接下来的几章,我们将替换顶点shader里硬编码的顶点数据with一个内存中的顶点buffer。我们从最简单的方式开始,创建一个CPU可见的buffer,用memcpy 直接复制顶点数据进顶点buffer,之后,我们将看一下如何用一个阶段buffer to复制顶点数据to高性能内存。 阅读全文
posted @ 2019-07-10 17:36 BIT祝威 阅读(742) 评论(0) 推荐(0) 编辑
摘要: 我们现在的程序成功地绘制了一个三角形,但是有的情况它处理的不合适。窗口surface可能改变,使得交换链不再与之兼容。可能的原因之一是,窗口的大小改变了。我们必须捕捉这些事件,并重建交换链。 阅读全文
posted @ 2019-07-09 23:54 BIT祝威 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 这是整合一切的章节。我们要写drawFrame 函数that从主循环调用to将三角形放到屏幕上。创建此函数,从mainLoop调用它。 阅读全文
posted @ 2019-07-09 20:00 BIT祝威 阅读(1489) 评论(0) 推荐(0) 编辑
摘要: Vulkan中的命令,例如绘制操作和内存转移,不是直接通过函数调用来执行的。你必须几所有你想要的操作到命令buffer对象里。这样做的优势是,所有的设置绘制命令的艰苦努力都可以提前完成,还能多线程完成。之后,你只需告诉Vulkan去执行主循环中的命令即可。 阅读全文
posted @ 2019-07-09 15:35 BIT祝威 阅读(1043) 评论(0) 推荐(0) 编辑
摘要: 我们在过去的章节谈论过很多次帧缓存了,我们已经设置了render pass,希望有一个帧缓存with与交换链image相同的格式,但是我们还没有创建帧缓存。 阅读全文
posted @ 2019-07-09 13:01 BIT祝威 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 我们现在可以将之前章节的所有结构体和对象组合起来to创建图形管道了!下面是我们有的对象的类型,快速回顾一下:• Shader阶段:shader模块that定义可编程阶段的功能of图形管道。 • 固定功能状态:所有的结构体that定义固定功能阶段of管道,例如输入组装、光栅化、视口和颜色混合。 • 管道布局:uniform和push值that被shader引用that可以在绘制时更新。 • Render pass:附件that被管道阶段引用和附件的用法。 阅读全文
posted @ 2019-07-09 11:44 BIT祝威 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 在创建管道收工前,我们需要告诉Vulkan,渲染时要使用哪些帧缓存附件。我们需要指定,有多少颜色和深度buffer,多少采样,它们的内容应当如何处理throughout渲染操作。所有这些信息被封装到一个render pass对象,for which我们创建一个新的createRenderPass 函数。在initVulkan 中调用这个函数before createGraphicsPipeline。 阅读全文
posted @ 2019-07-08 23:01 BIT祝威 阅读(1709) 评论(0) 推荐(1) 编辑
摘要: 旧有的图形API提供默认状态for大多数图形管道的阶段。Vulkan中你必须显式地声明所有东西,从视口大小到颜色混合函数。本章我们将填入所有这些结构体to配置这些固定功能的操作。 阅读全文
posted @ 2019-07-08 20:10 BIT祝威 阅读(749) 评论(0) 推荐(0) 编辑
摘要: 与从前的API不同,Vulkan的shader代码必须用字节码格式来指定-不同于人类可读的语法-例如GLSL和HLSL。这个字节码格式被称为SPIR-V,设计为用于Vulkan和OpenCL(都是Khronos的API)。这个格式可用于写图形和计算shader,但是本教程中我们只关注Vulkan图形管道的shader。 阅读全文
posted @ 2019-07-08 06:35 BIT祝威 阅读(1938) 评论(0) 推荐(0) 编辑
摘要: 接下来的几个章节里,我们将设置图形管道,以绘制第一个三角形。图形管道是一系列的操作,它接收网格的顶点和纹理,(处理之)一直到渲染目标的像素上。 阅读全文
posted @ 2019-07-07 20:54 BIT祝威 阅读(867) 评论(0) 推荐(0) 编辑
摘要: To use any VkImage, including those in the swap chain, in the render pipeline we have to create a VkImageViewobject. An image view is quite literally a view into an image. It describes how to access the image and which part of the image to access, for example if it should be treated as a 2D texture depth texture without any mipmapping levels. 阅读全文
posted @ 2019-06-29 22:25 BIT祝威 阅读(657) 评论(0) 推荐(0) 编辑
摘要: Vulkan没有“默认帧缓存”的概念,因此它需要一个基础设施,其拥有buffer,在我们将其内存显示带屏幕上之前,渲染之。这个基础设施被称为交换链,它必须在Vulkan中被显式地创建。交换链本质上是一系列image,其等待被呈现到屏幕上。我们的app将请求这样的一个image,在其上绘画,然后将其返回队列。队列如何工作,呈现image的条件,依赖于交换链的配置,但是交换链的一般目的是同步image的呈现与屏幕的刷新。 阅读全文
posted @ 2019-06-27 22:23 BIT祝威 阅读(1253) 评论(0) 推荐(0) 编辑
摘要: 由于Vulkan是平台无关论的API,它不能直接与窗口系统交互。为建立Vulkan与窗口的关联,以在屏幕上呈现渲染结果,我们需要用WSI(窗口系统集成)扩展。本章我们将讨论第一个,即VK_KHR_surface。它暴露一个对象,其代表抽象的surface(表面)类型,surface可以将image呈现其上。我们程序中的surface将由GLFW打开的窗口制作。 阅读全文
posted @ 2019-06-27 15:48 BIT祝威 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 在选择了要用的物理设备后,我们需要设置一个逻辑设备,用以与其交互。逻辑设备的创建过程与instance的创建过程相似,它描述了我们想使用的特性。既然我们已经查询了有哪些队列家族可用,我们也需要标明想创建哪些队列。如果你又多种需求,你还可以从同一物理设备创建多个逻辑设备。 阅读全文
posted @ 2019-06-27 00:04 BIT祝威 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 通过VkInstance 初始化了Vulkan库之后,我们需要在系统中查找和选择一个支持我们需要的特性的图形卡。实际上我们可以选择任意多个图形卡,同步地使用它们,但是本教程中我们只使用第一个满足我们需要的图形卡。 阅读全文
posted @ 2019-06-24 12:09 BIT祝威 阅读(1150) 评论(0) 推荐(0) 编辑
摘要: Vulkan API的核心设计思想是最小化driver开销,其表现之一就是,API本身的错误检查很少。设置错误的枚举值,向必选参数传入空指针,即使是这样简单的错误,也不会被显式地处理,而只是简单地崩溃,或做出未定义的行为。因为Vulkan要求你对你做的所有事都清楚明白,很容易犯各种小错误,例如,想使用新GPU特性,却忘记在逻辑设备创建时请求它。 阅读全文
posted @ 2019-06-23 19:54 BIT祝威 阅读(1538) 评论(0) 推荐(1) 编辑
摘要: 第一件要做的事,是初始化Vulkan库,这需要通过创建一个instance来实现。Instance是你的app和Vulkan库联系的桥梁,创建它时需要向driver提供你的app的一些信息。 阅读全文
posted @ 2019-06-22 15:22 BIT祝威 阅读(1115) 评论(0) 推荐(1) 编辑
摘要: 在之前的章节你已经创建了一个Vulkan项目,配置好了项目属性,用示例代码进行了测试。本章我们将从零开始写代码 阅读全文
posted @ 2019-06-22 12:52 BIT祝威 阅读(1481) 评论(0) 推荐(0) 编辑
摘要: 本章我们将配置Vulkan开发环境,安装一些有用的库。我们使用的所有工具(编译器除外)都是在Windows、Linux和MacOS上兼容的,但是安装它们的步骤有点不同,所以我们分别描述之。 阅读全文
posted @ 2019-06-22 00:21 BIT祝威 阅读(4989) 评论(0) 推荐(0) 编辑
摘要: 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第2篇。 阅读全文
posted @ 2019-06-21 14:17 BIT祝威 阅读(1709) 评论(0) 推荐(0) 编辑

Large Visitor Globe