Пример #1
0
        public Material(GraphicsDevice device, Framebuffer target, Resource <string> vertexShader, Resource <string> fragShader, string[] vertexInputs, string[] resourceInputs, MaterialInputLayouts registry)
        {
            _device   = device;
            _target   = target;
            _registry = registry;

            _vertexShader   = vertexShader;
            _fragmentShader = fragShader;

            _vertexShader.OnChanged   += _shader_OnChanged;
            _fragmentShader.OnChanged += _shader_OnChanged;

            _vertexInputs   = vertexInputs;
            _resourceInputs = resourceInputs;

            Build();
        }
Пример #2
0
        public MeshGeometryRenderer(GraphicsDevice device, MaterialInputLayouts materialInputLayouts, World world) : base(world.GetEntities()
                                                                                                                          .With <Material>()
                                                                                                                          .With <MaterialTexture>()
                                                                                                                          .With <RenderableMeshGeometry>()
                                                                                                                          .Without <LightVertexResources>()
                                                                                                                          .With <Transform>().AsSet())
        {
            var factory = device.ResourceFactory;

            WorldMatrixBuffer         = factory.CreateBuffer(new BufferDescription(64, BufferUsage.UniformBuffer));
            WorldTransformResourceSet = factory.CreateResourceSet(new ResourceSetDescription(materialInputLayouts.ResourceLayouts["WorldTransform"], WorldMatrixBuffer));

            ProjectionMatrixBuffer = factory.CreateBuffer(new BufferDescription(64, BufferUsage.UniformBuffer));
            ViewMatrixBuffer       = factory.CreateBuffer(new BufferDescription(64, BufferUsage.UniformBuffer));
            SceneLightingBuffer    = factory.CreateBuffer(new BufferDescription(SceneLighting.Size, BufferUsage.UniformBuffer));
            SceneInputsResourceSet = factory.CreateResourceSet(new ResourceSetDescription(materialInputLayouts.ResourceLayouts["SceneInputs"], ProjectionMatrixBuffer, ViewMatrixBuffer, SceneLightingBuffer));
        }