예제 #1
0
 public Menu(Device device, ShaderCache shaderCache, TrackedDeviceBufferManager trackedDeviceBufferManager, ControllerManager controllerManager, IMenuLevel rootLevel)
 {
     model          = new MenuModel(rootLevel);
     controller     = new MenuController(model, controllerManager);
     visualRenderer = new MenuView(device, model);
     renderer       = new MenuRenderer(device, shaderCache, trackedDeviceBufferManager, controllerManager, visualRenderer.TextureView);
 }
    public FramePreparer(IArchiveDirectory dataDir, Device device, ShaderCache shaderCache, StandardSamplers standardSamplers, Size2 targetSize)
    {
        this.standardSamplers = standardSamplers;

        deferredContext = new DeviceContext(device);
        viewProjectionTransformBufferManager = new ViewProjectionConstantBufferManager(device);
        passController             = new RenderPassController(device, shaderCache, targetSize);
        masker                     = new HiddenAreaMasker(device, shaderCache);
        trackedDeviceBufferManager = new TrackedDeviceBufferManager(device);
        controllerManager          = new ControllerManager();
        scene = new Scene(dataDir, device, shaderCache, standardSamplers, trackedDeviceBufferManager, controllerManager);
    }
    public RenderModelRenderer(Device device, ShaderCache shaderCache, TrackedDeviceBufferManager trackedDeviceBufferManager)
    {
        this.trackedDeviceBufferManager = trackedDeviceBufferManager;

        this.cache = new RenderModelCache(device, new BasicSpecularMaterial.Factory(device, shaderCache));

        var vertexShaderWithBytecode = shaderCache.GetVertexShader <RenderModelRenderer>("game/render-models/RenderModelVertex");

        vertexShader = vertexShaderWithBytecode;
        inputLayout  = new InputLayout(device, vertexShaderWithBytecode.Bytecode, InputElements);

        this.componentSpaceToObjectTransformBufferManager = new CoordinateNormalMatrixPairConstantBufferManager(device);
    }
    public MenuRenderer(Device device, ShaderCache shaderCache, TrackedDeviceBufferManager trackedDeviceBufferManager, ControllerManager controllerManager, ShaderResourceView menuViewTexture)
    {
        this.trackedDeviceBufferManager = trackedDeviceBufferManager;
        this.controllerManager          = controllerManager;
        this.menuViewTexture            = menuViewTexture;
        vertexShader = shaderCache.GetVertexShader <MenuRenderer>("menu/renderer/Menu");
        companionWindowVertexShader = shaderCache.GetVertexShader <MenuRenderer>("menu/renderer/CompanionWindowMenu");
        pixelShader = shaderCache.GetPixelShader <MenuRenderer>("menu/renderer/Menu");
        menuToControllerSpaceTransform = new CoordinateNormalMatrixPairConstantBufferManager(device);

        Matrix menuToControllerTransform = Matrix.Scaling(0.10f) * Matrix.Translation(0, 0, 0f) * Matrix.RotationX(MathUtil.PiOverTwo);

        menuToControllerSpaceTransform.Update(device.ImmediateContext, menuToControllerTransform);
    }
예제 #5
0
    public Scene(IArchiveDirectory dataDir, Device device, ShaderCache shaderCache, StandardSamplers standardSamplers, TrackedDeviceBufferManager trackedDeviceBufferManager, ControllerManager controllerManager)
    {
        var textureCache = new TextureCache(device);

        toneMappingSettings = new ToneMappingSettings();
        iblEnvironment      = new ImageBasedLightingEnvironment(device, standardSamplers, dataDir, InitialSettings.Environment, InitialSettings.EnvironmentRotation);
        backdrop            = new Backdrop(device, shaderCache);
        floor = new PlayspaceFloor(device, shaderCache);
        renderModelRenderer = new RenderModelRenderer(device, shaderCache, trackedDeviceBufferManager);
        primitiveRenderer   = new MeshRenderer(device, shaderCache, Matrix.Translation(0, 1.25f, 0), GeometricPrimitiveFactory.MakeSphere(0.5f, 100).AsTriMesh());

        var shapeNormalsLoader   = new ShapeNormalsLoader(dataDir, device, textureCache);
        var figureRendererLoader = new FigureRendererLoader(dataDir, device, shaderCache, textureCache);
        var figureLoader         = new FigureLoader(dataDir, device, shaderCache, shapeNormalsLoader, figureRendererLoader);

        actor = Actor.Load(dataDir, device, shaderCache, controllerManager, figureLoader);

        var iblMenu = LightingEnvironmentMenu.MakeMenuLevel(dataDir, iblEnvironment);
        var toneMappingMenuLevel    = new ToneMappingMenuLevel(toneMappingSettings);
        var renderSettingsMenuLevel = new StaticMenuLevel(
            new SubLevelMenuItem("Lighting Enviroment", iblMenu),
            new SubLevelMenuItem("Tone Mapping", toneMappingMenuLevel),
            new FloorVisibilityToggleMenuItem(floor)
            );
        var scenePersistenceMenuLevel = ScenePersistenceMenuLevel.Make(this);
        var appMenuLevel = new StaticMenuLevel(
            new SubLevelMenuItem("Save/Load", scenePersistenceMenuLevel),
            new SubLevelMenuItem("Render Settings", renderSettingsMenuLevel)
            );

        var rootMenuLevel = new CombinedMenuLevel(appMenuLevel, actor.MenuLevel);

        menu = new Menu(device, shaderCache, trackedDeviceBufferManager, controllerManager, rootMenuLevel);
    }