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;
        }
    }
Exemple #4
0
        // 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));
        }