Compare commits
	
		
			6 Commits 
		
	
	
		
			spritebatc
			...
			main
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								
								 | 
						691ba400a0 | |
| 
							
							
								
								 | 
						0846c09f53 | |
| 
							
							
								
								 | 
						f9a41ce231 | |
| 
							
							
								
								 | 
						74b6e00bc8 | |
| 
							
							
								
								 | 
						a64db5d0e1 | |
| 
							
							
								
								 | 
						2bd6531766 | 
| 
						 | 
					@ -2,3 +2,4 @@ bin/
 | 
				
			||||||
obj/
 | 
					obj/
 | 
				
			||||||
.vs/
 | 
					.vs/
 | 
				
			||||||
*.csproj.user
 | 
					*.csproj.user
 | 
				
			||||||
 | 
					Properties/
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<ItemGroup>
 | 
				
			||||||
 | 
							<ProjectReference Include="..\..\MoonWorks\MoonWorks.csproj" />
 | 
				
			||||||
 | 
							<ProjectReference Include="..\MoonWorks.Test.Common\MoonWorks.Test.Common.csproj" />
 | 
				
			||||||
 | 
						</ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<PropertyGroup>
 | 
				
			||||||
 | 
							<OutputType>Exe</OutputType>
 | 
				
			||||||
 | 
							<TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
 | 
							<Nullable>enable</Nullable>
 | 
				
			||||||
 | 
						</PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<Import Project="$(SolutionDir)NativeAOT_Console.targets" Condition="Exists('$(SolutionDir)NativeAOT_Console.targets')" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,223 @@
 | 
				
			||||||
 | 
					using MoonWorks;
 | 
				
			||||||
 | 
					using MoonWorks.Graphics;
 | 
				
			||||||
 | 
					using MoonWorks.Math.Float;
 | 
				
			||||||
 | 
					using MoonWorks.Math;
 | 
				
			||||||
 | 
					using System.Runtime.InteropServices;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace MoonWorks.Test
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						class MSAACubeGame : Game
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							private GraphicsPipeline[] msaaPipelines = new GraphicsPipeline[4];
 | 
				
			||||||
 | 
							private GraphicsPipeline cubemapPipeline;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private Texture[] renderTargets = new Texture[4];
 | 
				
			||||||
 | 
							private Buffer vertexBuffer;
 | 
				
			||||||
 | 
							private Buffer indexBuffer;
 | 
				
			||||||
 | 
							private Sampler sampler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private Vector3 camPos = new Vector3(0, 0, 4f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private SampleCount currentSampleCount = SampleCount.Four;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public MSAACubeGame() : base(TestUtils.GetStandardWindowCreateInfo(), TestUtils.GetStandardFrameLimiterSettings(), 60, true)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Logger.LogInfo("Press Down to view the other side of the cubemap");
 | 
				
			||||||
 | 
								Logger.LogInfo("Press Left and Right to cycle between sample counts");
 | 
				
			||||||
 | 
								Logger.LogInfo("Setting sample count to: " + currentSampleCount);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create the MSAA pipelines
 | 
				
			||||||
 | 
								ShaderModule triangleVertShaderModule = new ShaderModule(GraphicsDevice, TestUtils.GetShaderPath("RawTriangle.vert"));
 | 
				
			||||||
 | 
								ShaderModule triangleFragShaderModule = new ShaderModule(GraphicsDevice, TestUtils.GetShaderPath("SolidColor.frag"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								GraphicsPipelineCreateInfo pipelineCreateInfo = TestUtils.GetStandardGraphicsPipelineCreateInfo(
 | 
				
			||||||
 | 
									TextureFormat.R8G8B8A8,
 | 
				
			||||||
 | 
									triangleVertShaderModule,
 | 
				
			||||||
 | 
									triangleFragShaderModule
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								for (int i = 0; i < msaaPipelines.Length; i += 1)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									pipelineCreateInfo.MultisampleState.MultisampleCount = (SampleCount)i;
 | 
				
			||||||
 | 
									msaaPipelines[i] = new GraphicsPipeline(GraphicsDevice, pipelineCreateInfo);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create the cubemap pipeline
 | 
				
			||||||
 | 
								ShaderModule cubemapVertShaderModule = new ShaderModule(GraphicsDevice, TestUtils.GetShaderPath("Skybox.vert"));
 | 
				
			||||||
 | 
								ShaderModule cubemapFragShaderModule = new ShaderModule(GraphicsDevice, TestUtils.GetShaderPath("Skybox.frag"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								pipelineCreateInfo = TestUtils.GetStandardGraphicsPipelineCreateInfo(
 | 
				
			||||||
 | 
									MainWindow.SwapchainFormat,
 | 
				
			||||||
 | 
									cubemapVertShaderModule,
 | 
				
			||||||
 | 
									cubemapFragShaderModule
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								pipelineCreateInfo.VertexInputState = VertexInputState.CreateSingleBinding<PositionVertex>();
 | 
				
			||||||
 | 
								pipelineCreateInfo.VertexShaderInfo.UniformBufferSize = (uint)Marshal.SizeOf<TransformVertexUniform>();
 | 
				
			||||||
 | 
								pipelineCreateInfo.FragmentShaderInfo.SamplerBindingCount = 1;
 | 
				
			||||||
 | 
								cubemapPipeline = new GraphicsPipeline(GraphicsDevice, pipelineCreateInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create the MSAA render targets
 | 
				
			||||||
 | 
								for (int i = 0; i < renderTargets.Length; i++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									TextureCreateInfo cubeCreateInfo = new TextureCreateInfo
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										Width = 16,
 | 
				
			||||||
 | 
										Height = 16,
 | 
				
			||||||
 | 
										Format = TextureFormat.R8G8B8A8,
 | 
				
			||||||
 | 
										Depth = 1,
 | 
				
			||||||
 | 
										LevelCount = 1,
 | 
				
			||||||
 | 
										SampleCount = (SampleCount)i,
 | 
				
			||||||
 | 
										UsageFlags = TextureUsageFlags.ColorTarget | TextureUsageFlags.Sampler,
 | 
				
			||||||
 | 
										IsCube = true
 | 
				
			||||||
 | 
									};
 | 
				
			||||||
 | 
									renderTargets[i] = new Texture(GraphicsDevice, cubeCreateInfo);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create samplers
 | 
				
			||||||
 | 
								sampler = new Sampler(GraphicsDevice, SamplerCreateInfo.PointClamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create and populate the GPU resources
 | 
				
			||||||
 | 
								vertexBuffer = Buffer.Create<PositionVertex>(GraphicsDevice, BufferUsageFlags.Vertex, 24);
 | 
				
			||||||
 | 
								indexBuffer = Buffer.Create<ushort>(GraphicsDevice, BufferUsageFlags.Index, 36);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
 | 
				
			||||||
 | 
								cmdbuf.SetBufferData(
 | 
				
			||||||
 | 
									vertexBuffer,
 | 
				
			||||||
 | 
									new PositionVertex[]
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, -10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, -10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, 10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, 10, -10)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, -10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, -10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, 10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, 10, 10)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, -10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, 10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, 10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, -10, 10)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, -10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, 10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, 10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, -10, 10)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, -10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, -10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, -10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, -10, -10)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, 10, -10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(-10, 10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, 10, 10)),
 | 
				
			||||||
 | 
										new PositionVertex(new Vector3(10, 10, -10))
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								cmdbuf.SetBufferData(
 | 
				
			||||||
 | 
									indexBuffer,
 | 
				
			||||||
 | 
									new ushort[]
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										 0,  1,  2,  0,  2,  3,
 | 
				
			||||||
 | 
										 6,  5,  4,  7,  6,  4,
 | 
				
			||||||
 | 
										 8,  9, 10,  8, 10, 11,
 | 
				
			||||||
 | 
										14, 13, 12, 15, 14, 12,
 | 
				
			||||||
 | 
										16, 17, 18, 16, 18, 19,
 | 
				
			||||||
 | 
										22, 21, 20, 23, 22, 20
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								GraphicsDevice.Submit(cmdbuf);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							protected override void Update(System.TimeSpan delta)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if (TestUtils.CheckButtonPressed(Inputs, TestUtils.ButtonType.Bottom))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									camPos.Z *= -1;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								SampleCount prevSampleCount = currentSampleCount;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (TestUtils.CheckButtonPressed(Inputs, TestUtils.ButtonType.Left))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									currentSampleCount -= 1;
 | 
				
			||||||
 | 
									if (currentSampleCount < 0)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										currentSampleCount = SampleCount.Eight;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (TestUtils.CheckButtonPressed(Inputs, TestUtils.ButtonType.Right))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									currentSampleCount += 1;
 | 
				
			||||||
 | 
									if (currentSampleCount > SampleCount.Eight)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										currentSampleCount = SampleCount.One;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (prevSampleCount != currentSampleCount)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									Logger.LogInfo("Setting sample count to: " + currentSampleCount);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							protected override void Draw(double alpha)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Matrix4x4 proj = Matrix4x4.CreatePerspectiveFieldOfView(
 | 
				
			||||||
 | 
									MathHelper.ToRadians(75f),
 | 
				
			||||||
 | 
									(float)MainWindow.Width / MainWindow.Height,
 | 
				
			||||||
 | 
									0.01f,
 | 
				
			||||||
 | 
									100f
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								Matrix4x4 view = Matrix4x4.CreateLookAt(
 | 
				
			||||||
 | 
									camPos,
 | 
				
			||||||
 | 
									Vector3.Zero,
 | 
				
			||||||
 | 
									Vector3.Up
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								TransformVertexUniform vertUniforms = new TransformVertexUniform(view * proj);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
 | 
				
			||||||
 | 
								Texture? backbuffer = cmdbuf.AcquireSwapchainTexture(MainWindow);
 | 
				
			||||||
 | 
								if (backbuffer != null)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									// Get a reference to the RT for the given sample count
 | 
				
			||||||
 | 
									int rtIndex = (int) currentSampleCount;
 | 
				
			||||||
 | 
									Texture rt = renderTargets[rtIndex];
 | 
				
			||||||
 | 
									ColorAttachmentInfo rtAttachmentInfo = new ColorAttachmentInfo(
 | 
				
			||||||
 | 
										rt,
 | 
				
			||||||
 | 
										Color.Black
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Render a triangle to each slice of the cubemap
 | 
				
			||||||
 | 
									for (uint i = 0; i < 6; i += 1)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										rtAttachmentInfo.Layer = i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										cmdbuf.BeginRenderPass(rtAttachmentInfo);
 | 
				
			||||||
 | 
										cmdbuf.BindGraphicsPipeline(msaaPipelines[rtIndex]);
 | 
				
			||||||
 | 
										cmdbuf.DrawPrimitives(0, 1, 0, 0);
 | 
				
			||||||
 | 
										cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cmdbuf.BeginRenderPass(new ColorAttachmentInfo(backbuffer, Color.Black));
 | 
				
			||||||
 | 
									cmdbuf.BindGraphicsPipeline(cubemapPipeline);
 | 
				
			||||||
 | 
									cmdbuf.BindVertexBuffers(vertexBuffer);
 | 
				
			||||||
 | 
									cmdbuf.BindIndexBuffer(indexBuffer, IndexElementSize.Sixteen);
 | 
				
			||||||
 | 
									cmdbuf.BindFragmentSamplers(new TextureSamplerBinding(rt, sampler));
 | 
				
			||||||
 | 
									uint vertexUniformOffset = cmdbuf.PushVertexShaderUniforms(vertUniforms);
 | 
				
			||||||
 | 
									cmdbuf.DrawIndexedPrimitives(0, 0, 12, vertexUniformOffset, 0);
 | 
				
			||||||
 | 
									cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								GraphicsDevice.Submit(cmdbuf);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static void Main(string[] args)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								MSAACubeGame game = new MSAACubeGame();
 | 
				
			||||||
 | 
								game.Run();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -5,32 +5,20 @@
 | 
				
			||||||
    	<Message Text="Runtime ID: $(RuntimeIdentifier)" Importance="high"/>
 | 
					    	<Message Text="Runtime ID: $(RuntimeIdentifier)" Importance="high"/>
 | 
				
			||||||
	</Target>
 | 
						</Target>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<ItemGroup>
 | 
					 | 
				
			||||||
		<Content Include="..\..\moonlibs\video_shaders\video_fullscreen.vert.refresh">
 | 
					 | 
				
			||||||
			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
					 | 
				
			||||||
			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
					 | 
				
			||||||
		</Content>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<Content Include="..\..\moonlibs\video_shaders\video_yuv2rgba.frag.refresh">
 | 
					 | 
				
			||||||
			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
					 | 
				
			||||||
			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
					 | 
				
			||||||
		</Content>
 | 
					 | 
				
			||||||
	</ItemGroup>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	<ItemGroup Condition="$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))">
 | 
						<ItemGroup Condition="$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))">
 | 
				
			||||||
		<Content Include="..\..\moonlibs\windows\FAudio.dll">
 | 
							<Content Include="..\..\moonlibs\x64\FAudio.dll">
 | 
				
			||||||
			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
								<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
				
			||||||
			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
								<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
				
			||||||
		</Content>
 | 
							</Content>
 | 
				
			||||||
		<Content Include="..\..\moonlibs\windows\Refresh.dll">
 | 
							<Content Include="..\..\moonlibs\x64\Refresh.dll">
 | 
				
			||||||
			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
								<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
				
			||||||
			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
								<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
				
			||||||
		</Content>
 | 
							</Content>
 | 
				
			||||||
		<Content Include="..\..\moonlibs\windows\SDL2.dll">
 | 
							<Content Include="..\..\moonlibs\x64\SDL2.dll">
 | 
				
			||||||
			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
								<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
				
			||||||
			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
								<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
				
			||||||
		</Content>
 | 
							</Content>
 | 
				
			||||||
		<Content Include="..\..\moonlibs\windows\dav1dfile.dll">
 | 
							<Content Include="..\..\moonlibs\x64\dav1dfile.dll">
 | 
				
			||||||
			<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
								<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
 | 
				
			||||||
			<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
								<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
 | 
				
			||||||
		</Content>
 | 
							</Content>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,132 +57,144 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicStencil", "BasicStenci
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DepthMSAA", "DepthMSAA\DepthMSAA.csproj", "{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DepthMSAA", "DepthMSAA\DepthMSAA.csproj", "{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowResizing", "WindowResizing\WindowResizing.csproj", "{AF5F2804-663D-4C46-BD02-AB178002180B}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowResizing", "WindowResizing\WindowResizing.csproj", "{AF5F2804-663D-4C46-BD02-AB178002180B}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StoreLoad", "StoreLoad\StoreLoad.csproj", "{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}"
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StoreLoad", "StoreLoad\StoreLoad.csproj", "{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RenderTexture2D", "RenderTexture2D\RenderTexture2D.csproj", "{F9C9E15D-1000-46DA-BA39-1D4C0D43F023}"
 | 
				
			||||||
 | 
					EndProject
 | 
				
			||||||
 | 
					Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MSAACube", "MSAACube\MSAACube.csproj", "{A1568AAF-DD02-4A6E-9C68-9AE07130A60D}"
 | 
				
			||||||
EndProject
 | 
					EndProject
 | 
				
			||||||
Global
 | 
					Global
 | 
				
			||||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
						GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
				
			||||||
		Debug|x64 = Debug|x64
 | 
							Debug|Any CPU = Debug|Any CPU
 | 
				
			||||||
		Release|x64 = Release|x64
 | 
							Release|Any CPU = Release|Any CPU
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
						GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
				
			||||||
		{595FE5AC-8699-494D-816A-89A2DE3786FB}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{595FE5AC-8699-494D-816A-89A2DE3786FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{595FE5AC-8699-494D-816A-89A2DE3786FB}.Debug|x64.Build.0 = Debug|x64
 | 
							{595FE5AC-8699-494D-816A-89A2DE3786FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{595FE5AC-8699-494D-816A-89A2DE3786FB}.Release|x64.ActiveCfg = Release|x64
 | 
							{595FE5AC-8699-494D-816A-89A2DE3786FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{595FE5AC-8699-494D-816A-89A2DE3786FB}.Release|x64.Build.0 = Release|x64
 | 
							{595FE5AC-8699-494D-816A-89A2DE3786FB}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Debug|x64.Build.0 = Debug|x64
 | 
							{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Release|x64.ActiveCfg = Release|x64
 | 
							{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Release|x64.Build.0 = Release|x64
 | 
							{C9B46D3A-1FA4-426E-BF84-F068FD6E0CC4}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Debug|x64.Build.0 = Debug|x64
 | 
							{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Release|x64.ActiveCfg = Release|x64
 | 
							{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Release|x64.Build.0 = Release|x64
 | 
							{3EB54E8A-3C4E-4EE2-9DD2-6D345A92319A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{6567E2AD-189C-4994-9A27-72FB57546B8A}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{6567E2AD-189C-4994-9A27-72FB57546B8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{6567E2AD-189C-4994-9A27-72FB57546B8A}.Debug|x64.Build.0 = Debug|x64
 | 
							{6567E2AD-189C-4994-9A27-72FB57546B8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{6567E2AD-189C-4994-9A27-72FB57546B8A}.Release|x64.ActiveCfg = Release|x64
 | 
							{6567E2AD-189C-4994-9A27-72FB57546B8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{6567E2AD-189C-4994-9A27-72FB57546B8A}.Release|x64.Build.0 = Release|x64
 | 
							{6567E2AD-189C-4994-9A27-72FB57546B8A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{550D1B95-B475-4EF8-A235-626505D7710F}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{550D1B95-B475-4EF8-A235-626505D7710F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{550D1B95-B475-4EF8-A235-626505D7710F}.Debug|x64.Build.0 = Debug|x64
 | 
							{550D1B95-B475-4EF8-A235-626505D7710F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{550D1B95-B475-4EF8-A235-626505D7710F}.Release|x64.ActiveCfg = Release|x64
 | 
							{550D1B95-B475-4EF8-A235-626505D7710F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{550D1B95-B475-4EF8-A235-626505D7710F}.Release|x64.Build.0 = Release|x64
 | 
							{550D1B95-B475-4EF8-A235-626505D7710F}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{970D18B0-0D05-4360-8208-41A2769C647E}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{970D18B0-0D05-4360-8208-41A2769C647E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{970D18B0-0D05-4360-8208-41A2769C647E}.Debug|x64.Build.0 = Debug|x64
 | 
							{970D18B0-0D05-4360-8208-41A2769C647E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{970D18B0-0D05-4360-8208-41A2769C647E}.Release|x64.ActiveCfg = Release|x64
 | 
							{970D18B0-0D05-4360-8208-41A2769C647E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{970D18B0-0D05-4360-8208-41A2769C647E}.Release|x64.Build.0 = Release|x64
 | 
							{970D18B0-0D05-4360-8208-41A2769C647E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Debug|x64.Build.0 = Debug|x64
 | 
							{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Release|x64.ActiveCfg = Release|x64
 | 
							{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Release|x64.Build.0 = Release|x64
 | 
							{B9DE9133-9C1C-4592-927A-D3485CB493A2}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Debug|x64.Build.0 = Debug|x64
 | 
							{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Release|x64.ActiveCfg = Release|x64
 | 
							{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Release|x64.Build.0 = Release|x64
 | 
							{22173AEA-9E5A-4DA8-B943-DEC1EA67232F}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Debug|x64.Build.0 = Debug|x64
 | 
							{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Release|x64.ActiveCfg = Release|x64
 | 
							{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Release|x64.Build.0 = Release|x64
 | 
							{7EC935B1-DCD1-4ADD-96C8-614B4CA76501}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Debug|x64.Build.0 = Debug|x64
 | 
							{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Release|x64.ActiveCfg = Release|x64
 | 
							{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Release|x64.Build.0 = Release|x64
 | 
							{37BDB4E6-FCDC-4F04-A9E3-C6B9D6C3AB4E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Debug|x64.Build.0 = Debug|x64
 | 
							{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Release|x64.ActiveCfg = Release|x64
 | 
							{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Release|x64.Build.0 = Release|x64
 | 
							{1695B1D8-4935-490C-A5EC-E2F2AA94B150}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Debug|x64.Build.0 = Debug|x64
 | 
							{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Release|x64.ActiveCfg = Release|x64
 | 
							{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Release|x64.Build.0 = Release|x64
 | 
							{C3808AFD-23DD-4622-BFA7-981A344D0C19}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Debug|x64.Build.0 = Debug|x64
 | 
							{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Release|x64.ActiveCfg = Release|x64
 | 
							{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Release|x64.Build.0 = Release|x64
 | 
							{68D47057-BBCB-4F86-9C0A-D6D730B18D9E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Debug|x64.Build.0 = Debug|x64
 | 
							{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Release|x64.ActiveCfg = Release|x64
 | 
							{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Release|x64.Build.0 = Release|x64
 | 
							{5F8BBD49-6C39-4186-A4A3-91D6662D3ABD}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Debug|x64.Build.0 = Debug|x64
 | 
							{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Release|x64.ActiveCfg = Release|x64
 | 
							{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Release|x64.Build.0 = Release|x64
 | 
							{CA6E0ACF-3698-452F-B71F-51286EB5E1B2}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Debug|x64.Build.0 = Debug|x64
 | 
							{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Release|x64.ActiveCfg = Release|x64
 | 
							{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Release|x64.Build.0 = Release|x64
 | 
							{E90D236C-BD0F-4420-ADD0-867D21F4DCA5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Debug|x64.Build.0 = Debug|x64
 | 
							{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Release|x64.ActiveCfg = Release|x64
 | 
							{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Release|x64.Build.0 = Release|x64
 | 
							{CF25A5A2-A0BD-4C9B-BB07-19CCD97C1C4E}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Debug|x64.Build.0 = Debug|x64
 | 
							{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Release|x64.ActiveCfg = Release|x64
 | 
							{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Release|x64.Build.0 = Release|x64
 | 
							{FCD63849-9D3C-4D48-A8BD-39671096F03A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Debug|x64.Build.0 = Debug|x64
 | 
							{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Release|x64.ActiveCfg = Release|x64
 | 
							{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Release|x64.Build.0 = Release|x64
 | 
							{9D0F0573-7FD4-4480-8F9B-CDD52120A170}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Debug|x64.Build.0 = Debug|x64
 | 
							{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Release|x64.ActiveCfg = Release|x64
 | 
							{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Release|x64.Build.0 = Release|x64
 | 
							{5CDA8D41-F96C-4DE7-AD53-5A76C4C0CC31}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{C525B6DE-3003-45D5-BB83-89679B108C08}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{C525B6DE-3003-45D5-BB83-89679B108C08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{C525B6DE-3003-45D5-BB83-89679B108C08}.Debug|x64.Build.0 = Debug|x64
 | 
							{C525B6DE-3003-45D5-BB83-89679B108C08}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{C525B6DE-3003-45D5-BB83-89679B108C08}.Release|x64.ActiveCfg = Release|x64
 | 
							{C525B6DE-3003-45D5-BB83-89679B108C08}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{C525B6DE-3003-45D5-BB83-89679B108C08}.Release|x64.Build.0 = Release|x64
 | 
							{C525B6DE-3003-45D5-BB83-89679B108C08}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Debug|x64.Build.0 = Debug|x64
 | 
							{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Release|x64.ActiveCfg = Release|x64
 | 
							{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Release|x64.Build.0 = Release|x64
 | 
							{6D625A4C-8618-4DFC-A6AD-AA3BE3488D70}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{D7A8452F-123F-4965-8716-9E39F677A831}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{D7A8452F-123F-4965-8716-9E39F677A831}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{D7A8452F-123F-4965-8716-9E39F677A831}.Debug|x64.Build.0 = Debug|x64
 | 
							{D7A8452F-123F-4965-8716-9E39F677A831}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{D7A8452F-123F-4965-8716-9E39F677A831}.Release|x64.ActiveCfg = Release|x64
 | 
							{D7A8452F-123F-4965-8716-9E39F677A831}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{D7A8452F-123F-4965-8716-9E39F677A831}.Release|x64.Build.0 = Release|x64
 | 
							{D7A8452F-123F-4965-8716-9E39F677A831}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Debug|x64.Build.0 = Debug|x64
 | 
							{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Release|x64.ActiveCfg = Release|x64
 | 
							{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Release|x64.Build.0 = Release|x64
 | 
							{2219C628-5593-4C23-86CB-0E1E96EBD6C5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Debug|x64.Build.0 = Debug|x64
 | 
							{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Release|x64.ActiveCfg = Release|x64
 | 
							{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Release|x64.Build.0 = Release|x64
 | 
							{5A1AC35B-EF18-426D-A633-D4899E84EAA7}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Debug|x64.Build.0 = Debug|x64
 | 
							{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Release|x64.ActiveCfg = Release|x64
 | 
							{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Release|x64.Build.0 = Release|x64
 | 
							{1B370BAD-966A-49B2-9EA0-2463F6C8F9AD}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Debug|x64.Build.0 = Debug|x64
 | 
							{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Release|x64.ActiveCfg = Release|x64
 | 
							{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Release|x64.Build.0 = Release|x64
 | 
							{B36C9F65-F3F4-4EB4-8EBF-A1EDCD4261F8}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{AF5F2804-663D-4C46-BD02-AB178002180B}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{AF5F2804-663D-4C46-BD02-AB178002180B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{AF5F2804-663D-4C46-BD02-AB178002180B}.Debug|x64.Build.0 = Debug|x64
 | 
							{AF5F2804-663D-4C46-BD02-AB178002180B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{AF5F2804-663D-4C46-BD02-AB178002180B}.Release|x64.ActiveCfg = Release|Any CPU
 | 
							{AF5F2804-663D-4C46-BD02-AB178002180B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{AF5F2804-663D-4C46-BD02-AB178002180B}.Release|x64.Build.0 = Release|Any CPU
 | 
							{AF5F2804-663D-4C46-BD02-AB178002180B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
		{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Debug|x64.ActiveCfg = Debug|x64
 | 
							{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
		{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Debug|x64.Build.0 = Debug|x64
 | 
							{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
		{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Release|x64.ActiveCfg = Release|x64
 | 
							{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
		{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Release|x64.Build.0 = Release|x64
 | 
							{CD31F1B5-C76A-428A-A812-8DFD6CAB20A9}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{F9C9E15D-1000-46DA-BA39-1D4C0D43F023}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{F9C9E15D-1000-46DA-BA39-1D4C0D43F023}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{F9C9E15D-1000-46DA-BA39-1D4C0D43F023}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{F9C9E15D-1000-46DA-BA39-1D4C0D43F023}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
 | 
							{A1568AAF-DD02-4A6E-9C68-9AE07130A60D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
				
			||||||
 | 
							{A1568AAF-DD02-4A6E-9C68-9AE07130A60D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
				
			||||||
 | 
							{A1568AAF-DD02-4A6E-9C68-9AE07130A60D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
				
			||||||
 | 
							{A1568AAF-DD02-4A6E-9C68-9AE07130A60D}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
				
			||||||
	EndGlobalSection
 | 
						EndGlobalSection
 | 
				
			||||||
	GlobalSection(SolutionProperties) = preSolution
 | 
						GlobalSection(SolutionProperties) = preSolution
 | 
				
			||||||
		HideSolutionNode = FALSE
 | 
							HideSolutionNode = FALSE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										12
									
								
								README.md
								
								
								
								
							
							
						
						
									
										12
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -16,6 +16,10 @@ Sets up a graphics pipeline and draws a triangle without vertex buffers. (The ve
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Similar to above, but using a MoonWorks vertex buffer and custom vertex structs.
 | 
					Similar to above, but using a MoonWorks vertex buffer and custom vertex structs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**StoreLoad**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Draws a triangle to the screen in one render pass, stores the attachment, and then loads the attachment again. Tests that load/store operations work as expected.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**TexturedQuad**
 | 
					**TexturedQuad**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Draws a textured quad to the screen. Tests texture binding, index buffers, and sampler states.
 | 
					Draws a textured quad to the screen. Tests texture binding, index buffers, and sampler states.
 | 
				
			||||||
| 
						 | 
					@ -80,6 +84,10 @@ Displays a quad that can be scaled to reveal various mip levels. The mips are ge
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Displays a triangle whose colors are driven by sampling a texture in the vertex shader.
 | 
					Displays a triangle whose colors are driven by sampling a texture in the vertex shader.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**RenderTexture2D**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clears and draws 4 render textures to the screen. Tests binding and sampling 2D render textures.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**RenderTexture3D**
 | 
					**RenderTexture3D**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Fades through 2D slices of a 3D render texture. Tests binding and sampling 3D render textures.
 | 
					Fades through 2D slices of a 3D render texture. Tests binding and sampling 3D render textures.
 | 
				
			||||||
| 
						 | 
					@ -100,6 +108,10 @@ Demonstrates stencil masking using two triangles. Tests stencil buffers and basi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Displays two cubes floating around each other on a multisampled surface. Tests multisampled depth buffers.
 | 
					Displays two cubes floating around each other on a multisampled surface. Tests multisampled depth buffers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**MSAACube**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Same as RenderTextureCube, but with MSAA cube RTs. Draws triangles to each cubemap face so there's something to see. Tests cube render target MSAA.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**WindowResizing**
 | 
					**WindowResizing**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Tests resizing the window to various resolutions.
 | 
					Tests resizing the window to various resolutions.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					<Project Sdk="Microsoft.NET.Sdk">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<ItemGroup>
 | 
				
			||||||
 | 
							<ProjectReference Include="..\..\MoonWorks\MoonWorks.csproj" />
 | 
				
			||||||
 | 
							<ProjectReference Include="..\MoonWorks.Test.Common\MoonWorks.Test.Common.csproj" />
 | 
				
			||||||
 | 
						</ItemGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<PropertyGroup>
 | 
				
			||||||
 | 
							<OutputType>Exe</OutputType>
 | 
				
			||||||
 | 
							<TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
 | 
							<Nullable>enable</Nullable>
 | 
				
			||||||
 | 
						</PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<Import Project="$(SolutionDir)NativeAOT_Console.targets" Condition="Exists('$(SolutionDir)NativeAOT_Console.targets')" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</Project>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,131 @@
 | 
				
			||||||
 | 
					using MoonWorks;
 | 
				
			||||||
 | 
					using MoonWorks.Graphics;
 | 
				
			||||||
 | 
					using MoonWorks.Math.Float;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace MoonWorks.Test
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						class RenderTexture2DGame : Game
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							private GraphicsPipeline pipeline;
 | 
				
			||||||
 | 
							private Buffer vertexBuffer;
 | 
				
			||||||
 | 
							private Buffer indexBuffer;
 | 
				
			||||||
 | 
							private Texture[] textures = new Texture[4];
 | 
				
			||||||
 | 
							private Sampler sampler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public RenderTexture2DGame() : base(TestUtils.GetStandardWindowCreateInfo(), TestUtils.GetStandardFrameLimiterSettings(), 60, true)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								// Load the shaders
 | 
				
			||||||
 | 
								ShaderModule vertShaderModule = new ShaderModule(GraphicsDevice, TestUtils.GetShaderPath("TexturedQuad.vert"));
 | 
				
			||||||
 | 
								ShaderModule fragShaderModule = new ShaderModule(GraphicsDevice, TestUtils.GetShaderPath("TexturedQuad.frag"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create the graphics pipeline
 | 
				
			||||||
 | 
								GraphicsPipelineCreateInfo pipelineCreateInfo = TestUtils.GetStandardGraphicsPipelineCreateInfo(
 | 
				
			||||||
 | 
									MainWindow.SwapchainFormat,
 | 
				
			||||||
 | 
									vertShaderModule,
 | 
				
			||||||
 | 
									fragShaderModule
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								pipelineCreateInfo.VertexInputState = VertexInputState.CreateSingleBinding<PositionTextureVertex>();
 | 
				
			||||||
 | 
								pipelineCreateInfo.VertexShaderInfo = GraphicsShaderInfo.Create(vertShaderModule, "main", 0);
 | 
				
			||||||
 | 
								pipelineCreateInfo.FragmentShaderInfo.SamplerBindingCount = 1;
 | 
				
			||||||
 | 
								pipeline = new GraphicsPipeline(GraphicsDevice, pipelineCreateInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create sampler
 | 
				
			||||||
 | 
								SamplerCreateInfo samplerCreateInfo = SamplerCreateInfo.PointClamp;
 | 
				
			||||||
 | 
								sampler = new Sampler(GraphicsDevice, samplerCreateInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Create and populate the GPU resources
 | 
				
			||||||
 | 
								vertexBuffer = Buffer.Create<PositionTextureVertex>(GraphicsDevice, BufferUsageFlags.Vertex, 16);
 | 
				
			||||||
 | 
								indexBuffer = Buffer.Create<ushort>(GraphicsDevice, BufferUsageFlags.Index, 6);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								for (int i = 0; i < textures.Length; i += 1)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									textures[i] = Texture.CreateTexture2D(
 | 
				
			||||||
 | 
										GraphicsDevice,
 | 
				
			||||||
 | 
										MainWindow.Width / 4,
 | 
				
			||||||
 | 
										MainWindow.Height / 4,
 | 
				
			||||||
 | 
										TextureFormat.R8G8B8A8,
 | 
				
			||||||
 | 
										TextureUsageFlags.ColorTarget | TextureUsageFlags.Sampler
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
 | 
				
			||||||
 | 
								cmdbuf.SetBufferData(
 | 
				
			||||||
 | 
									vertexBuffer,
 | 
				
			||||||
 | 
									new PositionTextureVertex[]
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(-1, -1, 0), new Vector2(0, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, -1, 0), new Vector2(1, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, 0, 0), new Vector2(1, 1)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(-1, 0, 0), new Vector2(0, 1)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, -1, 0), new Vector2(0, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(1, -1, 0), new Vector2(1, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(1, 0, 0), new Vector2(1, 1)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, 0, 0), new Vector2(0, 1)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(-1, 0, 0), new Vector2(0, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, 0, 0), new Vector2(1, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, 1, 0), new Vector2(1, 1)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(-1, 1, 0), new Vector2(0, 1)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, 0, 0), new Vector2(0, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(1, 0, 0), new Vector2(1, 0)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(1, 1, 0), new Vector2(1, 1)),
 | 
				
			||||||
 | 
										new PositionTextureVertex(new Vector3(0, 1, 0), new Vector2(0, 1)),
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								cmdbuf.SetBufferData(
 | 
				
			||||||
 | 
									indexBuffer,
 | 
				
			||||||
 | 
									new ushort[]
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										0, 1, 2,
 | 
				
			||||||
 | 
										0, 2, 3,
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								GraphicsDevice.Submit(cmdbuf);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							protected override void Update(System.TimeSpan delta) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							protected override void Draw(double alpha)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
 | 
				
			||||||
 | 
								Texture? backbuffer = cmdbuf.AcquireSwapchainTexture(MainWindow);
 | 
				
			||||||
 | 
								if (backbuffer != null)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									cmdbuf.BeginRenderPass(new ColorAttachmentInfo(textures[0], Color.Red));
 | 
				
			||||||
 | 
									cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cmdbuf.BeginRenderPass(new ColorAttachmentInfo(textures[1], Color.Blue));
 | 
				
			||||||
 | 
									cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cmdbuf.BeginRenderPass(new ColorAttachmentInfo(textures[2], Color.Green));
 | 
				
			||||||
 | 
									cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cmdbuf.BeginRenderPass(new ColorAttachmentInfo(textures[3], Color.Yellow));
 | 
				
			||||||
 | 
									cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cmdbuf.BeginRenderPass(new ColorAttachmentInfo(backbuffer, Color.Black));
 | 
				
			||||||
 | 
									cmdbuf.BindGraphicsPipeline(pipeline);
 | 
				
			||||||
 | 
									cmdbuf.BindVertexBuffers(vertexBuffer);
 | 
				
			||||||
 | 
									cmdbuf.BindIndexBuffer(indexBuffer, IndexElementSize.Sixteen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									for (uint i = 0; i < textures.Length; i += 1)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										cmdbuf.BindFragmentSamplers(new TextureSamplerBinding(textures[i], sampler));
 | 
				
			||||||
 | 
										cmdbuf.DrawIndexedPrimitives(4 * i, 0, 2, 0, 0);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									cmdbuf.EndRenderPass();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								GraphicsDevice.Submit(cmdbuf);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static void Main(string[] args)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								RenderTexture2DGame game = new RenderTexture2DGame();
 | 
				
			||||||
 | 
								game.Run();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,6 @@
 | 
				
			||||||
		<OutputType>Exe</OutputType>
 | 
							<OutputType>Exe</OutputType>
 | 
				
			||||||
		<TargetFramework>net8.0</TargetFramework>
 | 
							<TargetFramework>net8.0</TargetFramework>
 | 
				
			||||||
		<Nullable>enable</Nullable>
 | 
							<Nullable>enable</Nullable>
 | 
				
			||||||
		<Platforms>x64</Platforms>
 | 
					 | 
				
			||||||
	</PropertyGroup>
 | 
						</PropertyGroup>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<Import Project="$(SolutionDir)NativeAOT_Console.targets" Condition="Exists('$(SolutionDir)NativeAOT_Console.targets')" />
 | 
						<Import Project="$(SolutionDir)NativeAOT_Console.targets" Condition="Exists('$(SolutionDir)NativeAOT_Console.targets')" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -120,7 +120,7 @@ namespace MoonWorks.Test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		protected override void Draw(double alpha)
 | 
							protected override void Draw(double alpha)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
            FragUniform fragUniform = new FragUniform((float) currentDepth / texture.Depth);
 | 
								FragUniform fragUniform = new FragUniform((float)currentDepth / texture.Depth + 0.01f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
 | 
								CommandBuffer cmdbuf = GraphicsDevice.AcquireCommandBuffer();
 | 
				
			||||||
			Texture? backbuffer = cmdbuf.AcquireSwapchainTexture(MainWindow);
 | 
								Texture? backbuffer = cmdbuf.AcquireSwapchainTexture(MainWindow);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue