跳到主要内容
← Vertex Transformations

Vertex Transformations

Rotation About a Point

shader-learning 自学第 16 课:Rotation About a Point

实时渲染 · 网格 HLSL

第 16 课:Rotation About a Point

我的解

cbuffer Uniforms : register(b0) {
  float iTime;
  float4x4 viewMatrix;
  float4x4 projectionMatrix;
};

struct VSInput {
  float3 position : Position;
};

struct VSOutput {
  float4 position : SV_Position;
};

VSOutput main(VSInput input) {
  VSOutput output;

  // setPosition2D
  float2 pos2D = input.position +float2(0.0,2.0);
  float2 disp = (pos2D - float2(0.0,0.0));
  float delta = iTime;
  float rotatedX = disp.x * cos(delta) - disp.y * sin(delta);
  float rotatedY = disp.y * cos(delta) + disp.x * sin(delta);
  float2 rotated = float2(rotatedX, rotatedY)+float2(0.0,0.0);


  float4 viewPos  = mul(viewMatrix, float4(rotated, 0.0, 1.0));
  output.position = mul(projectionMatrix, viewPos);

  return output;
}