1 module evael.renderer.vk.vk_pipeline;
2 
3 import evael.renderer.pipeline;
4 import evael.renderer.graphics_buffer;
5 
6 import evael.renderer.vk.vk_shader;
7 import evael.renderer.vk.vk_wrapper;
8 import evael.renderer.vk.vk_uniform_resource;
9 import evael.renderer.vk.vk_texture_resource;
10 import evael.renderer.vk.vk_enum_converter;
11 
12 import evael.renderer.resources.resource;
13 import evael.renderer.texture;
14 
15 import evael.lib.memory;
16 
17 class VulkanPipeline : Pipeline
18 {
19     @nogc
20     public override void apply() const nothrow
21     {
22         if (this.depthState.enabled)
23         {
24 
25         }
26         
27         if (this.blendState.enabled)
28         {
29         
30         }
31 
32         foreach (resource; this.m_resources)
33         {
34             resource.apply();
35         }
36     }
37 
38     @nogc
39     public override void clear() const nothrow
40     {
41         foreach (resource; this.m_resources)
42         {
43             resource.clear();
44         }
45 
46         if (this.blendState.enabled)
47         {
48         }
49 
50         if (this.depthState.enabled)
51         {
52         }
53     }
54 
55     @nogc
56     public override VulkanTextureResource addTextureResource(Texture texture = null)
57     {
58         auto resource = MemoryHelper.create!VulkanTextureResource(texture);
59         this.m_resources.insert(resource);
60         return resource;
61     }
62 
63     @nogc
64     public VulkanUniformResource!T addUniformResource(T)(in string name, T value)
65     {
66         assert(this.shader !is null, "Set a shader before adding an uniform resource.");
67 
68         return null;
69     }
70 }