public override void OnInspectorGUI() { DrawDefaultInspector(); CubemapRenderer cr = target as CubemapRenderer; if (GUILayout.Button("Render Cubemap")) { cr.RenderCubemap(); } }
// Use this for initialization void Start() { _camera = GetComponent <Camera>(); _material = new Material(Shader.Find("Unlit/CubemapToOtherProjection")); _cubemap = new RenderTexture(CubemapSize, CubemapSize, 24, RenderTextureFormat.ARGB32); _cubemap.dimension = UnityEngine.Rendering.TextureDimension.Cube; if (!UseUnityInternalCubemapRenderer) { _cubemapRenderer = new CubemapRenderer(CubemapSize); } }
private void OnDestroy() { if (_material != null) { Destroy(_material); _material = null; } if (_cubemap != null) { Destroy(_cubemap); _cubemap = null; } if (_cubemapRenderer != null) { _cubemapRenderer.Dispose(); _cubemapRenderer = null; } }
// TODO: States should not access renderer. // inject device in resource manager state if needed? // ResourceManager should be accessed by Accessor protected override void LoadResources(ResourceManager resourceManager, SharpDX.Direct3D11.Device device) { resourceManager.Textures.Load(new Texture2DResourceDesc("sky/misty_pines_4k.png", "SkyPines", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("sky/output_sky.png", "SkyFac", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("sky/hdri.png", "SkyGrass", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("sky/fireplace_4k.png", "SkyFire", device)); resourceManager.Shaders.Load(new ShaderResourceDesc("skybox.hlsl", "Sky", device)); // TODO: Remove this. Placed here for quick testing purposes. Rendering.CubemapRenderer cubemapRenderer = new CubemapRenderer(device, resourceManager); var pineCubemap = cubemapRenderer.GenerateFromEquirectangular(resourceManager.Textures.GetFromAlias("SkyPines").Texture.Texture2D); var factoryCubemap = cubemapRenderer.GenerateFromEquirectangular(resourceManager.Textures.GetFromAlias("SkyFac").Texture.Texture2D); var grassCubemap = cubemapRenderer.GenerateFromEquirectangular(resourceManager.Textures.GetFromAlias("SkyGrass").Texture.Texture2D); var testCubemap = cubemapRenderer.GenerateFromEquirectangular(resourceManager.Textures.GetFromAlias("SkyFire").Texture.Texture2D); Mesh cubeMesh = resourceManager.Meshes.GetFromAlias("KDX_CUBE_IN").Mesh; Shader skyShader = resourceManager.Shaders.GetFromAlias("Sky").Shader; Skybox pineSkybox = new Skybox(pineCubemap, cubeMesh, skyShader); Skybox grassSkybox = new Skybox(grassCubemap, cubeMesh, skyShader); Skybox indoorSkybox = new Skybox(factoryCubemap, cubeMesh, skyShader); Skybox testSkybox = new Skybox(testCubemap, cubeMesh, skyShader); // TODO: Remove later. This is only for switching skyboxes at the fly for testing. skyboxes = new List <Skybox>(); skyboxes.Add(pineSkybox); skyboxes.Add(testSkybox); skyboxes.Add(indoorSkybox); skyboxes.Add(grassSkybox); stateScene.SetSkybox(skyboxes[0]); resourceManager.Textures.Load(new Texture2DResourceDesc("test/RedOctFloor_basecolor.png", "Diffuse", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("test/RedOctFloor_normal.png", "Normal", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("test/RedOctFloor_roughness.png", "Roughness", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("test/RedOctFloor_metallic.png", "Metallic", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("plain_normal.png", "PlainNormal", device)); resourceManager.Meshes.Load(new MeshResourceDesc("plane.fbx", "Plane")); resourceManager.Meshes.Load(new MeshResourceDesc("monkey_high.fbx", "MonkeyHigh")); resourceManager.Meshes.Load(new MeshResourceDesc("monkey_smooth.fbx", "Monkey")); resourceManager.Meshes.Load(new MeshResourceDesc("barrel.fbx", "Barrel")); resourceManager.Meshes.Load(new MeshResourceDesc("sphere_smooth.fbx", "Sphere")); resourceManager.Shaders.Load(new ShaderResourceDesc("testShader_PBR.hlsl", "PBR", device)); resourceManager.Shaders.Load(new ShaderResourceDesc("ui.hlsl", "UI", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("StandardCubeMap.png", "Sky", device)); resourceManager.Textures.Load(new Texture2DResourceDesc("hdri.png", "SkyHDRI", device)); resourceManager.Meshes.Load(new MeshResourceDesc("skybox.fbx", "Sky")); resourceManager.Shaders.Load(new ShaderResourceDesc("testsky.hlsl", "TestSky", device)); }