mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 22:53:34 +00:00
adding pixel put pipeline
This commit is contained in:
@@ -6,78 +6,143 @@
|
||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/12/18 21:27:38 by maldavid #+# #+# */
|
||||
/* Updated: 2023/01/25 16:19:33 by maldavid ### ########.fr */
|
||||
/* Updated: 2023/03/31 18:56:25 by maldavid ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "pipeline.h"
|
||||
#include <renderer/renderer.h>
|
||||
#include <renderer/core/render_core.h>
|
||||
#include <renderer/descriptors/vk_descriptor_set_layout.h>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
/**
|
||||
#version 450 core
|
||||
|
||||
layout(location = 0) in vec2 aPos;
|
||||
layout(location = 1) in vec3 aColor;
|
||||
layout(location = 2) in vec2 aUV;
|
||||
|
||||
layout(set=0, binding=0) uniform uProjection {
|
||||
mat4 mat;
|
||||
} uProj;
|
||||
|
||||
out gl_PerVertex {
|
||||
vec4 gl_Position;
|
||||
};
|
||||
|
||||
layout(location = 0) out struct {
|
||||
vec3 Color;
|
||||
vec2 UV;
|
||||
} Out;
|
||||
|
||||
void main()
|
||||
{
|
||||
Out.Color = aColor;
|
||||
Out.UV = aUV;
|
||||
vec4 position = vec4(aPos.x, aPos.y, 0.0, 1.0) * uProj.mat;
|
||||
gl_Position = vec4(position.x, position.y, 0.0, 1.0);
|
||||
}
|
||||
*/
|
||||
const std::vector<uint32_t> vertex_shader = {
|
||||
0x07230203,0x00010000,0x0008000a,0x00000029,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x07230203,0x00010000,0x0008000b,0x0000003b,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x0009000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000019,0x00000025,
|
||||
0x00000027,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,
|
||||
0x00060005,0x0000000b,0x505f6c67,0x65567265,0x78657472,0x00000000,0x00060006,0x0000000b,
|
||||
0x00000000,0x505f6c67,0x7469736f,0x006e6f69,0x00070006,0x0000000b,0x00000001,0x505f6c67,
|
||||
0x746e696f,0x657a6953,0x00000000,0x00070006,0x0000000b,0x00000002,0x435f6c67,0x4470696c,
|
||||
0x61747369,0x0065636e,0x00070006,0x0000000b,0x00000003,0x435f6c67,0x446c6c75,0x61747369,
|
||||
0x0065636e,0x00030005,0x0000000d,0x00000000,0x00040005,0x00000011,0x7274614d,0x00007869,
|
||||
0x00050006,0x00000011,0x00000000,0x6a6f7270,0x00000000,0x00040005,0x00000013,0x7274616d,
|
||||
0x00007869,0x00050005,0x00000019,0x6f506e69,0x69746973,0x00006e6f,0x00050005,0x00000025,
|
||||
0x67617266,0x6f6c6f43,0x00000072,0x00040005,0x00000027,0x6f436e69,0x00726f6c,0x00050048,
|
||||
0x0000000b,0x00000000,0x0000000b,0x00000000,0x00050048,0x0000000b,0x00000001,0x0000000b,
|
||||
0x00000001,0x00050048,0x0000000b,0x00000002,0x0000000b,0x00000003,0x00050048,0x0000000b,
|
||||
0x00000003,0x0000000b,0x00000004,0x00030047,0x0000000b,0x00000002,0x00040048,0x00000011,
|
||||
0x00000000,0x00000005,0x00050048,0x00000011,0x00000000,0x00000023,0x00000000,0x00050048,
|
||||
0x00000011,0x00000000,0x00000007,0x00000010,0x00030047,0x00000011,0x00000002,0x00040047,
|
||||
0x00000013,0x00000022,0x00000000,0x00040047,0x00000013,0x00000021,0x00000000,0x00040047,
|
||||
0x00000019,0x0000001e,0x00000000,0x00040047,0x00000025,0x0000001e,0x00000000,0x00040047,
|
||||
0x00000027,0x0000001e,0x00000001,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,
|
||||
0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006,0x00000004,0x00040015,
|
||||
0x00000008,0x00000020,0x00000000,0x0004002b,0x00000008,0x00000009,0x00000001,0x0004001c,
|
||||
0x0000000a,0x00000006,0x00000009,0x0006001e,0x0000000b,0x00000007,0x00000006,0x0000000a,
|
||||
0x0000000a,0x00040020,0x0000000c,0x00000003,0x0000000b,0x0004003b,0x0000000c,0x0000000d,
|
||||
0x00000003,0x00040015,0x0000000e,0x00000020,0x00000001,0x0004002b,0x0000000e,0x0000000f,
|
||||
0x00000000,0x00040018,0x00000010,0x00000007,0x00000004,0x0003001e,0x00000011,0x00000010,
|
||||
0x00040020,0x00000012,0x00000002,0x00000011,0x0004003b,0x00000012,0x00000013,0x00000002,
|
||||
0x00040020,0x00000014,0x00000002,0x00000010,0x00040017,0x00000017,0x00000006,0x00000002,
|
||||
0x00040020,0x00000018,0x00000001,0x00000017,0x0004003b,0x00000018,0x00000019,0x00000001,
|
||||
0x0004002b,0x00000006,0x0000001b,0x00000000,0x0004002b,0x00000006,0x0000001c,0x3f800000,
|
||||
0x00040020,0x00000021,0x00000003,0x00000007,0x00040017,0x00000023,0x00000006,0x00000003,
|
||||
0x00040020,0x00000024,0x00000003,0x00000023,0x0004003b,0x00000024,0x00000025,0x00000003,
|
||||
0x00040020,0x00000026,0x00000001,0x00000023,0x0004003b,0x00000026,0x00000027,0x00000001,
|
||||
0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x00050041,
|
||||
0x00000014,0x00000015,0x00000013,0x0000000f,0x0004003d,0x00000010,0x00000016,0x00000015,
|
||||
0x0004003d,0x00000017,0x0000001a,0x00000019,0x00050051,0x00000006,0x0000001d,0x0000001a,
|
||||
0x00000000,0x00050051,0x00000006,0x0000001e,0x0000001a,0x00000001,0x00070050,0x00000007,
|
||||
0x0000001f,0x0000001d,0x0000001e,0x0000001b,0x0000001c,0x00050091,0x00000007,0x00000020,
|
||||
0x00000016,0x0000001f,0x00050041,0x00000021,0x00000022,0x0000000d,0x0000000f,0x0003003e,
|
||||
0x00000022,0x00000020,0x0004003d,0x00000023,0x00000028,0x00000027,0x0003003e,0x00000025,
|
||||
0x00000028,0x000100fd,0x00010038
|
||||
0x000a000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x0000000b,0x0000000f,0x00000015,
|
||||
0x0000001c,0x00000032,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,
|
||||
0x00000000,0x00030005,0x00000009,0x00000000,0x00050006,0x00000009,0x00000000,0x6f6c6f43,
|
||||
0x00000072,0x00040006,0x00000009,0x00000001,0x00005655,0x00030005,0x0000000b,0x0074754f,
|
||||
0x00040005,0x0000000f,0x6c6f4361,0x0000726f,0x00030005,0x00000015,0x00565561,0x00050005,
|
||||
0x0000001b,0x69736f70,0x6e6f6974,0x00000000,0x00040005,0x0000001c,0x736f5061,0x00000000,
|
||||
0x00050005,0x00000029,0x6f725075,0x7463656a,0x006e6f69,0x00040006,0x00000029,0x00000000,
|
||||
0x0074616d,0x00040005,0x0000002b,0x6f725075,0x0000006a,0x00060005,0x00000030,0x505f6c67,
|
||||
0x65567265,0x78657472,0x00000000,0x00060006,0x00000030,0x00000000,0x505f6c67,0x7469736f,
|
||||
0x006e6f69,0x00030005,0x00000032,0x00000000,0x00040047,0x0000000b,0x0000001e,0x00000000,
|
||||
0x00040047,0x0000000f,0x0000001e,0x00000001,0x00040047,0x00000015,0x0000001e,0x00000002,
|
||||
0x00040047,0x0000001c,0x0000001e,0x00000000,0x00040048,0x00000029,0x00000000,0x00000005,
|
||||
0x00050048,0x00000029,0x00000000,0x00000023,0x00000000,0x00050048,0x00000029,0x00000000,
|
||||
0x00000007,0x00000010,0x00030047,0x00000029,0x00000002,0x00040047,0x0000002b,0x00000022,
|
||||
0x00000000,0x00040047,0x0000002b,0x00000021,0x00000000,0x00050048,0x00000030,0x00000000,
|
||||
0x0000000b,0x00000000,0x00030047,0x00000030,0x00000002,0x00020013,0x00000002,0x00030021,
|
||||
0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006,
|
||||
0x00000003,0x00040017,0x00000008,0x00000006,0x00000002,0x0004001e,0x00000009,0x00000007,
|
||||
0x00000008,0x00040020,0x0000000a,0x00000003,0x00000009,0x0004003b,0x0000000a,0x0000000b,
|
||||
0x00000003,0x00040015,0x0000000c,0x00000020,0x00000001,0x0004002b,0x0000000c,0x0000000d,
|
||||
0x00000000,0x00040020,0x0000000e,0x00000001,0x00000007,0x0004003b,0x0000000e,0x0000000f,
|
||||
0x00000001,0x00040020,0x00000011,0x00000003,0x00000007,0x0004002b,0x0000000c,0x00000013,
|
||||
0x00000001,0x00040020,0x00000014,0x00000001,0x00000008,0x0004003b,0x00000014,0x00000015,
|
||||
0x00000001,0x00040020,0x00000017,0x00000003,0x00000008,0x00040017,0x00000019,0x00000006,
|
||||
0x00000004,0x00040020,0x0000001a,0x00000007,0x00000019,0x0004003b,0x00000014,0x0000001c,
|
||||
0x00000001,0x00040015,0x0000001d,0x00000020,0x00000000,0x0004002b,0x0000001d,0x0000001e,
|
||||
0x00000000,0x00040020,0x0000001f,0x00000001,0x00000006,0x0004002b,0x0000001d,0x00000022,
|
||||
0x00000001,0x0004002b,0x00000006,0x00000025,0x00000000,0x0004002b,0x00000006,0x00000026,
|
||||
0x3f800000,0x00040018,0x00000028,0x00000019,0x00000004,0x0003001e,0x00000029,0x00000028,
|
||||
0x00040020,0x0000002a,0x00000002,0x00000029,0x0004003b,0x0000002a,0x0000002b,0x00000002,
|
||||
0x00040020,0x0000002c,0x00000002,0x00000028,0x0003001e,0x00000030,0x00000019,0x00040020,
|
||||
0x00000031,0x00000003,0x00000030,0x0004003b,0x00000031,0x00000032,0x00000003,0x00040020,
|
||||
0x00000033,0x00000007,0x00000006,0x00040020,0x00000039,0x00000003,0x00000019,0x00050036,
|
||||
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000001a,
|
||||
0x0000001b,0x00000007,0x0004003d,0x00000007,0x00000010,0x0000000f,0x00050041,0x00000011,
|
||||
0x00000012,0x0000000b,0x0000000d,0x0003003e,0x00000012,0x00000010,0x0004003d,0x00000008,
|
||||
0x00000016,0x00000015,0x00050041,0x00000017,0x00000018,0x0000000b,0x00000013,0x0003003e,
|
||||
0x00000018,0x00000016,0x00050041,0x0000001f,0x00000020,0x0000001c,0x0000001e,0x0004003d,
|
||||
0x00000006,0x00000021,0x00000020,0x00050041,0x0000001f,0x00000023,0x0000001c,0x00000022,
|
||||
0x0004003d,0x00000006,0x00000024,0x00000023,0x00070050,0x00000019,0x00000027,0x00000021,
|
||||
0x00000024,0x00000025,0x00000026,0x00050041,0x0000002c,0x0000002d,0x0000002b,0x0000000d,
|
||||
0x0004003d,0x00000028,0x0000002e,0x0000002d,0x00050090,0x00000019,0x0000002f,0x00000027,
|
||||
0x0000002e,0x0003003e,0x0000001b,0x0000002f,0x00050041,0x00000033,0x00000034,0x0000001b,
|
||||
0x0000001e,0x0004003d,0x00000006,0x00000035,0x00000034,0x00050041,0x00000033,0x00000036,
|
||||
0x0000001b,0x00000022,0x0004003d,0x00000006,0x00000037,0x00000036,0x00070050,0x00000019,
|
||||
0x00000038,0x00000035,0x00000037,0x00000025,0x00000026,0x00050041,0x00000039,0x0000003a,
|
||||
0x00000032,0x0000000d,0x0003003e,0x0000003a,0x00000038,0x000100fd,0x00010038
|
||||
};
|
||||
|
||||
/**
|
||||
#version 450 core
|
||||
|
||||
layout(location = 0) out vec4 fColor;
|
||||
|
||||
layout(set=1, binding=0) uniform sampler2D sTexture;
|
||||
|
||||
layout(location = 0) in struct {
|
||||
vec3 Color;
|
||||
vec2 UV;
|
||||
} In;
|
||||
|
||||
void main()
|
||||
{
|
||||
fColor = vec4(In.Color, 1.0) * texture(sTexture, In.UV.st);
|
||||
}
|
||||
*/
|
||||
const std::vector<uint32_t> fragment_shader = {
|
||||
0x07230203,0x00010000,0x0008000a,0x00000013,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x07230203,0x00010000,0x0008000b,0x00000024,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000009,0x0000000c,0x00030010,
|
||||
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x00090004,0x415f4c47,0x735f4252,
|
||||
0x72617065,0x5f657461,0x64616873,0x6f5f7265,0x63656a62,0x00007374,0x00040005,0x00000004,
|
||||
0x6e69616d,0x00000000,0x00050005,0x00000009,0x4374756f,0x726f6c6f,0x00000000,0x00050005,
|
||||
0x0000000c,0x67617266,0x6f6c6f43,0x00000072,0x00040047,0x00000009,0x0000001e,0x00000000,
|
||||
0x00040047,0x0000000c,0x0000001e,0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,
|
||||
0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006,0x00000004,
|
||||
0x00040020,0x00000008,0x00000003,0x00000007,0x0004003b,0x00000008,0x00000009,0x00000003,
|
||||
0x00040017,0x0000000a,0x00000006,0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a,
|
||||
0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b,0x00000006,0x0000000e,0x3f800000,
|
||||
0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003d,
|
||||
0x0000000a,0x0000000d,0x0000000c,0x00050051,0x00000006,0x0000000f,0x0000000d,0x00000000,
|
||||
0x00050051,0x00000006,0x00000010,0x0000000d,0x00000001,0x00050051,0x00000006,0x00000011,
|
||||
0x0000000d,0x00000002,0x00070050,0x00000007,0x00000012,0x0000000f,0x00000010,0x00000011,
|
||||
0x0000000e,0x0003003e,0x00000009,0x00000012,0x000100fd,0x00010038
|
||||
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x00000009,0x0000000e,0x00030010,
|
||||
0x00000004,0x00000007,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,
|
||||
0x00000000,0x00040005,0x00000009,0x6c6f4366,0x0000726f,0x00030005,0x0000000c,0x00000000,
|
||||
0x00050006,0x0000000c,0x00000000,0x6f6c6f43,0x00000072,0x00040006,0x0000000c,0x00000001,
|
||||
0x00005655,0x00030005,0x0000000e,0x00006e49,0x00050005,0x0000001c,0x78655473,0x65727574,
|
||||
0x00000000,0x00040047,0x00000009,0x0000001e,0x00000000,0x00040047,0x0000000e,0x0000001e,
|
||||
0x00000000,0x00040047,0x0000001c,0x00000022,0x00000001,0x00040047,0x0000001c,0x00000021,
|
||||
0x00000000,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,
|
||||
0x00000020,0x00040017,0x00000007,0x00000006,0x00000004,0x00040020,0x00000008,0x00000003,
|
||||
0x00000007,0x0004003b,0x00000008,0x00000009,0x00000003,0x00040017,0x0000000a,0x00000006,
|
||||
0x00000003,0x00040017,0x0000000b,0x00000006,0x00000002,0x0004001e,0x0000000c,0x0000000a,
|
||||
0x0000000b,0x00040020,0x0000000d,0x00000001,0x0000000c,0x0004003b,0x0000000d,0x0000000e,
|
||||
0x00000001,0x00040015,0x0000000f,0x00000020,0x00000001,0x0004002b,0x0000000f,0x00000010,
|
||||
0x00000000,0x00040020,0x00000011,0x00000001,0x0000000a,0x0004002b,0x00000006,0x00000014,
|
||||
0x3f800000,0x00090019,0x00000019,0x00000006,0x00000001,0x00000000,0x00000000,0x00000000,
|
||||
0x00000001,0x00000000,0x0003001b,0x0000001a,0x00000019,0x00040020,0x0000001b,0x00000000,
|
||||
0x0000001a,0x0004003b,0x0000001b,0x0000001c,0x00000000,0x0004002b,0x0000000f,0x0000001e,
|
||||
0x00000001,0x00040020,0x0000001f,0x00000001,0x0000000b,0x00050036,0x00000002,0x00000004,
|
||||
0x00000000,0x00000003,0x000200f8,0x00000005,0x00050041,0x00000011,0x00000012,0x0000000e,
|
||||
0x00000010,0x0004003d,0x0000000a,0x00000013,0x00000012,0x00050051,0x00000006,0x00000015,
|
||||
0x00000013,0x00000000,0x00050051,0x00000006,0x00000016,0x00000013,0x00000001,0x00050051,
|
||||
0x00000006,0x00000017,0x00000013,0x00000002,0x00070050,0x00000007,0x00000018,0x00000015,
|
||||
0x00000016,0x00000017,0x00000014,0x0004003d,0x0000001a,0x0000001d,0x0000001c,0x00050041,
|
||||
0x0000001f,0x00000020,0x0000000e,0x0000001e,0x0004003d,0x0000000b,0x00000021,0x00000020,
|
||||
0x00050057,0x00000007,0x00000022,0x0000001d,0x00000021,0x00050085,0x00000007,0x00000023,
|
||||
0x00000018,0x00000022,0x0003003e,0x00000009,0x00000023,0x000100fd,0x00010038
|
||||
};
|
||||
|
||||
void GraphicPipeline::init(Renderer& renderer)
|
||||
@@ -123,7 +188,7 @@ namespace mlx
|
||||
|
||||
VkPipelineInputAssemblyStateCreateInfo inputAssembly{};
|
||||
inputAssembly.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO;
|
||||
inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_POINT_LIST;
|
||||
inputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
||||
inputAssembly.primitiveRestartEnable = VK_FALSE;
|
||||
|
||||
VkDynamicState states[] = { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR };
|
||||
@@ -183,10 +248,15 @@ namespace mlx
|
||||
colorBlending.blendConstants[2] = 0.0f;
|
||||
colorBlending.blendConstants[3] = 0.0f;
|
||||
|
||||
VkDescriptorSetLayout layouts[] = {
|
||||
renderer.getVertDescriptorSetLayout().get(),
|
||||
renderer.getFragDescriptorSetLayout().get()
|
||||
};
|
||||
|
||||
VkPipelineLayoutCreateInfo pipelineLayoutInfo{};
|
||||
pipelineLayoutInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||
pipelineLayoutInfo.setLayoutCount = 1;
|
||||
pipelineLayoutInfo.pSetLayouts = &renderer.getDescriptorSetLayout().get();
|
||||
pipelineLayoutInfo.setLayoutCount = 2;
|
||||
pipelineLayoutInfo.pSetLayouts = layouts;
|
||||
|
||||
if(vkCreatePipelineLayout(Render_Core::get().getDevice().get(), &pipelineLayoutInfo, nullptr, &_pipelineLayout) != VK_SUCCESS)
|
||||
core::error::report(e_kind::fatal_error, "Vulkan : failed to create a graphics pipeline layout");
|
||||
|
||||
Reference in New Issue
Block a user