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(); }
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)); }