付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于硬件加速的三维纹理、多纹理和片元浇染器
1程序的两种支持下一代图形数据处理的标志是一种集成了图形硬件的编程能力,它集成了点源处理器(vertexshoat)和用于绘制图表的片源渲染器(framtsea或薄膜映射)。可编程渲染器并没有完全替代传统处理器中的顶点管道和像素管道的固定处理单元,它们构成了图形处理器中不同的顶点和像素管道(如图1)。可编程渲染器由有限的寄存器和运算器组成,能够对数据流中的数据元素重复执行有限量的一段指令程序,意即一段指令多次数据(SingleInstructionMultiData,SIMD)。这一小段程序释放了固定渲染管道的约束,使得用户能够根据自己的要求为硬件制定较为复杂的渲染程序,产生各种特殊的图像效果。PC上两种主要编程接口Direct3D和OpenGL均支持可编程渲染器。Direct3D对VertexShader和PixelShader有统一的编程接口和渲染器语言(汇编或者高级代码)。而OpenGL现在要通过OpenGL的寄存器的Combiner扩展函数实现渲染器的编程,但图形硬件厂商ATI和NVIDIA各有自己的一套Shader扩展函数。NVIDIA已经发布了CG(CGraphics)工具,渲染器程序可以用与C十分相似的高级语言编写,而且能够针对不同的显示芯片核心和DirectX或者OpenGL接口产生相应的代码。我们在数字人脑图谱系统上采了用Direct3D编程接口,Shader采用Direct3D的汇编语言。但我们不久将加入对OpenGL的支持使得能够运行在Linux平台上。测试用的显卡是Geforce4Ti4200-8X-128MB1(见图1)。1.1维体数据的特征直接体绘制是体数据显示中的重要方法,与基于面绘制方法的根本区别是:直接体绘制最终合成的图像是所有体元经过转换函数混合合成,而面绘制是选择一部分体元重建成几何面后的绘制。因此,直接体绘制可以更加灵活的利用转换函数来选择体元,显示复杂的物体结构并暴露其内部信息。大部分体数据如CT,MRI和三维超声数据都是对物体在三维空间离散规则点上进行的测量或者采样的标量值,但在各个方向上的采样频率并不一致,即所谓各向异分辨率。物体在连续空间中场的定义可以通过体数据重建得到,根据Nyquist定理,重建后的连续空间场其最大频率不高于空间采样频率的二分之一。原始的体数据往往反映的是物体的某些属性而不是真实的发光颜色和阻光度等光学特性。将体数据进行分类和映射到颜色与阻光度的转换函数对直接体绘制来说非常重要,它直接影响最后图像显示的结构和层次。设一维转换函数在物体连续空间中的定义为发光颜色˜cc˜(s)和光吸收率˜ττ˜,s是在物体在空间位置x的标量值s=s(x)。三维体数据投影到二维像平面的过程使用的一个常用简单模型是密度发光模型,即假设物体在每一点发射光线和吸收光线,并忽略散射和频谱效应。成像颜色用公式表示即C=∫D0˜c(s(x(t)))e-∫t0˜τ(s(x(t′)))dt′dtC=∫D0c˜(s(x(t)))e−∫t0τ˜(s(x(t′)))dt′dt即颜色光线从0到D累积发光和吸收因子(如图2)。我们把这个积分公式离散化,即设沿光线0到D分为n等分,间隔为d。则有阻光度Ai=1-e-τ(s(x(t′(id)))d和颜色Ci=c(s(x)id)))d,于是得到Capprox=n∑i=0Cii-1∏j=0(1-Ai)∑i=0nCi∏j=0i−1(1−Ai)这个方程可以利用从前至后或从后至前的alpha混合来得到即C′i=Ci+(1-Ai)C′i+1。体数据的存储量非常大,直接体绘制又涉及大量的插值运算和颜色混合运算,在微机上的显示速度很慢,只有通过硬件加速才能达到实时交互显示。在目前通用显示硬件上,显示芯片上的显存空间已经达到128MB或256MB,并且支持AGP8X标准,使得访问系统内存的带宽超过1GB/S。体数据可以三维纹理或二维纹理的多纹理方式表示存储在显卡内存或AGP内存,通过中间几何面取得纹理中的体数据。如图3有几种中间几何面的表示:图中A情形是按照与视线垂直方向等分三维纹理空间的平面切片,B是维纹理空间的某个正交方向等分的切片,C是视点方向的球锥切片(图C左和图C中是在另一个视点(不是球锥的顶点)的观察图,图C右中视点和球锥顶点位于同一点的实际图)。而从颜色混合公式来看,在视线方向上与切片相交的切片间距应当一致,即对纹理数据的空间采样距离应当一致。否则,合成的图像会有一定的色彩空间和结构的走样。A情形在平行投影时和C情形在透视投影时的空间采样率一致。A和C情形均是在三维纹理空间中定义纹理坐标,利用硬件进行三线性插值的纹理采样。B情形在没有硬件三维纹理支持的时候采用的二维多纹理切片,但通过设定多纹理间的运算,也可以避免在不同方向上平行投影时的空间采样率不同的问题。对于各向异性分辨率的体数据,A和C情形中只要对各向的纹理坐标做相应的缩放处理即可。A和C情形在每次变换视线方向后都要重新计算切片的中间几何。A中间几何的三角面数一般在1000以下,而C情形由于是三角面片对球面的近似,如果在较高精度下,通常会达到三角面数100000(对于体数据256×256×256而言)。这样C情形的绘制就比较耗时不能达到实时的交互。我们在透视投影交互时,采用A情形,并且把视点放置在较远处即可。而静止的图像采用C情形绘制。1.2定dirc3的混合因子根据C′i=Ci+(1-Ai)C′i+1,中间几何面可以从后至前的顺序依次绘制,通过设定Direct3D的混合因子SourceBlend为SourceAlpha和DestBlend为InverseSourceAlpha进行颜色混合。Direct3D提供了多种颜色混合因子和操作,如设定Direct3D的混合操作为取最大值即能得到最大值投影,如图4。2转换函数作用时的图像转换函数一直以来都是直接体视绘制的重要问题。它主要是映射了纹理标量值s到RGBA的颜色形式,是决定某些重要结构和细节显示的关键。人们已经提出了许多种自动和半自动的转换函数的设计方法,Kniss等还提出了多维转换函数。本文中使用的转换函数计算和人工调整的方法得到转换函数。转换函数相当于显示硬件的颜色查找表。对于一个256×256×256×8的体数据,如果以D3DFMT_P8格式只存储标量值,存储量为16MB,而要以D3DFMT_A8R8G8B8,先要经过转换函数得到ARGB值再存储,而这时需要的存储量就为64MB(见图5)。在光线积分离散化的公式中,我们可以看到Ci=˜c(s(x(id)))dCi=c˜(s(x(id)))d。其中id应是第i中间几何切片,s应是这个中间几何切片纹理坐标上的纹理插值,即s=sample(x(id),˜s[˜x,˜y,˜z]‚Ci=˜c(s)d。但是无论纹理格式是颜色索引值还是RGBA格式,纹理的插值都是对颜色的插值而不是原始纹理标量值的插值。即其公式变为Ci=sample(x(id),˜c(˜s[˜x,˜y,˜z]))d,因此这种插值是在转换函数作用以后发生的。现在片元处理器具有依赖纹理提取(dependenttexturefetch)的指令,即可以将第一个纹理提取的纹理值作为下一个纹理的坐标值来提取纹理。因此将可以把转换函数以第二个一维纹理或二维纹理的方式表示,而将颜色索引表的值定义为以原始纹理的标量为灰度级的索引表。这样,第一个纹理即三维纹理提取的纹理值虽然是转换函数作用以后的插值,但其中的ARGB每个分量值均等于对原始三维纹理标量值的插值,而利用这个值可以做下个纹理的地址取得颜色值,这样的插值可看作是在转换函数作用以前发生的。用Direct3D的PixselShader表示,其代码是:其中纹理0即颜色表格式的三维纹理,纹理1即转换函数。当转换函数非线性且有高频分量的时候,插值所发生的位置对合成的图像有明显的不同。发生在转换函数作用之前的插值合成的图像较多保留了转换函数的高频变化部分,即图像色彩有高频分布。可以对比以下图像(如图6)。利用硬件的依赖纹理提取,我们还可以实现二维转换函数,即使得颜色值与强度和其梯度相关。3基于ps的体元光照描述使用简单的体数据发光和吸收成像模型没有考虑外部光源的因素。Phong光照模型是比较通用和简单的局部光照模型,即不考虑模型遮挡住光源。渲染得到的光强是环境光,漫反射光和镜面反射光三种性质的光强累加的结果。Iphone=IAmbient+IDiffuse+ISpecular,其中IAmbient=kα为反射环境光常量,ΙDiffuse=Ιpkdcosφ=Ιpkd(→l⋅→n是漫反射光强,Ip为光源强度,kd为材质,→l,→n分别是指向光源方向和表面法向量,ΙSpecular=Ιpkscosnα=Ιpks(→h⋅→n)n是镜面反射光,→h是指向视点的向量和指向光源向量的中间向量。传统的图形管道的光照渲染是基于点元的,因为点元具有法向量。而可编程渲染器使得我们能够进行基于片元的光照渲染,这也发生在Direct3D的PixelShader中。为了对体元进行光照,每个体元都要有法向量,由于体元所在位置的表面未知,法向量使用体元的梯度方向是最简单合理的。由于目前PixelShader没有直接计算纹理梯度的指令,因此我们必须预先计算体数据的梯度,存储纹理格式为ARGB,其中A通道为体数据,RGB通道为体数据梯度的三个分量。这样,在中间几何面上的体数据梯度单位向量是通过邻点插值得到的,由于PS1.3没有向量归一化指令,其插值结果不能归一化使得与实际的梯度单位向量不一致,这会导致光照计算的一定失真。同样由于PS1.3可执行的指令数目有限,我们规定光源为平行光,则光照方向在绘制每一帧时对所有体元都一样。因而可以在程序中预设为一常数,它的代码是:3.1ha的体数据合成在片元渲染器计算得到像素之后并且到达与帧缓存进行颜色混合之前,像素要经过一些测试通道,如Alpha测试和Z测试。假使我们放弃体数据发光和吸收的模型,而是用外部光源渲染,此时Alpha仍为体数据,这时我们可以利用Alpha测试通道决定是否接受该像素。设定Alpha测试参考值为Siso并且相等时才接受该像素。这样最后合成的图像上所有像素点都是体数据中标量值为Siso的空间分布点的投影。但会发现这样通常得到的图像显示的等值面并不连续,这是因为由于有限的中间几何切面数导致许多具有Siso的空间位置上没有中间几何面采样。只有大大增加中间几何的切面数才能得到连续感的等值面。这样完成等值面绘制速度较慢,但如果改变Alpha测试方法为大于等于Siso或小于等于Siso则无需增加切面数,这时显示的是等值面的一边,如图8。4预制件用预压机技术在PC机上具有可编程能力的显示芯片使得我们能够由硬件加速完成过去只能由软件计算完成的直接体绘制方法,而且能与软件计算方法得到同样的结果,使得PC绘制速度和性能得到极大的提高,甚至达到和超过了一般档次的图形工作站
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年网络营销传播策略模拟试题
- 2026年健康促进策略与措施测试题
- 2025-2026年工业机器人编程与仿真应用题库
- 某塑料厂销售办法
- 2025-2026年人力资源管理师考试理论知识模拟试卷
- 2026小学语文教师资格证面试答辩题库
- 2026下半年高中数学教资面试结构化真题题库及解析
- 2026高中地理教资面试试讲题库及答案
- 统编版语文九年级上册第五单元练习题(含答案)
- 广西壮族自治区崇左市天等县小山乡初级中学2026-2027学年九年级上学期第一次阶段检测数学试题(含解析)
- 2026年国考海关系统专业知识模拟试题及答案解析
- 2026中国无人机产业发展趋势及投资潜力研究报告
- 《水对地表的作用》教学设计-2026-2027学年教科版五年级科学上册
- 2026年办公大楼办公室甲醛治理投标文件模板
- 2026新教材统编版九年级上册历史:全册教材问题答案
- 2026烟草制品购销员(四级)考试复习题库(含答案)
- 2026年安庆市消防救援局公开招聘消防文员1名笔试参考题库附答案
- 村干部笔试题库及答案
- 26年养老诈骗防范法规宣讲课件
- 《钎焊》课件 第10、11章 无机非金属材料的钎焊;工具钢、钛合金及难熔合金的钎焊
- 车间班组6S评比方案
评论
0/150
提交评论