3D纹理展示方式之RayMarch(光线投射)(glsl源码说明)

Demo:Rendering & Art

3D纹理在基于volume rendering的渲染机制的相关应用中有着广泛的应用。应用的领域非常广泛,例如考古、医学、材料科学,游戏等等。
一般来说3D纹理,可以理解为具有三个维度(width,height,depth)的数据类似于三维数组。一般的2D纹理我们可以认为它就是一张图片(实际就是一段内存(主内存和显存)中的数据), 那么3D纹理可以理解为在depth维度叠在一起的若干张图。那么描述3D纹理数据的大小就是width*height*depth * stride,这个stride具体要看你用多少个字节来表示3D纹理数据中的一个(voxel)。在片段着色器中访问的时候使用(s,t,r)或者(x,y,z)纹理空间坐标,采样器就会依据你自定义的NEAREST或者LINEAR来获得插值结果->当前片段通过纹理坐标(x,y,z)对应得到的纹理数据。这个数据可以可以直接展示出来也可以作为其他计算的输入数据例如光照或者体积光/雾/流体等。

上图是使用 ray march(光线投射)机制,来获得片段对应的3D纹理数据。先看片段着色代码:

// es3 glsl shader code
vec4 color4 = vec4(0.0);
// 光线步进值
float stepDis = 5.0;
float dis = 0.0;
vec3 pv;
for(int i = 0; i < 100; +
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值