SALVIA

光栅化软件渲染器
授权协议 GPLv2
开发语言 C/C++ Python
所属分类 程序开发、 图形/图像处理
软件类型 开源软件
地区 不详
投 递 者 祁嘉言
操作系统 Windows
开源组织
适用人群 未知
 软件概览

SALVIA是一款光栅化的软件渲染器,设计目标是达到Direct3D 10/11的核心功能的实现。我们的设计目的主要包括以下几点

  • 一个高度可移植的光栅化图形管线的软件实现
  • 图形硬件工作原理的展现和教学
  • 为下一代Many Core或Larrabee类的多x86处理器架构的计算设备提供高性能的图形绘制能力
  • 提供在GPU一类的流处理器上难以实现,但在Many Core架构的设备上有着显著优势的Features
  • 比图形API更加易于使用的接口
  • 与复杂的渲染技术(如辐射度和光线追踪等)相结合的可伸缩的渲染体系,研究可以提供速度-质量相均衡的渲染架构


SALVIA的接口参照了DX10的设计,以流水线划分Stage;每个Stage及其相关设施的接口,均采用了Object-Oriented的设计风格。
这种设计与D3D9和OGL的状态机风格的设计相比更易于使用,同时也降低了流水线前后级的耦合,对于优化或扩展都是有利的。

目前,SALVIA已经具有了完整的D3D9的流水线级,通过SALVIA Shading Language编译器及运行时环境支持Vertex Shader与Pixel Shader,并有了基本的Demo。
在未来,SALVIA将在维持内核稳定的情况下,使用新的扩展,提供先进的图形技术支撑。
同时,我们还将尝试着将一些不易在GPU上实现的算法,以扩展的形式在SALVIA中实现出来,以期提供高于图形API的表现和特性。

SALVIA在近阶段的主要工作包括:

  • MSAA,并提供可定制的Sampling Pattern
  • EWA-based Anistropic Filtering
  • 以扩展形式提供的Geometry Shader,Hull Shader和Tesselassion Shader
  • 持续的并行优化
  • 特性及性能的演示用例
  • 文档撰写


目前,SALVIA已经作为一个开源项目发布在http://code.google.com/p/softart上, 最新的代码在svn中。
所有代码除特殊声明外,均为GPL 2协议,您可以在协议许可的范围内自由下载或使用。

  • SALVIA是从07年底开始开发的。历经五年,无论是设计目标,还是使用到的一些方法,都和最初差别很大。 谨以此文,纪念我在五年中作出来的各种傻逼决定。 1. 2007年9月 - 2007年12月:可笑的动机,可笑的雏形 动机与原型 SALVIA出现的原因其实很可笑。07年底的时候我正在写一篇paper,将GP-GPU的。那个时候还没有CUDA一类的东西,一切都要靠Shader来。本来我手上的显卡是

  • 表达式值的存储 LLVM中基本数据类型及存储类型 值是编译器所需要处理的基本数据。它出现在各个角落,条件分支、表达式、返回语句。甚至是函数地址也可以被视作是值类型。 对 于编译器而言,最基本的值是整数和浮点。其他的值都可以用这两者来表达,例如布尔和指针。如果你是从一个最基本的指令集开始写起,那么整数和浮点的数值运 算、转换、基于整数寄存器的跳转和地址取值是一个寄存器机的最基本操作。所有更加高级的操

  • 2 0 0 CJ IM 1 99 8 : 4 (3 ) : 1 9 7 一 2 0 0 m a r k e r of e e llu la r P ro e e s le a d in g t o r es t e nos i s a f t e r a n g io - P la s t y ? E u r H e a r t J 1 9 92 : 1 3 : 5 56 一 5 59 . 3 赵

  • SALVIA是从07年底开始开发的。历经五年,无论是设计目标,还是使用到的一些方法,都和最初差别很大。 谨以此文,纪念我在五年中作出来的各种傻逼决定。 1. 2007年9月 - 2007年12月:可笑的动机,可笑的雏形 动机与原型 SALVIA出现的原因其实很可笑。07年底的时候我正在写一篇paper,将GP-GPU的。那个时候还没有CUDA一类的东西,一切都要靠Shader来。本来我手上的显卡是

  • 梗概 SALVIA 0.5.2 的优化经历是一个“跌宕起伏”的过程。这个过程的结果很简单: 在Core 2 Duo T5800(2.0GHz x 2)上,Sponza的性能提升了60%,ComplexMesh性能提升了26%。 背景 SALVIA的整个渲染流程主要是以下几部分: 根据Index Buffer获得需要进行变换的顶点; 将顶点利用Vertex Shader进行变换; 将变换后的顶点,输

 相关资料
  • 本章将介绍chromium渲染的最基础部分,同时也是最常见的部分-软件渲染。故名思路,软件渲染就是利用CPU,根据一定的算法来计算生成网页的内容,其没有那么多复杂难懂的概念和架构。如果了解了那么多地关于硬件加速的知识后,你可能会觉得本章的内容非常的简单明了,是的,你没猜错。 在绝大多数的情况下,也就是没有所谓地那些需要硬件加速内容的时候(包括但不限于CSS3 3D transformation,

  • 当我在Android Studio中使用模拟器运行一个项目时,我在调试窗口中得到以下错误: /home/me/android/sdk/tools/emulator-netdelay none-netspeed full-AVD Nexus_6P_API_24 警告:不推荐使用Mesa软件渲染器。使用Swiftshader(-GPU Swiftshader)进行软件渲染。 据我所知,这个模拟器工作得

  • 下面的代码在我的图像上生成两个框。我正计划进一步分析这些框内的像素。 在下面的例子中,在红色方块的情况下,我不想继续下去,因为它的右上角有黑色像素。而我想继续在绿色方块的情况下,因为它没有一个黑色像素沿着它的边缘。

  • 本节课对WebGL光照的介绍主要目的是让你对WebGL光照,以及如何在代码层面实现WebGL光照算法有个大致的轮廓认知,计算机图形学中关于光照相关算法的介绍更为详细和系统,如果有兴趣可以阅读计算机图形学的书籍。 光线照在物体上,物体反射光线就会构成一个光场,眼睛看到生活中的物体有立体感就是因为有光的存在。因此在学习物理光学在WebGL编程中如何应用, 你就要先了解基本的光学知识。 生活中你看到一个

  • Mpx中的条件渲染与原生小程序中完全一致,详情可以查看这里 简单示例如下: <template> <view class="container"> <!-- 通过 wx:if 的语法来控制需要渲染的元素 --> <view wx:if="{{ score > 90 }}"> A </view> <view wx:elif="{{ score > 60 }}"> B </

  • 优化提升渲染性能,不仅能让页面更快的展现、可交互,同时能提升用户操作滚动的流畅度,对提升用户体验至关重要。 避免不必要的更新对比 Rax 同 React 一样,render 时会有 vdom 对比,如果对比发现 DOM 没有变化时,不会去真正更新页面。而本身 vdom 对比也是不小的消耗,你应该避免这种不必要的更新对比,使用 shouldComponentUpdate 方法明确标识你的组件什么时候