毕设笔记3-VolumeRender
2021-5-8
| 2026-4-26
Words 499Read Time 2 min
type
Post
status
Published
date
May 8, 2021
slug
summary
【解释一下下面的东西】 其中animation函数的设计思路是:调用一次initCuda函数,重置传入CUDA的体数据纹理,并再次调用d_render函数进行光线投射,并调用glutPostRedisplay函数进行重绘制。 传递函数 CUDA 由于体绘制处理的往往是...
tags
category
icon
password
【解释一下下面的东西】
其中animation函数的设计思路是:调用一次initCuda函数,重置传入CUDA的体数据纹理,并再次调用d_render函数进行光线投射,并调用glutPostRedisplay函数进行重绘制。

传递函数

CUDA

由于体绘制处理的往往是科学计算或是扫描CT的结果,数据量往往很大,计算会很慢。所以我们需要加速。
传统的加速方法有包围盒、提前光线终止等办法,这种方法和场景管理方法需要将三维的数据集抽象成各种数据结构,比如八叉树和k-d树。但若使用GPU并行计算,可以得到更为高效的加速。
GPU并行计算的基础是将像矩阵运算这一类的无先后顺序依赖、流程相同大量重复的计算操作并行处理。而后文提到的光线投射算法,不同体素计算流程相同,且互相不干扰。所以它的流程管线也可以进行并行计算。
GPU的设计的初衷是用于图像计算,若要使得GPU进行一般的计算,需要使用OpenGl和directX等API访问GPU,并且需要许多图形学相关知识,这样非常不方便,于是NVIDIA推出了CUDA,使得开发人员可以更方便地使用显卡进行通用计算。

光线投射算法(Ray casting)

原理

CUDA代码实现

要用CUDA实现光线投射算法是较为方便的,因为CUDA提供了CudaArray类,Tex3d类与Tex1d类以及很多相关的数据结构,极大地方便了基于纹理映射贴图的可视化程序的编写。从整体来看,基于CUDA的体绘制方法如下流程图所示。
毕设笔记4-算法学习毕设笔记2-一点拓扑学习的记录
Loading...