private static void FreeTransformTest(Raster render) { render.ClearRT(float4(0, 0, 0.2f, 1)); // clear with color dark blue. int N = 100000; // Create buffer with points to render float3[] points = RandomPositionsInBoxSurface(N); // Creating boxy... points = ApplyTransform(points, float4x4( 1.57f, 0, 0, 0, 0, 1f, 0, 0, 0, 0, 1f, 0, 0, 0, 0, 1 )); // Apply a free transform //points = ApplyTransform(points, p => float3(p.x * cos(p.y) + p.z * sin(p.y), p.y, p.x * sin(p.y) - p.z * cos(p.y))); #region viewing and projecting points = ApplyTransform(points, Transforms.LookAtLH(float3(0, 0, 0), float3(0, 0, 0), float3(0, 1, 0))); points = ApplyTransform(points, Transforms.PerspectiveFovLH(pi_over_4, render.RenderTarget.Height / (float)render.RenderTarget.Width, 0.01f, 10)); #endregion render.DrawPoints(points); }
public static void DrawRoomTest(Raster raster) { raster.ClearRT(float4(0, 0, 0.2f, 1)); // clear with color dark blue. int N = 100000; // Create buffer with points to render float3[] points = RandomPositionsInBoxSurface(N); float4x4 viewMatrix = Transforms.LookAtLH(float3(5f, 4.6f, 2), float3(0, 0, 0), float3(0, 1, 0)); float4x4 projMatrix = Transforms.PerspectiveFovLH(pi_over_4, raster.RenderTarget.Height / (float)raster.RenderTarget.Width, 0.01f, 10); DrawRoom(raster, points, mul(viewMatrix, projMatrix)); }
private static void GeneratingMeshes <V>(Raster <PositionNormal, V> render) where V : struct, IProjectedVertex <V> { render.ClearRT(float4(0, 0, 0.2f, 1)); // clear with color dark blue. var primitive = CreateModel(); primitive = primitive.Expand(); //primitive = primitive.Expand(); /// Convert to a wireframe to render. Right now only lines can be rasterized. primitive = primitive.ConvertTo(Topology.Lines); #region viewing and projecting float4x4 viewMatrix = Transforms.LookAtLH(float3(2, 1f, 2), float3(0, 0, 0), float3(0, 1, 0)); float4x4 projectionMatrix = Transforms.PerspectiveFovLH(pi_over_4, render.RenderTarget.Height / (float)render.RenderTarget.Width, 0.01f, 20); // Define a vertex shader that projects a vertex into the NDC. render.VertexShader = v => { float4 hPosition = float4(v.Position, 1); hPosition = mul(hPosition, viewMatrix); hPosition = mul(hPosition, projectionMatrix); return(new V { Homogeneous = hPosition }); }; // Define a pixel shader that colors using a constant value render.PixelShader = p => { return(float4(p.Homogeneous.x / 1024.0f, p.Homogeneous.y / 512.0f, 1, 1)); }; #endregion // Draw the mesh. render.DrawMesh(primitive); }