/Rendering/ModelTests/RenderToTextureTests.cs
C# | 257 lines | 58 code | 34 blank | 165 comment | 0 complexity | 99b894cdd25d9f86ae5c9f14606b7043 MD5 | raw file
Possible License(s): Apache-2.0
- using System;
- using Delta.ContentSystem.Rendering;
- using Delta.Engine;
- using Delta.Graphics.Basics;
- using Delta.Rendering.Basics.Drawing;
- using Delta.Rendering.Basics.Materials;
- using Delta.Rendering.Cameras;
- using Delta.Rendering.Models;
- using Delta.Utilities.Datatypes;
- using NUnit.Framework;
-
- namespace Delta.Rendering.ModelTests
- {
- /// <summary>
- /// Render to texture tests. Note: Simpler tests can also be found in
- /// Delta.Rendering.BasicTests.MaterialTests.
- /// </summary>
- public class RenderToTextureTests
- {
- #region Helpers
- /// <summary>
- /// </summary>
- public static void DrawGeneratedBoxOnTexture()
- {
- LookAtCamera cam = new LookAtCamera(new Vector(22, 15, 15));
- Mesh box = Mesh.CreateBox("Box", 5f, 5f, 5f, MaterialData.Default);
-
- RenderToTexture renderToTexture = RenderToTexture.Create(
- new Size(256, 256), false, false);
- Material2D mat = new Material2D(renderToTexture);
-
- Application.Start(delegate
- {
- renderToTexture.Render(delegate
- {
- Line.Draw(new Point(0, 0), new Point(1, 1), Color.Red);
- });
-
- // Show rendered texture with our material.
- mat.Draw(new Rectangle(0.2f, 0.3f, 0.5f, 0.5f));
- //box.Draw();
- });
- }
- #endregion
-
- #region DrawModelOnTexture (Static)
- /// <summary>
- /// Draw image
- /// </summary>
- [Test]
- public static void DrawModelOnTexture()
- {
- //RenderToTexture renderToTexture = RenderToTexture.Create(
- // new Size(256, 256), false, false);
- //Material2D mat = new Material2D(renderToTexture);
-
- //MaterialData materialData = new MaterialData
- //{
- // ShaderName = "TexturedShader3D",
- // DiffuseMapName = "TwinchurchBestDiffuse",
- //};
- //Mesh sphere = Mesh.CreateSphere(
- // "GenerateShadowMapTest.Sphere",
- // 2, materialData);
-
- //LookAtCamera camera = new LookAtCamera(new Vector(3.0f, 3.0f, 3.0f));
-
- //Application.Start(delegate
- //{
- // // Render line into texture.
- // renderToTexture.Render(delegate
- // {
- // camera.UpdateProjectionMatrix();
- // sphere.Draw();
- // MaterialManager.Instance.Run();
- // });
- // camera.UpdateProjectionMatrix();
- // // Also draw model in normal mode.
- // sphere.Draw();
- // // Show rendered texture with our material.
- // mat.Draw(new Rectangle(ScreenSpace.Area.Left, ScreenSpace.Area.Top, 0.2f, 0.2f));
- //});
- }
- #endregion
-
- #region GenerateShadowMapTest (Static)
- /// <summary>
- /// Generate shadow map test
- /// </summary>
- [Test]
- public static void GenerateShadowMapTest()
- {
- //RenderToTexture renderedTexture = RenderToTexture.Create(
- // new Size(256, 256),
- // //better, but slower: new Size(512, 512),
- // true, false);
- //Material2D renderedMaterial = new Material2D(renderedTexture);
-
- ////MaterialData shadowMaterialData = new MaterialData
- ////{
- //// ShaderName = "ShadowMapGenerator",
- ////};
-
- //MaterialData shadowCompData = new MaterialData
- //{
- // ShaderName = "TexturedShader3DShadowMap",
- // DiffuseMapName = "RomeSkyDomeHighMediumLowDiffuse",
- // ShadowMapTexture = renderedTexture.Name
- //};
-
- ////Mesh shadowedSphere = Mesh.CreateSphere(
- //// "GenerateShadowMapTest.ShadowedShpere",
- //// 5, shadowMaterialData);
- ////Mesh shadowedPlane = Mesh.CreatePlane(
- //// "GenerateShadowMapTest.ShadowedPlane",
- //// 30, 30, shadowMaterialData);
-
- //// The sphere needs no shadow mapping, just the plane
- //MaterialData noShadowMaterial = new MaterialData
- //{
- // ShaderName = "TexturedShader3D",
- // DiffuseMapName = "RomeSkyDomeHighMediumLowDiffuse",
- //};
- //Mesh sphere = Mesh.CreateSphere(
- // "GenerateShadowMapTest.Sphere",
- // 5, noShadowMaterial);
-
- //Mesh plane = Mesh.CreatePlane("GenerateShadowMapTest.Plane",
- // 30, 30, shadowCompData);
-
- //LookAtCamera camera = new LookAtCamera(new Vector(10.0f, 10.0f, 10.0f));
-
- //Matrix sphereMatrix = Matrix.CreateTranslation(0.0f, 0.0f, 3.0f);
-
- //Application.Start(delegate
- //{
- // //Matrix remMatrix = ScreenSpace.ViewProjection3D;
- // renderedTexture.Render(delegate
- // {
- // camera.UpdateProjectionMatrix();
- // ScreenSpace.ViewProjection3D = Light.LightViewProjectionMatrix;
- // //shadowedSphere.Draw(ref sphereMatrix);
-
- // //sphere.DrawShadow(ref sphereMatrix);
-
- // MaterialManager.Instance.Run();
- // });
- // camera.UpdateProjectionMatrix();
-
- // if (Input.Keyboard.SpaceIsPressed)
- // {
- // ScreenSpace.ViewProjection3D = Light.LightViewProjectionMatrix;
- // }
-
- // // Render the original mesh and the grid for orientation.
- // sphere.Draw(ref sphereMatrix);
- // plane.Draw();
- // //Grid.Draw();
- // Light.Draw();
-
- // // Render the material with the render to texture data.
- // renderedMaterial.Draw(new Rectangle(ScreenSpace.Area.Left,
- // ScreenSpace.Area.Top, 0.2f, 0.2f));
- //});
- }
- #endregion
-
- #region DrawMeshWithShadowMap (Static)
- /// <summary>
- /// Draw mesh with shadow map
- /// </summary>
- [Test]
- public static void DrawMeshWithShadowMap()
- {
- //RenderToTexture renderedTexture = RenderToTexture.Create(
- // ShaderConstants.DefaultShadowSize, true, true);//false);
- ////better, but slower: new Size(512, 512), true);
- //Material2D renderedMaterial = new Material2D(renderedTexture);
-
- //// to make this unit test work.
- //Mesh testMesh = new Mesh(
- // //"Fountain");
- // //"Abomination");
- // "Statue");
-
- //MaterialData shadowCompData = new MaterialData
- //{
- // ShaderName = "TexturedShader3DShadowMap",
- // DiffuseMapName = "RomeSkyDomeHighMediumLowDiffuse",
- // ShadowMapTexture = renderedTexture.Name
- //};
-
- //Mesh plane = Mesh.CreatePlane("GenerateShadowMapTest.Plane",
- // 30, 30, shadowCompData);
-
- //LookAtCamera camera = new LookAtCamera(new Vector(10.0f, 10.0f, 10.0f));
-
- //Application.Start(delegate
- //{
- // //Matrix remMatrix = ScreenSpace.ViewProjection3D;
- // if (Input.Keyboard.ShiftIsPressed == false)
- // renderedTexture.Render(delegate
- // {
- // camera.UpdateProjectionMatrix();
- // ScreenSpace.ViewProjection3D = Light.LightViewProjectionMatrix;
- // //testMesh.DrawShadow();
- // testMesh.Draw();
- // MaterialManager.Instance.Run();
- // });
- // camera.UpdateProjectionMatrix();
-
- // if (Input.Keyboard.SpaceIsPressed)
- // {
- // ScreenSpace.ViewProjection3D = Light.LightViewProjectionMatrix;
- // }
-
- // // Render the original mesh and the grid for orientation.
- // testMesh.Draw();
- // plane.Draw();
- // Light.Draw();
-
- // // Render the material with the render to texture data.
- // renderedMaterial.Draw(new Rectangle(ScreenSpace.Area.Left,
- // ScreenSpace.Area.Top, 0.2f, 0.2f));
- //});
- }
- #endregion
-
- #region DrawLineOnTextureWriteToFile (Static)
- /// <summary>
- /// Draw image
- /// </summary>
- [Test]
- public static void DrawLineOnTextureWriteToFile()
- {
- //RenderToTexture renderToTexture = RenderToTexture.Create(
- // new Size(256, 256), false, false);
- //Material2D mat = new Material2D(renderToTexture);
-
- //Application.Start(delegate
- //{
- // // Render line into texture.
- // renderToTexture.Render(delegate
- // {
- // // Line from top left up to bottom right in quadratic space
- // Line.Draw(new Point(0, 0), new Point(1, 1), Color.Red);
- // DrawManager.Instance.Run();
- // MaterialManager.Instance.Run();
- // });
-
- // // Show rendered texture with our material.
- // mat.Draw(new Rectangle(0.2f, 0.3f, 0.5f, 0.5f));
- //});
- }
- #endregion
- }
- }