没有合适的资源?快使用搜索试试~ 我知道了~
9.7裁剪像素1
需积分: 0 1 下载量 119 浏览量
2022-08-08
19:49:01
上传
评论
收藏 101KB DOCX 举报
温馨提示
试读
3页
当它的值接近于0时,我们将该像素视为完全透明,丢弃该像素,不再对它进行后续处理。而且,它可以在像素着色器中尽早丢弃像素,避免执行不必要的像素着色器指令(被丢弃的
资源详情
资源评论
资源推荐
1 / 3
9.7 裁剪像素
有时,我们希望完全丢弃某个源像素,使它不再接受后续处理。这一工作可以由 HLSL
的内置函数 clip(x)来实现。该函数只能在像素着色器中使用,当 x<0 时丢弃当前像素,使之
不再接受后续处理。该函数在渲染如图 9.9 所示的铁丝网纹理时非常有用。也就是说,它非
常适合于渲染那些完全不透明或者完全透明的像素。
图 9.9 带有 alpha 通道的铁丝网纹理。clip 函数将丢弃那些带有黑色 alpha 值的像素,不
对这些像素进行绘制;只有铁丝网部分会保留下来。从本质上讲,alpha 通道剔除了纹理
中的“非铁丝网”像素。
在像素着色器中,我们攫取了漫反射纹理的 alpha 分量。当它的值接近于 0 时,我们将
该像素视为完全透明,丢弃该像素,不再对它进行后续处理。
float4 PS(VertexOut pin, uniform int gLightCount, uniform bool
gUseTexure, uniform bool gAlphaClip, uniform bool gFogEnabled) :
SV_Target
{
// 插值后的法线需要重新规范化
pin.NormalW = normalize (pin.NormalW);
// toEye 矢量用于光照计算
float3 toEye = gEyePosW - pin.PosW;
// 保存表面顶点离开相机的距离信息
float distToEye = length(toEye);
// 规范化
toEye /= distToEye;
// 初始化纹理颜色
float4 texColor = float4(1, 1, 1, 1);
if (gUseTexure)
{
王元祺
- 粉丝: 66
- 资源: 303
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0