着色器和效果——3.1 多纹理化概览

本文介绍了多纹理化的基本概念,它是通过混合多个纹理来实现特殊效果的技术,常用于光照等特效。在Direct3D中,通过设置不同的纹理阶段和采样器状态来允许多个纹理,每个阶段对应一组纹理坐标。多纹理化可以节省计算时间,实现更精确的光照效果。在像素着色器中,可以以编程方式混合纹理,提供了更大的灵活性。
摘要由CSDN通过智能技术生成

3.1 多纹理化概览

阅读此文表明您已同意文末的声明

多纹理化Multitexturing)可能是能用像素着色器实现的最简单的技巧了。此外,因为像素着色器替换多纹理化阶段,那么接下来我们应该对多纹理化“是什么”和“做什么”有一个最基本的理解。本节介绍多纹理化的简明概览。

当我们一开始讨论纹理化texturing)的时候(译者注:对纹理化的讨论不在译文范围内,具体可参照原书第六章,本文是原书“第四部分:着色器和效果”的第三章),我们忽略了固定功能管线中对多纹理化的讨论,这有两个原因:第一,多纹理化是有一点棘手的过程,我们考虑到这在当时是一个高级话题;此外,固定功能多纹理化阶段被新的和更强有力的像素着色器替换掉了。因此花时间在已经过时的固定功能纹理化阶段上是无意义的。

多纹理化后面的思想有一点和混合blending)相关。在第七章中(译者注:原书第七章不在译文范围内)我们了解到:可以将正要被光栅化的像素与之前写入后台缓冲的像素进行混合来达成一种特效。我们推广这种相同的思想到多个纹理multiple texture)。也就是说,我们一次允许几个纹理,然后定义这些纹理如何被混合在一起以到达一种特殊效果。多纹理化的一个通常的用法是执行光照。作为在顶点处理阶段使用Direct3D的光照模型的替代,我们使用一种叫做“光照贴图”(light map)的特殊纹理贴图texture map),它编码encode)表面是如何被光照的(译者注:这句话的意思是“它定义表面是如何被光照的”)。例如,假设我们希望一盏聚光灯spotlight)照在一个大木箱上,我们要么可以定义一个D3DLIGHT9结构的聚光灯,要么可以将代表木箱的纹理贴图与代表聚光灯的光照映射混合在一起,如图3.1所示。

18.1:使用多纹理化渲染一个通过聚光灯照亮的木箱。这里我们通过将相应的纹理像素(texels)相乘来将这两个纹理组合起来。

注意:用第七章里的混合,结果图像依赖于纹理被混合的方式。在固定功能管线的多纹理化阶段,混合方程式被纹理渲染状态texture render state)控制。用像素着色器,我们可以以可编程的方式在代码中写出混合函数的简单表达式。这使我们可以以任何我们想要的方式混合纹理。我们将在讨论为本章准备的样例应用程序时详细讨论纹理混合。

混合多个纹理(本例中是两个)来照亮木箱比起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值