Fusion.Engine.Graphics.Camera.SetupCameraCubeFace C# (CSharp) Method

SetupCameraCubeFace() public method

public SetupCameraCubeFace ( System.Vector3 origin, CubeFace cubeFace, float near, float far ) : void
origin System.Vector3
cubeFace CubeFace
near float
far float
return void
		public void SetupCameraCubeFace ( Vector3 origin, CubeFace cubeFace, float near, float far )
		{
			Matrix view = Matrix.Identity;
			Matrix proj = Matrix.Identity;

			switch (cubeFace) {
				case CubeFace.FacePosX : view = Matrix.LookAtLH( origin, -Vector3.UnitX + origin, Vector3.UnitY ); break;
				case CubeFace.FaceNegX : view = Matrix.LookAtLH( origin,  Vector3.UnitX + origin, Vector3.UnitY ); break;
				case CubeFace.FacePosY : view = Matrix.LookAtLH( origin, -Vector3.UnitY + origin,-Vector3.UnitZ ); break;
				case CubeFace.FaceNegY : view = Matrix.LookAtLH( origin,  Vector3.UnitY + origin, Vector3.UnitZ ); break;
				case CubeFace.FacePosZ : view = Matrix.LookAtLH( origin, -Vector3.UnitZ + origin, Vector3.UnitY ); break;
				case CubeFace.FaceNegZ : view = Matrix.LookAtLH( origin,  Vector3.UnitZ + origin, Vector3.UnitY ); break;
			}
			
			SetupCamera( view, 2*near, 2*near, near, far, 1, 0 );
		}

Usage Example

Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="gameTime"></param>
        public void RenderRadiance()
        {
            var sw = new Stopwatch();

            Log.Message("Radiance capture...");

            sw.Start();
            using (new PixEvent("Capture Radiance")) {
                var sun = SkySettings.SunGlowIntensity;
                SkySettings.SunGlowIntensity = 0;

                int index = 0;

                foreach (var envLight in LightSet.EnvLights)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        ClearBuffers(radianceFrame);

                        var camera = new Camera();
                        camera.SetupCameraCubeFace(envLight.Position, (CubeFace)i, 0.125f, 5000);

                        //	render g-buffer :
                        rs.SceneRenderer.RenderGBuffer(new GameTime(0, 0, 0), StereoEye.Mono, camera, radianceFrame, this, true);

                        //	render sky :
                        rs.Sky.Render(camera, StereoEye.Mono, radianceFrame, SkySettings);

                        //	render lights :
                        rs.LightRenderer.RenderLighting(StereoEye.Mono, camera, radianceFrame, this, rs.Sky.SkyCube);

                        //	downsample captured frame to cube face.
                        rs.Filter.StretchRect4x4(Radiance.GetSurface(0, (CubeFace)i), radianceFrame.HdrBuffer, SamplerState.LinearClamp, true);
                    }

                    //	prefilter cubemap :
                    rs.Filter.PrefilterEnvMap(Radiance);

                    RadianceCache.CopyFromRenderTargetCube(index, Radiance);
                    index++;
                }
                sw.Stop();

                SkySettings.SunGlowIntensity = sun;
            }

            Log.Message("{0} light probes - {1} ms", LightSet.EnvLights.Count, sw.ElapsedMilliseconds);
        }
All Usage Examples Of Fusion.Engine.Graphics.Camera::SetupCameraCubeFace