Graphics 有助于理解像素效果

Graphics 有助于理解像素效果,graphics,hlsl,shader,pixel-shader,Graphics,Hlsl,Shader,Pixel Shader,我是一个新的HLSL,我试图理解一个像素样本。然而,我还没有找到一个关于几个操作的参考资料。以下是着色器示例: //-------------------------------------------------------------------------------------- // // WPF ShaderEffect HLSL -- PixelateEffect // //-----------------------------------------------------

我是一个新的HLSL,我试图理解一个像素样本。然而,我还没有找到一个关于几个操作的参考资料。以下是着色器示例:

//--------------------------------------------------------------------------------------
// 
// WPF ShaderEffect HLSL -- PixelateEffect
//
//--------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------
// Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.)
//-----------------------------------------------------------------------------------------

float HorizontalPixelCounts : register(C0);
float VerticalPixelCounts : register(C1);

//--------------------------------------------------------------------------------------
// Sampler Inputs (Brushes, including ImplicitInput)
//--------------------------------------------------------------------------------------

sampler2D implicitInputSampler : register(S0);


//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------

float4 main(float2 uv : TEXCOORD) : COLOR
{
  float2 brickCounts = { HorizontalPixelCounts, VerticalPixelCounts };
  float2 brickSize = 1.0 / brickCounts;

  // Offset every other row of bricks
  float2 offsetuv = uv;
  bool oddRow = floor(offsetuv.y / brickSize.y) % 2.0 >= 1.0;
  if (oddRow)
  {
      offsetuv.x += brickSize.x / 2.0;
  }

  float2 brickNum = floor(offsetuv / brickSize);
  float2 centerOfBrick = brickNum * brickSize + brickSize / 2;
  float4 color = tex2D(implicitInputSampler, centerOfBrick);

  return color;
}
我无法理解在以下情况下发生的计算:

float2 brickNum = floor(offsetuv / brickSize);
我不知道如何计算两个向量之间的除法,也不知道如何计算向量的底。(我假设两个float2的除法返回一个float2)


有什么想法吗?

HLSL运算符和函数通常与具有x和y的float2这样的结构一起工作

地板内部的分割返回一个
float2
,其中
x
y
x
x
y
y
分割的结果。和floor将返回一个
float2
,其中结果的
x
y
是输入的
x
y
的下限值(除法结果)

float3和其他类似结构也是如此