Skip to content

简介

本章节主要介绍通过 内置着色器(Built In Shaders)设置 材质(Material)的透明程度和内容的方法,以及根据透明度设置镂空。

【Built_In_Shaders_Transparency001.gif】

通过设置材质透明度和 Alpha 裁剪实现的效果。

Alpha 值控制透明度

如果您使用的 内置着色器(Built In Shaders)是 透明度着色器(Engine/DefaultPBRTransparent),则使材质透明,在 检视窗口(Inspector)中对 材质资产(Material Asset)按照以下步骤操作:

  • 确保材质使用的着色器是 透明度着色器(Engine/DefaultPBRTransparent)。

【Built_In_Shaders_Transparency002.png】

  • 在 检视窗口(Inspector)中找到 叠加颜色(_Color)属性,点击属性值启动 调色板 窗口。

【Built_In_Shaders_Transparency003.png】

  • 在调色板窗口中通过滑动滑动条或直接编辑 Alpha 值(A)设置透明度。值为 0 表示完全透明,值为 1 表示完全不透明。

【Built_In_Shaders_Transparency004.gif】

使用纹理控制透明度

如果您通过 着色器(Shader)的 主纹理(_MainTex)相关的属性将 纹理(Texture)指定给 材质(Material),纹理的 Alpha 通道(A)可用于控制材质的透明度。 Alpha 通道(A)中的值为 0 的纹理区域表示完全透明,值为 1 的纹理区域表示完全不透明。您可以使用不同的值来提高或降低不同区域的透明度。

【Built_In_Shaders_Transparency005.png】

根据纹理的透明度让场景中的窗户在玻璃上出现透明和半透的光斑效果,以及让窗框不透明。

纹理的 Alpha 通道(A)与您在调色板窗口中设置的 Alpha 值(A)相结合,叠加影响材质的透明度。

要检查纹理的 Alpha 通道,请按照下列步骤操作:

  • 在项目窗口中选中该 纹理(Texture)的 2D 贴图资产( 2D Texture Asset),并在 检视窗口(Inspector)底部查看纹理预览。

【Built_In_Shaders_Transparency006.png】

预览窗口中显示所有纹理通道(RGBA)的综合效果。

  • 在 预览窗口(Preview)中点击切换通道下拉框并选择 Alpha(A)选项。预览图中显示黑色代表 Alpha 值(A)为 0(完全透明),白色代表 Alpha 值(A)为 1(完全不透明),灰色深度越深代表透明度越高。

【Built_In_Shaders_Transparency007.png】

预览窗口中仅显示纹理 Alpha 通道。

Alpha 裁剪(Alpha Clipping)

Alpha 裁剪(Alpha Clipping)功能可以根据 着色器(Shader)中 主纹理(_MainTex)或 叠加颜色(_Color)的 Alpha 值(A)控制材质的镂空区域,创建在不透明区域和透明区域之间具有硬边的透明效果。

其原理为在渲染该材质所控制的每个像素点时,判断对应像素点上的 Alpha 值(A)是否小于 Alpha 阈值(_AlphaThreshold),通过不渲染 Alpha 值(A)低于 Alpha 阈值参数值的像素来实现此效果。

【Built_In_Shaders_Transparency008.png】

对于同一个 Alpha 值从上往下递减的正方形在 Alpha 阈值取不同值的显示效果。

相关材质属性

值得注意的是,关键字(Keywords)为 USE_ALPHA_CLIP 的着色器变体编辑为启用(勾选)状态,与 Alpha 裁剪(Alpha Clipping)直接相关的 材质属性(Property)才会有显示效果。

【Built_In_Shaders_Transparency009.png】

内置着色器(Built In Shaders)中包含以下与 Alpha 裁剪(Alpha Clipping)直接相关的 材质属性(Property):

【Built_In_Shaders_Transparency010.png】

名称参数名参数类型描述
Alpha 阈值(Alpha Threshold)_AlphaThresholdRange设置用于确定是否应渲染对应像素的 Alpha 值阈值。
· 对应像素的 Alpha 值等于或高于此阈值,则会渲染该像素。
· 对应像素的 Alpha 值低于此阈值,则不会渲染该像素。 属性值为 0 至 1 的浮点数,默认值为 0.5。