赞
踩
总结视频来源:https://www.youtube.com/watch?v=1buFrKUaqwM
总结视频来源作者:AI葵
3D高斯分布投影到图像上,每个像素投影到该像素上的高斯数不同,因此不能用pytorch并行化处理
前向传播
- 计算投影出来圆圈的半径
- 计算圆圈覆盖的像素数(把画面分成了很多个方块,记录圆与哪些方块相连)
- 计算每个高斯的前后顺序(alpha合成)
- 计算每个像素的颜色
diff-gaussian-rasterization/cuda_rasterizer/forward.cu
预处理CUDA preprocessCUDA函数用于解决第一个和第二个问题
将3D投影到投影上
计算三个轴的长度的过程
计算投影到二维后椭圆的样子
计算长轴的半径
计算高斯的半径
有了圆心和半径16×16瓦片,计算圆覆盖的像素数
保存后面所有用到的值
tilesTouch保存总共覆盖了几个 tile
解决第三个问题
将tile+高斯想象成一个组合,按照tile的数量,先排列。如果是同一个tile,按照每个高斯的顺序排列
一直到这里
解决第四个问题
一张图片分割成很多图块,图块中每个线程负责一个像素,计算颜色
把每个tile当时一个块,每个块里的线程其实就是一个图块中的一个像素
共享内存
更新变量
把每个像素点对高斯的中心做一个距离计算,应用在高斯分布的概率计算中得到点的alpha
如果alpha<0.0001就会结束这个计算
alpha合成
把颜色写在正确的位置
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。