第 13 课:Scale Matrix
我的解
cbuffer Uniforms : register(b0) {
float iTime;
float4x4 viewMatrix;
float4x4 projectionMatrix;
};
struct VSInput {
float3 position : Position;
};
struct VSOutput {
float4 position : SV_Position;
float3 worldPos : POSITION0;
};
VSOutput main(VSInput input) {
VSOutput output;
float PI = 3.14;
float3 c1 = float3(1.0, 0.0, 0.0) * (sin(iTime-PI/2.0)+2.0);
float3 c2 = float3(0.0, 1.0, 0.0) * ((cos(iTime)+1.0)/2.0);
float3 c3 = float3(0.0, 0.0, 1.0)* (sin(iTime-PI/2.0)+2.0);
// expects columns
float3x3 transform = float3x3(c1, c2, c3);
float3 worldPos = mul(
input.position, // expects row
transform // expects columns
);
float4 viewPos = mul(viewMatrix, float4(worldPos, 1.0));
output.position = mul(projectionMatrix, viewPos);
output.worldPos = worldPos;
return output;
}