自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (7)
  • 收藏
  • 关注

转载 多大范围内的整数可以用浮点数精确表示

转载自https://airguanz.github.io/2019/11/20/float-to-int-exact-range.html我们知道,IEEE 754中的浮点数是对实数的近似表示,其取值密度在越远离0的地方越稀疏。那么,究竟在多远处浮点数会无法精确地cast到整数呢?本文对此进行了实验和分析。实验代码很简单:int main(){ for(int i = 0; i < std::numeric_limits<int>::max(); ++..

2022-02-27 21:23:31 1514

原创 关于C++ std::is_class 模板类是如何实现的,摘自stackoverflow上一个比较好的解释

总结下来,要理解这个问题主要是需要理解这3个概念:1. SFINAE,"Substitution failure is not an error".这个在c++模板泛型元编程偏特化中有大量用到。2. template <class T> char test(int T::*); 形如int T::*的这个表达式是什么意思. It is called a Memb...

2019-12-16 17:56:38 1815

原创 在网上找到的一个帮助我理解骨骼动画实现中的几个空间和矩阵的一个回答

One of thelinksyou posted provides a method, and two equations describing how to calculate the offset matrix. See the section titledBack into Initialization - The Offset MatrixI.e., one of the...

2019-11-14 22:52:29 368

原创 Calculating a Per-Texel Depth Bias with DDX and DDY for Large PCFs

shadow map技术中经常出现的一个问题就是,当放大阴影的边缘时会出现锯齿状的边界,如下图:出现这种现象的原因是shadow map的分辨率有限,场景中的相邻的多个fragment会sampler shadow map中的同一个texel,也就是会获取到相同的深度值,于是阴影就产生了这种参差不齐的锯齿状的边界。 你可以增加shadow map的分辨率来减轻这种状况,但会增加内存的消...

2019-09-11 23:45:34 236

原创 HLSL computer shader 相关概念资料

这段资料比较清晰的描述了computer shader中线程组线程数相关的概念。numthreadsDefines the number of threads to be executed in a single thread group when a compute shader is dispatched (seeID3D11DeviceContext::Dispatch).n...

2019-04-25 17:06:24 690

原创 关于GPU pixel shader中计算屏幕空间偏导数相关功能及其背后逻辑的思考

在阅读NVIDIA samples的shader源码时,看到了这样一段注释://Compute gradient using ddx/ddy before any branching那么上面这段注释怎么理解呢?pixel shader 好像是在SM3.0(准确的应该是sm2.x及以后的版本)后提供了ddx和ddy来计算pixel相关属性(如纹理坐标等)的导数功能的函数,这个功能是怎么实...

2019-04-24 19:55:43 507

原创 有关dx hlsl shader中矩阵存储方式的一些总结

调用XMMatrixTranslation(2.0f, 3.0f, 4.0f)生成的矩阵为:1.0, 0.0, 0.0, 0.0,0.0, 1.0, 0.0, 0.0,0.0, 0.0, 1.0, 0.0,2.0, 3.0, 4.0, 1.0,其在内存中的表示为连续的 16 个元素,记录顺序为行从上到下,行内元素从左到右( row_major 排列方式 )。 变换向量...

2019-04-23 23:20:57 711

原创 有助于理解GPU渲染管线中几个坐标系的一些资料片段

Geometrical data is passed to the graphics hardware in the context of a threedimensionalspace. One of the jobs performed by the graphics hardware is to transform this data into geometry that ca...

2019-04-23 22:57:24 258

原创 When does the transition from clip space to screen coordinates happen?

I was studying the rendering pipeline and when I got to the clipping stage it was explained thatfrom the view (eye or camera) space we have to pass to the clip space, also callednormalized device space(NDC), that is a cubic space from -1 to 1.Howe...

2021-10-25 18:34:19 165

原创 utf-8的中文汉字

从字符编码讲起。1、美国人首先对其英文字符进行了编码,也就是最早的ascii码,用一个字节的低7位来表示英文的128个字符,高1位统一为0;2、后来欧洲人发现尼玛你这128位哪够用,比如我高贵的法国人字母上面的还有注音符,这个怎么区分,得,把高1位编进来吧,这样欧洲普遍使用一个全字节进行编码,最多可表示256位。欧美人就是喜欢直来直去,字符少,编码用得位数少;3、但是即使位数少,不同国家地区用不同的字符编码,虽然0--127表示的符号是一样的,但是128--255这一段的解释完全乱套了,即使...

2020-10-28 16:57:04 2634

原创 Vector Calculus: Understanding the Cross Product

Vector Calculus: Understanding the Cross ProductTaking two vectors, we can write every combination of components in a grid:This completed grid is theouter product, which can be separated int...

2020-03-31 18:02:13 448

转载 OpenGL: 你不知道的左右手坐标系

左右手坐标系众所周知,OpenGL使用的是右手坐标系,而Direct3D使用的是左手坐标系。除了上面Z轴的方向不一样外,左右手坐标系的还有其他区别:正向旋转方向:在左手系中用Left-Hand Rule判别,正方向是顺时针方向。在右手系中,用Right-Hand Rule判别,是逆时针方向。叉积的方向:在右手坐标系中,叉积的方向通过Right-Hand Rule确定,而在...

2020-03-29 20:41:07 573

转载 Opengl的gl_NormalMatrix

原文地址:http://blog.csdn.net/ichild1964/article/details/9728357参考:http://www.gamedev.net/topic/598985-gl-normalmatrix-in-glsl-how-to-calculate/当用glsl传normal到fragment的时候总要用gl_Normal* gl_NormalMatri...

2019-11-11 20:33:00 438

原创 shadow map depth bias

研究过shadow mapping技术的人应该都知道shadow map会有一种叫self-shadowing(有的文章也叫shadow acne)的问题,如下图所示:因为shadow map的精度有限,当要渲染的fragment在light space中距Light很远的时候,就会有多个附近的fragement会samper shadow map中同一个texel,但是即使这些frag...

2019-09-11 00:19:18 645

原创 dx11中buffer的使用和更新方式

There's a good presentation about this:Don't Throw It All Away: Efficient Buffer Managementby John McDonald at NVIDIA. It covers various topics, but on the subject of your question, the general advi...

2019-07-03 20:44:03 1071

转载 DirectX11 XMVECOTR&XMMATRIX用法详解

DirectX11 XMVECOTR&XMMATRIX用法详解初探DX11的数学库:向量XMVECOTR,矩阵XMMATRIX|XMVECTOR(XNA数学库的向量)DirectX中的一个核心数据类型为XMVECTOR对它的运算可以使用SIMD指令集加速(主要处理向量的运算)。SIMD即Single Instruction Multiple Data,单指令多数据流,能够...

2019-07-02 12:37:17 774

原创 从头实现一套骨骼动画系统之md5anim文件结构解析

一直想从底层开始写一个简单的游戏引擎,至于多底层,不好界定,目前来看就是自己直接调用用dx11或opengl api那个层面吧,这种想法很久了,但是游戏引擎方面的技术问题太多了,单说一个渲染引擎来说,各种技法,对想自己写着玩的就足够折腾好几年了吧?最近这段有时间,所以静下心来一步一步来吧,打算先把骨骼动画这块整出来,目标是3dsmax模型动画导出到动画模型解析显示都来自己做,这样能比较系统详细的理...

2019-06-30 13:17:44 692

原创 Half-Pixel Offset in DirectX 11

Half-Pixel Offset in DirectX 11There is a problem graphics programmers often have to face known as half-pixel/half-texel offset. In Direct3D 9 the probably most official article about it wasDirectl...

2019-05-29 20:07:09 299

转载 C++中static_cast和dynamic_cast强制类型转换

在C++标准中,提供了关于类型层次转换中的两个关键字static_cast和dynamic_cast。一、static_cast关键字(编译时类型检查)用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性,它主要有如下几种用法:(1)用于基本数...

2019-04-18 13:25:52 204

转载 内存地址对齐的思考和总结

内存地址对齐,是一种在计算机内存中排列数据、访问数据的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐。当今的计算机在计算机内存中读写数据时都是按字(word)大小块来进行操作的(在32位系统中,数据总线宽度为32,每次能读取4字节,地址总线宽度为32,因此最大的寻址空间为2^32=4GB,但是最低2位A[0],A[1]是不用于寻址,A[2-31]才能存储器相连,因此只能...

2019-02-19 09:52:42 1219 1

转载 C实现CPU大小端判断

C实现CPU大小端判断所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。比如 0x12345678 在大端机上是 12345678,在小端机上是 78564312,而一个主机是大端还是小端要看CPU类型以及运行在上面的操作系统。同一款CPU在不同的操作系统使用的大小端情况是不同的。当然我们通常使用的 x86 + windows是小端。//测试大小端一般使用 u...

2019-02-19 09:52:19 108

转载 逗号运算符和逗号表达式

逗号运算符和逗号表达式逗号运算符逗号运算符是以逗号为分隔符的列表中最后一个表达式的值。 本质上讲,逗号的作用是导致一系列运算都被顺序执行。最右边的那个表达式的值将作为整个逗号表达式的值,其他的表达式的值将会被丢弃。逗号运算符是所有运算符中级别最低的。例如,有如下表达式:var = (count = 19, incr = 10, count + 1);1上式在计算时,首先将...

2019-01-10 13:33:02 1166

翻译 c++类型支持(基本类型、RTTI、类型特性)

  类型支持 (类型系统综述可参阅类型)基本类型语言定义的基础类型附加性基本类型及宏 定义于头文件 &lt;cstddef&gt; size_t sizeof 运算符返回的无符号整数类型  (typedef) ptrdiff_t 在两个指针相减时返回的有符号整数类型  (typedef)...

2019-01-09 14:44:08 691

翻译 virtual 函数指定符

virtual 函数指定符virtual 指定符指定非静态成员函数为虚并支持动态绑定。它只能出现在非静态成员函数首个声明(即它声明于类定义中时)的 decl-specifier-seq 中。解释虚函数是在派生类中行为可被覆写的成员函数。与非虚函数相反,覆写的行为会受到保留,即使没有关于该类实际类型的编译时信息。若使用到基类的指针或引用处理派生类,则对被覆写虚函数的调用,将会调用定义于派...

2019-01-08 14:03:49 206

转载 typeid详解

typeid详解Posted on 2010-05-14 10:58 乱78糟 阅读(57668) 评论(9)  编辑 收藏 引用 所属分类: C语言派系     在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作...

2018-12-25 14:54:50 1396

原创 CPU, cores, threads and cache

Please let me know if I'm providing the overview at the wrong level of detail :)1+2)Physical core - the actual hardware executing the codeLogical core - what OS sees as some (possibly virtualized) ...

2018-12-22 10:01:25 522

原创 How L1 and L2 CPU Caches Work, and Why They’re an Essential Part of Modern Chips

How L1 and L2 CPU Caches Work, and Why They’re an Essential Part of Modern ChipsBy Joel Hruska on August 30, 2018 at 1:30 pm CommentFacebook Twitter Google Plus Reddit Hacker News Flipboard ...

2018-12-22 10:00:03 372

翻译 C++ Explained: Object initialization and assignment, lvalues and rvalues, copy and move semantics an

C++ Explained: Object initialization and assignment, lvalues and rvalues, copy and move semantics and the copy-and-swap idiomFebruary 27, 2013Leave a commentGo to comments      3 Votes...

2018-12-22 09:59:44 350

翻译 Sutter’s Mill: To New, Perchance To Throw

 Sutter’s Mill: To New, Perchance To Throw [1] (Part 1 of 2)By Herb Sutter, March 01, 2001 If you're going to overload operator new, make sure you get the right one, and that the compiler pick...

2018-12-22 09:59:23 209

翻译 The new C++ 11 rvalue reference && and why you should start using it

The new C++ 11 rvalue reference &amp;&amp; and why you should start using itIntroduction                      This is an attempt to explain new &amp;&amp; reference present in latest versions of c...

2018-12-22 09:59:06 629

原创 Eliminate False Sharing

Eliminate False SharingBy Herb Sutter, May 14, 2009 Stop your CPU power from invisibly going down the drainIn two previous articles I pointed out the performance issue of false sharing (aka ca...

2018-12-22 09:58:48 613

原创 关于c/c++中的64位整形数的一些心得

今天把实现与fpga通信的过程中碰到的一些问题集中罗列一下,做一个总结,让自己以后再碰到这些问题不再有疑问。下面这些问题其实是理解计算机和程序最基本的问题,这些问题在《深入理解计算机系统》中有很深入的讨论,我就是在看完这本书的第三版的相关章节后才算是理解的比较清晰了。1.关于64位整形数的问题。fpga工程师给我的通信协议中有一个需要计算信号频率的公式是:下发数值=频率/1000000...

2018-12-05 11:18:55 1518

原创 求三角形和多边形的面积

AREA OF A MESH FACE IN C# IN GRASSHOPPERJames Ramsden | 26 March 2015 | Grasshopper | No CommentsAnother quick script for handing meshes – this time to find the area of a mesh face.This script...

2018-11-19 13:24:34 241

原创 3D变换中矩阵各个部分代表的意思

3D计算机图形学中,矩阵用来表示图形的转换,其中,矩阵的各个部分代表的意义:

2015-10-09 20:47:06 911

搜索电脑上的所有图像文件

搜索电脑上的所有图像文件,用到了STL,搜索完成后会将所有文件路径名称保存在C盘下的pictures.txt文本文件中

2014-08-28

java实战pdf文档

java实战,相当不错的基础java教程

2013-02-20

Java网络编程与分布式计算

Java网络编程与分布式计算,想学java网络编程的和分布式计算的必读

2013-02-19

Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理

Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理

2013-01-14

QuickTime+Streaming+Server+Modules+Programming+Guide

QuickTime+Streaming+Server+Modules+Programming+Guide.pdf

2013-01-14

FlashCS3简体中文帮助文档 - 经典产品 - 蓝色理想

FlashCS3简体中文帮助文档.蓝色经典分享,内含包和组件的详细介绍,适合各种AS开发爱好者

2012-01-14

cisco防火墙配置

这个是cisco防火墙的有关配置命令,拿到实践中试一下很管用

2010-12-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除