0

私は 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);

2 つのベクトル間の除算を計算する方法がわかりません。また、ベクトルのフロアを計算する方法もわかりません。(2 つの float2 を除算すると float2 が返されると想定しています)。

何か案が?

4

1 に答える 1

1

HLSL 演算子と関数は、多くの場合、x と y を持つ float2 のような構造で機能します。

フロア内の除算は、とがでとで除算された結果であるfloat2を返します。また、floor は、結果のandが入力 (除算の結果) のandのフロア値であるaを返します。xyxxyyfloat2xyxy

同じことが、float3 およびその他の同様の構造体にも当てはまります。

于 2011-04-29T14:02:42.560 に答える