• 斯图加特大学GPU光线投射体渲染技术提携


    斯图加特大学GPU光线投射体渲染技术介绍

    前言:在以往人们的印象中,美国的CG技术是一世界第一流的,而没有注意德国CG技术的发展。事实上,德国大学的CG是相当高的,与美国第一流的大学学术交往非常频繁。与美国人不同的是,德国以往将CG技术主要用于医学诊断设备与机械设备,现在也逐渐涉足于游戏领域,比如赫赫有名的Crytek公司,还有主要在光线跟踪硬件领域实践的Saarland大学计算机图形学系,取得的成果也是相当瞩目的。斯图加特是德国的科研大省,许多跨国公司都在这里设有研究机构。至于斯图加特大学也是实力雄厚的世界级名校,他们在CG的研究上也是建树颇丰,很多技术已经应用到了第一流的医学设备上,这里给大家介绍的就是他们的光线投射体渲染技术,以后还有我自己实现全动态场景的光线投射技术。

           体渲染技术的历史已经相当悠久,可是由于硬件性能,迟迟没有在普通PC上得到广泛应用,大部分使用的还是使用古老的扫描线光栅化操作。体渲染技术的普通应用主要有,3D纹理中的几何形体重建(断层扫描数据的几何体重建),自然特效的实现(云雾、火)。普遍的体渲染方法是,在场景中计算从摄像机到Voxel之间的几何切片,显卡可以根据计算出来的纹理坐标自动进行插值。而后随着GPU硬件技术的发展,可编程管线的强大功能大大的激发了人们的创造力。此外还诞生了一些在GPU上进行加速的算法,如[1]所实现的GPU KD树加速。

           斯图加特大学的这个实现的特点有:

           Single Pass 单通道
           Shader Independent Shader独立
       
    High Performance 高性能
           Platform Cross 跨平台

           他们仅仅使用单通道渲染,对比同时期的一些基于深度的技术来说,单通道在现有硬件平台的效率更高,因为没有数据回读。只要以后需要,可以在不更改大部分代码的情况下加入阴影、微平面遮挡等效果,也可以加入全局光照等。目前可以下载的代码是完全基于标准Cglut的,所以说可以自由的在WindowsUnix-like系统上运行。至于性能,虽然说渲染时依旧是在一个Uniform Grid中,但是性能依旧是相当高的,并没有明显的下降,而且实现上简单了许多许多。


    在我的P4 1.8G、6200A上运行的结果,光线投射渲染IBL贴图的头盖骨。

    方法概述:

    Compute volume entry position
    Compute ray of sight direction
    While in volume
        Lookup data value at ray position
        Accumulate color and opacity
        Advance along ray

       首先摄制MVMV = ModelViewMVP = ModelViewProjectionMVIT = MVInverseTransposeetc.)矩阵,渲染Proxy Geometry,把需要渲染的3D纹理对齐上去。然后把屏幕坐标系(Eye\Camere\Screen Coordinates,以下简称SCSC中,屏幕的四角用gluUnporject函数转换会到对象坐标系统中,获得了一个平板似的矩形,也就是屏幕上每个像素的空间位置。把这4个顶点与MVI矩阵中的摄像机位置相减,得到光线矢量,用GPU插值。由此得到了一个Volumn,事实上就是几何变换后的Normalized Device Coordinate。从每个屏幕像素的位置(纹理)开始,沿着计算好的方向开始跟踪(光线投射)。如果碰到了那个Proxy Geometry,那么就可以开始读取颜色和计算光学特性,如果最后光线碰到了Far Plane,那么就判定为这个像素显示背景。

    数据:

           事实上目前还没有多少实用的3D纹理,这些纹理大多数来自于医学研究领域,通过断层扫描(CT)取得人体骨骼的切片数据。大家在Volvis[3]这个网站可以得到一些相当精确的人体骨骼、神经系统的3D数据。NVIDIA OpenGL SDK 10中已经包含了一个渲染场景到3D纹理的DEMO,使得3D纹理的快速实时生成成为可能。由于3D纹理非常巨大,对GPU-CPU的传输压力明显,所以在一段时间内在桌面游戏淋浴还不太可能得到应用。但是体渲染已经在DirectX10游戏中得到使用,实现了最为逼真的光学特性和立体的自然特效,如云朵,火焰等等。







    相关下载:
      全套源代码和技术文章可以在这里下载 http://www.vis.uni-stuttgart.de/eng/research/fields/current/spvolren/
     [1]Tim Foley and Jeremy Sugerman : KD-Tree Acceleration Structures for a GPU Raytracer
    [2]Simon Stegmaier etc. A Simple and Flexible Volume Rendering Framework for Graphics-Hardware based Raycasting
    [3] Volvis.org http://www.volvis.org/

  • 相关阅读:
    利用本地浏览器远程服务器上的jupyter notebook
    解决IIS服务器Web访问提示输入密码
    IIS 配置
    override new 关键字的区别
    ASP.NET的网站的设计与优化
    山东人!
    远程连接SQL Server 2000服务器的解决方案
    对软件的新认识
    一个程序员成长的六个阶段
    优秀程序员应当具备的品质
  • 原文地址:https://www.cnblogs.com/Jedimaster/p/688618.html
Copyright © 2020-2023  润新知