3D XNA oyununa gölge eklemeyi denemek istiyorum. Bir ışık ve bir kamera ile bazı test ortamları kurdum. Ancak, yaklaşımımla eserler ile karşılaşıyorum.
Ben gelen gölgelendirici kodu kullanıyorum http://pastebin.com/zXi0hmsU nihai sonucu işlemek için ve http://pastebin.com/rY4Gcj9N gölge haritalar oluşturmak için. Kod oldukça basittir ve ışık haritasından derinlik haritasının üretimini, daha sonra kamera alanına yansıtmasını ve oklüzyonları kontrol etmeyi içerir.
Ancak, çoğu açıdan oldukça çirkin sonuçlar alıyorum
Sahne, bazı basit küplerden (elle inşa edilmiş, dışa dönük, arka yüz culled), bir ışıktan (sol üst köşede gösterilen gölge haritası - iyi görünüyor) ve bir kameradan oluşur.
Gölge haritaları için RenderTarget'ım
int shadowMapSize = 512;
RenderTarget2D shadowMap = new RenderTarget2D(GraphicsDevice, shadowMapSize,
shadowMapSize, true, GraphicsDevice.PresentationParameters.BackBufferFormat,
DepthFormat.Depth24Stencil8);
GraphicsDevice.SetRenderTarget(shadowMap);
GraphicsDevice.Clear(Color.White);
GraphicsDevice.DepthStencilState = DepthStencilState.Default;
Daha sonra CreateShadowMap
efekt uygulanır, ardından LambertWithShadows etkisi gelir. Son olarak, gölge haritası a SpriteBatch
.
Kodun geri kalanı gölgelendiricilere doğru değerleri sağlamaktan ibarettir. Gerekirse, ben de sağlayabilirim.