中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 4074|回复: 0

SALVIA 0.5.3 发布

[复制链接]
发表于 2013-9-13 21:56:26 | 显示全部楼层 |阅读模式
本帖最后由 空明流转 于 2013-9-13 23:19 编辑

SALVIA 0.5.3 发布。由于近来工作较忙,因此和上一个版本相距7个月。

此版本更新包括:

1. 渲染管线重构

0.5.3最主要的更新均在渲染管线上。参考D3D10,可以把Graphics API分为状态设置和渲染提交。后者主要包括Draw,Clear,Begin、End(Asynchronous),以及Map/Unmap。新架构把所有的状态都放在Render State Object中,并把渲染提交的API与State Object放在一起构成一个Command。

据此我们参照D3D10为渲染管线设计了新结构:

  • 新加了类render_core,使用State Object执行渲染,并负责渲染资源(如Buffer、Texture)的管理。它的功能与 ID3D10Deivce 相似。
  • 提供了Async/Sync Renderer,提供了存取State及渲染的API,类似于ID3D10DeviceContext。同时在Async Renderer中还有Command队列以及独立的渲染线程以支持异步执行。在未来我们会将渲染队列和执行线程移动到Render Core中,这样可以让Render Core同时支持多个Async/Sync Renderer。
  • 因为Async/Sync Renderer都在用户线程保存了Render State Object,他们的存取以及状态设置时所要做的检查均可复用,我们提供了一个共同的基类Renderer Implementation以实现这些共同的功能。
  • 增加了新的Geom Setup Engine,它的职责包括从IA中获取Primitive、将变换顶点Primitive进行裁剪并重新组合成新的Primitives。
  • Clipper被重构成可重入的。

Pipeline部分的其他变化:
  • 修改了插值部分的算法,由原先的累加改为直接插值。
  • 重构了并发执行部分,以提高代码可读性。
  • 去掉了Presenter,增加了耦合程度更低的Swap Chain。

2. 第三方库及工具链的更新


  • 更新LLVM到3.3;
  • SALVIA中开始使用C++11的特性,因此最低需要VS2010 SP1的支持;
  • 去掉了GDI+和D3DX的依赖。

3. 新特性

  • 新增加了性能计数器和Early Z的支持。

4. 错误修正和其他

  • 合并了重复的Sponza顶点,Sponza场景因此获得了30%的性能提升。
  • 修正了default_vso2reg中一个可能导致Crash的bug。
  • 去掉了Macro Guard,代之以标准的pragma once。
  • Cpp Shader 中的 set_variable 更新为异步安全的。

从0.5.3开始,SALVIA会为每一个发布版本提供源代码和二进制在 Baidu 网盘的下载: http://t.cn/z80t7CH
最新的源码仍然在Google code和Bitbucket上。代码库的同步地址可以参见: http://t.cn/zOJylR6

0.5.4开发计划

0.5.4是一个短期计划
  • 将 Map/Unmap 移至Renderer中;
  • 增加Demo:Stencil-based镜面;Standard Shadow Map;
  • 减少编译器警告;
  • 修改Compiler的Code Gen中Emit Swizzle/Write Mask可能导致歧义的部分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2019-1-18 08:24 , Processed in 0.037729 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表