Real-time rendering笔记

  • 总过程The Application Stage、Geometry Stage和Raster Stage。
  • Geometry Stage包括Model/View Transform;  Vertex shading(即通常意义上的根据物体材质逐顶点渲染,实际上大都放在了pixel shader阶段);  Projection;  Clipping;  Screen mapping(产生像素坐标即gl_FragCoord)
  • 只有那些部分在视锥内的geometry进入clip阶段,在六个视平面的交点处产生新顶点,旧顶点被抛弃。这通常由硬件自动完成。
  • OpenGL和DirectX的像素中心都有小数位0.5,OpenGL像素坐标左下角为( 0, 0 );而DirectX左下角像素坐标为( 0 ,1 ),微软这么做是因为Windows系统采取这种坐标系。
  •  Raster stage即Rasterization(光栅化),其中包括四步:Triangle setup(进行顶点插值等);Triangle Traversal(遍历被三角形覆盖的fragment);Pixel shading(像素渲染即pixel shader运行的时间);Merging(与原color buffer进行混合)。
  • Merging阶段:alpha test 在 Z-test之前进行。测试顺序:1. 裁剪测试;2. alpha测试;3. 模版测试;4. 深度测试;5. 混合;6. 抖动;7. 逻辑操作。

  • Frame Buffer包括color buffer、Z-Buffer、Stencil Buffer和accumulation buffer
  • WII可能是最后一个只支持固定渲染管道的机器
  • 硬件加速早期功能主要包括三角形的栅格化等
  • Shader Model 4.0 use a common shader core。The common-shader core is the API; having unified shaders is a GPU feature. 无法直接编写汇编指令,只能作为输出显示,

  • GPU processor has  4-way SIMD (single instruction multiple data). 每个shader阶段都有两种变量:uniform和varying。unifor变量在绘制过程中不能更改,但可在Application Stage阶段修改。
  • gradient Information无法在shader的动态分支中使用,即使是离线渲染引擎也如此。
  • MRT要求所有RenderTarget是同样高宽,有些系统甚至要求同样的位宽(但格式可以不一致)。
  • DirectX10.1可以对MRT采取不同的Blend Operation。
  • TranslationMatrix的逆矩阵为T-1 (t) = T(-t), The negated vector t。绕三个轴的旋转矩阵都是正交矩阵,且其迹为tr(R) = 1 + 2cosA, 逆矩阵为Ri -1 (A) = Ri (-A). 如果ScaleMatrix里对角线上为负值,则成为mirror Matrix
  • 如果要沿任意向量scale,计算方式如下图

  • 法线不能直接乘以object的偏移矩阵,因为法线无需Scale,只需要旋转,所以其只需要Object Matrix的3*3左上角矩阵,具体计算方法看书原文。如图所示

 

  • 欧拉角的万向节锁( gimbal lock ):比如现绕y轴旋转90度,这时现在的z轴即为原来的x轴,所以绕z轴的旋转已经无效。

  • 欧拉角完整公式,可从公式中获取h,p,r角度(需注意特殊情况)

  • OpenGL的标准化设备空间(Normalized device coordinate)坐标系的取值范围为(-1,-1,-1)到(1,1,1),而DirectX为(-1,-1,0)到(1,1,1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值