跳到主要内容
← Vertex Transformations

Vertex Transformations

World Space and the Model Matrix

M_model = M_translation x M_rotation x M_scale

实时渲染 · 网格 HLSL

第 20 课:World Space and the Model Matrix

实现:M_model = M_translation x M_rotation x M_scale

实现

cbuffer Transform : register(b0) {
  float4x4 modelMatrix;
  float4x4 viewMatrix;
  float4x4 projectionMatrix;
};

struct VSInput {
  float3 position : Position;
};

struct VSOutput {
  float4 position : SV_Position;
  float3 wolrdPos : POSITION0;
};

VSOutput main(VSInput input) {
  VSOutput output;

  // setWorldPosition
  float4 worldPos = mul(modelMatrix, float4(input.position, 1.0));

  float4 viewPos =  mul(viewMatrix, worldPos);
  output.position = mul(projectionMatrix, viewPos);
  output.wolrdPos = worldPos.xyz;

  return output;
}

复盘笔记

  • M_model = M_translation x M_rotation x M_scale