1
float4 color = tex2D(inputSampler, TexCoord);
     //compute distance from center
float distance = color.a>0.3f?length(TexCoord - 0.5f):1.0f;

什么是color.a&gt,为什么;第二行中间有一个?

4

1 回答 1

3

对原始问题的回应:“有人能告诉我这段 HLSL 代码是什么意思吗?

float4 color = tex2D(inputSampler, TexCoord);
  //compute distance from center 
float distance = color.a>0.3f?length(TexCoord - 0.5f):1.0f;

什么是 color.a> 以及为什么有一个;在第二行的中间?”


它是一个 html 转义序列搞砸了。>应该是>(“大于”符号)。

所以应该是:

float4 color = tex2D(inputSampler, TexCoord);
     //compute distance from center
float distance = color.a > 0.3f?length(TexCoord - 0.5f):1.0f;

同样,如果您遇到&lt;它可能是<(“小于”符号)。其他常见的有:

  • &quot;->' "'
  • &amp;->' &'
  • &nbsp;-> ' ' (空格)

像素着色器实际所做的是,如果此时采样纹理的 alpha 大于0.3distance则为从采样 texcoord (U,V) 位置到 (0.5, 0.5) 的长度,即采样的纹理中心。如果 alpha0.3小于或等于 ,则distance设置为1.0f

距离值显然稍后在着色器中用于应用一些像素效果。

于 2012-08-04T06:52:40.320 回答