tone mapping
							parent
							
								
									a341d3ba93
								
							
						
					
					
						commit
						3389897d08
					
				
										
											Binary file not shown.
										
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | sampler TextureSampler : register(s0); | ||||||
|  | 
 | ||||||
|  | float4 main_ps(float2 texCoord : TEXCOORD0) : COLOR0 | ||||||
|  | { | ||||||
|  |     float3 color = tex2D(TextureSampler, texCoord).xyz; | ||||||
|  | 
 | ||||||
|  |     color = color / (color + float3(1.0, 1.0, 1.0)); | ||||||
|  |     float exposureConstant = 1.0 / 2.2; | ||||||
|  |     color = pow(color, float3(exposureConstant, exposureConstant, exposureConstant)); | ||||||
|  | 
 | ||||||
|  |     return float4(color, 1.0); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Technique DeferredPBR | ||||||
|  | { | ||||||
|  |     Pass | ||||||
|  |     { | ||||||
|  |         PixelShader = compile ps_3_0 main_ps(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -27,6 +27,9 @@ | ||||||
|     <EmbeddedResource Include="Effects\FXB\DeferredPBR_GBufferEffect.fxb"> |     <EmbeddedResource Include="Effects\FXB\DeferredPBR_GBufferEffect.fxb"> | ||||||
|       <LogicalName>Kav.Resources.DeferredPBR_GBufferEffect.fxb</LogicalName> |       <LogicalName>Kav.Resources.DeferredPBR_GBufferEffect.fxb</LogicalName> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
|  |     <EmbeddedResource Include="Effects\FXB\ToneMapEffect.fxb"> | ||||||
|  |       <LogicalName>Kav.Resources.ToneMapEffect.fxb</LogicalName> | ||||||
|  |     </EmbeddedResource> | ||||||
|     <EmbeddedResource Include="Effects\FXB\DeferredPBREffect.fxb"> |     <EmbeddedResource Include="Effects\FXB\DeferredPBREffect.fxb"> | ||||||
|       <LogicalName>Kav.Resources.DeferredPBREffect.fxb</LogicalName> |       <LogicalName>Kav.Resources.DeferredPBREffect.fxb</LogicalName> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
|  |  | ||||||
|  | @ -27,6 +27,9 @@ | ||||||
|     <EmbeddedResource Include="Effects\FXB\DeferredPBR_GBufferEffect.fxb"> |     <EmbeddedResource Include="Effects\FXB\DeferredPBR_GBufferEffect.fxb"> | ||||||
|       <LogicalName>Kav.Resources.DeferredPBR_GBufferEffect.fxb</LogicalName> |       <LogicalName>Kav.Resources.DeferredPBR_GBufferEffect.fxb</LogicalName> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
|  |     <EmbeddedResource Include="Effects\FXB\ToneMapEffect.fxb"> | ||||||
|  |       <LogicalName>Kav.Resources.ToneMapEffect.fxb</LogicalName> | ||||||
|  |     </EmbeddedResource> | ||||||
|     <EmbeddedResource Include="Effects\FXB\DeferredPBREffect.fxb"> |     <EmbeddedResource Include="Effects\FXB\DeferredPBREffect.fxb"> | ||||||
|       <LogicalName>Kav.Resources.DeferredPBREffect.fxb</LogicalName> |       <LogicalName>Kav.Resources.DeferredPBREffect.fxb</LogicalName> | ||||||
|     </EmbeddedResource> |     </EmbeddedResource> | ||||||
|  |  | ||||||
|  | @ -25,6 +25,7 @@ namespace Kav | ||||||
|         private DeferredPBR_PointLightEffect DeferredPointLightEffect { get; } |         private DeferredPBR_PointLightEffect DeferredPointLightEffect { get; } | ||||||
|         private DeferredPBR_DirectionalLightEffect DeferredDirectionalLightEffect { get; } |         private DeferredPBR_DirectionalLightEffect DeferredDirectionalLightEffect { get; } | ||||||
|         private SimpleDepthEffect SimpleDepthEffect { get; } |         private SimpleDepthEffect SimpleDepthEffect { get; } | ||||||
|  |         private Effect ToneMapEffect { get; } | ||||||
| 
 | 
 | ||||||
|         private RenderTarget2D gPosition { get; } |         private RenderTarget2D gPosition { get; } | ||||||
|         private RenderTarget2D gNormal { get; } |         private RenderTarget2D gNormal { get; } | ||||||
|  | @ -133,8 +134,8 @@ namespace Kav | ||||||
|             DeferredAmbientLightEffect = new DeferredPBR_AmbientLightEffect(GraphicsDevice); |             DeferredAmbientLightEffect = new DeferredPBR_AmbientLightEffect(GraphicsDevice); | ||||||
|             DeferredPointLightEffect = new DeferredPBR_PointLightEffect(GraphicsDevice); |             DeferredPointLightEffect = new DeferredPBR_PointLightEffect(GraphicsDevice); | ||||||
|             DeferredDirectionalLightEffect = new DeferredPBR_DirectionalLightEffect(GraphicsDevice); |             DeferredDirectionalLightEffect = new DeferredPBR_DirectionalLightEffect(GraphicsDevice); | ||||||
| 
 |  | ||||||
|             DeferredDirectionalLightEffect.ShadowMapSize = ShadowMapSize; |             DeferredDirectionalLightEffect.ShadowMapSize = ShadowMapSize; | ||||||
|  |             ToneMapEffect = new Effect(graphicsDevice, Resources.ToneMapEffect); | ||||||
| 
 | 
 | ||||||
|             FullscreenTriangle = new VertexBuffer(GraphicsDevice, typeof(VertexPositionTexture), 3, BufferUsage.WriteOnly); |             FullscreenTriangle = new VertexBuffer(GraphicsDevice, typeof(VertexPositionTexture), 3, BufferUsage.WriteOnly); | ||||||
|             FullscreenTriangle.SetData(new VertexPositionTexture[3] { |             FullscreenTriangle.SetData(new VertexPositionTexture[3] { | ||||||
|  | @ -223,7 +224,7 @@ namespace Kav | ||||||
| 
 | 
 | ||||||
|             GraphicsDevice.SetRenderTarget(null); |             GraphicsDevice.SetRenderTarget(null); | ||||||
|             GraphicsDevice.Clear(Color.Black); |             GraphicsDevice.Clear(Color.Black); | ||||||
|             SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque); |             SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque, null, null, null, ToneMapEffect); | ||||||
|             SpriteBatch.Draw(ColorRenderTarget, Vector2.Zero, Color.White); |             SpriteBatch.Draw(ColorRenderTarget, Vector2.Zero, Color.White); | ||||||
|             SpriteBatch.End(); |             SpriteBatch.End(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
							
								
								
									
										13
									
								
								Resources.cs
								
								
								
								
							
							
						
						
									
										13
									
								
								Resources.cs
								
								
								
								
							|  | @ -51,6 +51,18 @@ namespace Kav | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public static byte[] ToneMapEffect | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 if (toneMapEffect == null) | ||||||
|  |                 { | ||||||
|  |                     toneMapEffect = GetResource("ToneMapEffect"); | ||||||
|  |                 } | ||||||
|  |                 return toneMapEffect; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         public static byte[] DeferredPBREffect |         public static byte[] DeferredPBREffect | ||||||
|         { |         { | ||||||
|             get |             get | ||||||
|  | @ -91,6 +103,7 @@ namespace Kav | ||||||
|         private static byte[] pointLightEffect; |         private static byte[] pointLightEffect; | ||||||
|         private static byte[] directionalLightEffect; |         private static byte[] directionalLightEffect; | ||||||
|         private static byte[] gBufferEffect; |         private static byte[] gBufferEffect; | ||||||
|  |         private static byte[] toneMapEffect; | ||||||
|         private static byte[] deferredPBREffect; |         private static byte[] deferredPBREffect; | ||||||
|         private static byte[] pbrEffect; |         private static byte[] pbrEffect; | ||||||
|         private static byte[] simpleDepthEffect; |         private static byte[] simpleDepthEffect; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue