madstrawberry.me
(译)3D管线之旅:GPU内存架构与命令处理器 - 疯草莓的幻想
http://madstrawberry.me/unreliable-translate/A-trip-through-the-Graphics-Pipeline-2011-translate(2).html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 原文 A trip through the Graphics Pipeline 2011 需要翻墙. 在文章的最后我提到了命令处理器 command processor ,以及为了让它最后能处理命令缓存 command buffer 而做的细致准备。 GPU在带宽 bandwidth 方面超级快,Core i7 2600k的带宽大概是19GB/s,这已经可以称得上是非常快了,真是在出生在了一个好时代。 GPU在缓存(Cache)方面超级慢,一次cache miss相对于一块Nehalem架构 第一代i系列处理器架构 的CPU来说将会消耗大概140个时钟周期左右的时间,如果你对这点存在质疑,这里有一份 技术报告. 除了这些,从主频上来说,i7的主频是2.93GHz,GTX 480的主频只有1.4GHz,这里还存在两倍左右的性能差异,惊人的差异。 目前16路PCI-E 2.0接口的最大带宽大约在8GB/s 理论上来说 ,大概是CPU的带宽的一半或者三分之一左右,这是一个可使用的比例。 但是当你同时存储两个 ...
madstrawberry.me
(译)3D管线之旅:纹理采样器 - 疯草莓的幻想
http://madstrawberry.me/unreliable-translate/A-trip-through-the-Graphics-Pipeline-2011-translate(4).html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 原文 A trip through the Graphics Pipeline 2011 需要翻墙. 但是你也可以创建了一个 每8位表示一个基本色的缺省类型 然后匹配多个不同的SRV,底层的基础数据是完全一样的,只不过在创建SRV的时候使用了不同的格式 Format。 比如可以作为UNORM8 SRGB sRGB空间的无符号8位数据映射在浮点数0 1之间 也可以作为UINT8 无符号八位整数 类型。 所以再提一次,保持状态有很多不同的方法,从 每次状态改变就刷新管线 到 采样器完全状态无关然后发送整个状态集合跟随每个纹理请求 ,当然这之间还有许多别的可选方案。 你也可以使用纹理采样指令显式指定一个mipmap层级 在HLSL中,这被称为采样等级 SampleLevel ,这样就不需要梯度值了,只需要一个值包含LOD参数,但是这并不能作用于各向异性滤波,这最多只能做到三线性滤波 无论如何,让我们就暂时同意需要6个浮点数吧。 3D 纹理坐标 u,v,w 3个浮点数。 如果是一个体积纹理 Cubemap ,我...
madstrawberry.me
基类为什么要定义虚析构函数 - 疯草莓的幻想
http://madstrawberry.me/cpp-healthy-tips/why-base-class-should-have-virtual-destructor.html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 在用C 进行面向对象编程的时候,什么时候需要为基类添加虚析构函数 虽然知乎的C 板块一直都挺水的,而且还是各个大牛吹水的地方,但是这个问题却值得好好讨论一下。 但是深究其原因,我相信很多人都只能模模糊糊的说个大概,就算照搬Scott大神的说法来说,也大概是知其然不知其所以然,所以今天我还是把这个问题拿出来好好扒一扒,当然要理解这个知识点,你需要了解一些关于C 动多态的知识,建议先去阅读一下陈皓大牛所写的 C 对象的内存布局. 其实这个问题的答案Scott大神早已在他第一本神作 Effective C 的条款7中严肃的声明了,一定要给多态继承的基类加上虚析构函数,原因是如果不这么做会造成delete其基类指针时造成诡异的对象局部销毁,而对象的销毁不完全,就是造成内存泄漏的原因,而且这样的内存泄漏一旦成型,若代码层次较深,这样的bug就像是造成了顽固脚气一般。 C 默认支持的是对象的值语义,也就是说C 原生支持的是数据抽象而不是面向对象 当然小小的做一些处理,我们可以很轻松的将C 类改造成对象语义)。
madstrawberry.me
(译)3D管线之旅:软件架构 - 疯草莓的幻想
http://madstrawberry.me/unreliable-translate/A-trip-through-the-Graphics-Pipeline-2011-translate(1).html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 原文 A trip through the Graphics Pipeline 2011 需要翻墙. 你可以用电脑找到一系列关于图形学的功能性描述,不过一般都不解释 How 或者 Why。 使用运行时API实现资源创建/渲染状态设置/绘制 Draw Call 的操作,同时API也提供保持追踪你当前APP设置的状态,验证参数有效性或者一些其他错误,一致性检查,管理用户可视资源 译者注 纹理等等 ,可能会也可能不会验证shader代码和链接 D3D是会去做检查的,但是OpenGL会将这个功能延迟到驱动层 或许还有一些批处理工作的功能,然后递交这一切到图形驱动 更准确的说,是用户态驱动。 在N卡中这个部分集成在 nvd3dum.dll 中,在A卡中则是 atiumd*.dll。 它和你的程序 包括运行时API 具有相同的上下文并且运行在同一个地址空间中 译者注 这应该和普通的桌面程序没什么两样 ,并不具有什么特殊的权限 译者注 估计指的是一些操作系统级别的权限。 KMD一次性解决所有问题,诸如调度多个程序在争...
madstrawberry.me
(译)3D管线之旅:3D管线概述,顶点处理 - 疯草莓的幻想
http://madstrawberry.me/unreliable-translate/A-trip-through-the-Graphics-Pipeline-2011-translate(3).html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 原文 A trip through the Graphics Pipeline 2011 需要翻墙. 我们已经讨论了一个DC draw call 从APP通过多个驱动层最后到达命令处理器的全部过程。 我现在准备先给出我将要讨论的所有阶段的名称 为了确保一致性,大多数名称是按照D3D10/11的官方名称 包括缩写 来描述的。 IA 输入装配 Input Assembler。 VS 顶点着色器 Vertex shader。 PA 图元装配 Primitive Assembly。 将顶点装配成为一个个图元 译者注 多为三角形 并且向下一阶段传递。 HS - 外壳着色器 Hull shader,译者注 OpenGL中称为TESS Control Shader。 接受Patch图元,写入改造后 也可能没有改造 的Patch控制点,作为域着色器 domain shader 的输入,添加一些额外的数据以驱动曲面细分 tessellation。 TS 曲面细分 Tessellator stage。 如果我们用FIFO的...
madstrawberry.me
使用Win32 API查找系统路径 - 疯草莓的幻想
http://madstrawberry.me/something-about-os/find-system-path-use-win32-API.html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 这篇文章算是失踪人口回归,其实我只是太忙了 忙着摸鱼,顺便处理下失恋的伤痛 没时间更新blog罢了,之前的文章翻译也暂时跳票了,因为好像腾讯的某个工作室也在进行翻译,不过等我心血来潮会继续翻译的 这话我自己都不信。 创作,采用 CC BY-NC-SA 3.0 许可协议. 2017 MadStrawberry with help from Jekyll Bootstrap.
madstrawberry.me
存档 - 疯草莓的幻想
http://madstrawberry.me/archive.html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). November 26, 2016. November 20, 2016. Raquo; (译)3D管线之旅 纹理采样器. November 16, 2016. Raquo; 使用Win32 API查找系统路径. April 30, 2016. Raquo; (译)3D管线之旅 3D管线概述,顶点处理. April 15, 2016. Raquo; 为什么更倾向使用前置 /-. April 9, 2016. Raquo; (译)3D管线之旅 GPU内存架构与命令处理器. April 2, 2016. Raquo; (译)3D管线之旅 软件架构. April 2, 2016. Raquo; (译)3D管线之旅 索引. March 26, 2016. 2017 MadStrawberry with help from Jekyll Bootstrap.
madstrawberry.me
留言板 - 疯草莓的幻想
http://madstrawberry.me/messages.html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 2017 MadStrawberry with help from Jekyll Bootstrap.
madstrawberry.me
分类 - 疯草莓的幻想
http://madstrawberry.me/categories.html
2016 年 11 月 (3). 2016 年 04 月 (5). 2016 年 03 月 (1). 2017 MadStrawberry with help from Jekyll Bootstrap.