protected override void LoadContent() { shadowMapEffect = new ShadowMapEffect(Content.Load<Effect>("ShadowMap")); drawModelEffect = new DrawModelEffect(Content.Load<Effect>("DrawModel")); drawModelEffect.LightDirection = lightDirection; drawModelEffect.DepthBias = 0.001f; drawModelEffect.AmbientColor = new Vector4(0.15f, 0.15f, 0.15f, 1.0f); spriteBatch = new SpriteBatch(GraphicsDevice); spriteFont = Content.Load<SpriteFont>("hudFont"); gridModel = Content.Load<Model>("grid"); dudeModel = Content.Load<Model>("dude"); // 基礎的なシャドウ マップは R 値のみを用いる。 bsmRenderTarget = new RenderTarget2D( GraphicsDevice, shadowMapSize, shadowMapSize, false, SurfaceFormat.Single, DepthFormat.Depth24Stencil8); // VSM は RG 値の二つを用いる。 vsmRenderTarget = new RenderTarget2D( GraphicsDevice, shadowMapSize, shadowMapSize, false, SurfaceFormat.Vector2, DepthFormat.Depth24Stencil8); // ガウシアン ブラーは VSM で用いるため、 // 内部で使用するレンダ ターゲットは VSM に合わせる。 gaussianBlur = new GaussianBlur(GraphicsDevice, vsmRenderTarget.Width, vsmRenderTarget.Height, SurfaceFormat.Vector2, Content.Load<Effect>("GaussianBlur")); gaussianBlur.Radius = 4; gaussianBlur.Amount = 16; }
protected override void LoadContent() { shadowMapEffect = new ShadowMapEffect(Content.Load<Effect>("ShadowMap")); gaussianBlurEffect = Content.Load<Effect>("GaussianBlur"); drawModelEffect = new DrawModelEffect(Content.Load<Effect>("DrawModel")); drawModelEffect.AmbientColor = new Vector4(0.15f, 0.15f, 0.15f, 1.0f); drawModelEffect.DepthBias = 0.001f; drawModelEffect.LightDirection = lightDirection; drawModelEffect.ShadowColor = new Vector3(0.5f, 0.5f, 0.5f); spriteBatch = new SpriteBatch(GraphicsDevice); spriteFont = Content.Load<SpriteFont>("hudFont"); gridModel = Content.Load<Model>("grid"); dudeModel = Content.Load<Model>("dude"); dudeBoxLocal = BoundingBoxHelper.Empty; foreach (var mesh in dudeModel.Meshes) { BoundingBoxHelper.Merge(ref dudeBoxLocal, BoundingBox.CreateFromSphere(mesh.BoundingSphere)); } for (int i = 0; i < shadowMaps.Length; i++) { shadowMaps[i] = new ShadowMap(GraphicsDevice, shadowMapEffect); } }