Skip to content

Commit

Permalink
[SUTK] Added rounded rectangel rendering (SUTK::RenderRectFillRound)
Browse files Browse the repository at this point in the history
  • Loading branch information
ravi688 committed Aug 20, 2024
1 parent 07ce438 commit 777be2a
Show file tree
Hide file tree
Showing 17 changed files with 983 additions and 26 deletions.
2 changes: 1 addition & 1 deletion include/sge/pygen/gen_shaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# path to the generated header file, it is relative to where this python scripts resides
c_header_file_path='./shaders.h'
# if a folder is specified, then which text files to consider for embedding?
text_file_extensions = [ '.v3dshader', '.txt', '.hpp', '.cpp', '.h', '.c' ]
text_file_extensions = [ '.v3dshader', '.template', '.txt', '.hpp', '.cpp', '.h', '.c' ]
# if a folder is specified, then which binary files to consider for embedding?
binary_file_extensions = [ '.ttf' ]
bytes_per_row = 20
Expand Down
1 change: 1 addition & 0 deletions include/sge/pygen/gen_shaders.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
python $(pwd)/$(dirname "$0")/gen_shaders.py \
../../../shaders/presets/solid_color.v3dshader \
../../../shaders/presets/solid_color_rect_array.v3dshader \
../../../shaders/presets/no_standalone_use/sdf_template.template \
../../../sutk/fonts/Calibri\ Regular.ttf \
../../../sutk/fonts/Roboto-Bold.ttf \
../../../shaders/include/v3d.h \
Expand Down
170 changes: 164 additions & 6 deletions include/sge/pygen/shaders.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/***This is computer generated file - Do not modify it***/

/* This is auto generated header file (by pygen/gen_shaders.py python script). Do not modify it directly.
* Time & Date (yy/mm/yyy) of Generation: 15h:23m:21s, 17/8/2024
* Time & Date (yy/mm/yyy) of Generation: 23h:50m:22s, 20/8/2024
*/

#pragma once
Expand Down Expand Up @@ -233,6 +233,163 @@ static const char* _________SHADERS_PRESETS_SOLID_COLOR_RECT_ARRAY_V3DSHADER =
" }\n"
"\n"
"}";
static const char* _________SHADERS_PRESETS_NO_STANDALONE_USE_SDF_TEMPLATE_TEMPLATE =
"#sl version 2023\n"
"#sb version 2023\n"
"\n"
"[Name(\"SDFRoundedRectShader\")]\n"
"Shader\n"
"{\n"
" Properties\n"
" {\n"
" [Stage(fragment, vertex)]\n"
" [Set(material_set, material_properties)]\n"
" uniform Parameters\n"
" {\n"
" vec4 color;\n"
" PARAMETERS_HERE\n"
" } parameters;\n"
" }\n"
"\n"
" Layout\n"
" {\n"
" [Rate(per_vertex)]\n"
" [MeshLayout(sge_optimal)]\n"
" [Attribute(position)]\n"
" vec3 position;\n"
" }\n"
"\n"
" RenderPass\n"
" {\n"
" SubPass\n"
" {\n"
" [NoParse]\n"
" GraphicsPipeline\n"
" {\n"
" rasterization\n"
" {\n"
" // in SUTK (geometry compilation) we need this to be counterclockwise\n"
" frontface = counterclockwise\n"
" }\n"
"\n"
" colorBlend\n"
" {\n"
" attachment\n"
" {\n"
" blendenable = true\n"
" }\n"
" }\n"
" }\n"
"\n"
" [NoParse]\n"
" GLSL\n"
" {\n"
" #stage vertex\n"
"\n"
" #version 450\n"
" \n"
" #include <v3d.h>\n"
" \n"
" layout(SGE_UNIFORM_BUFFER_LAYOUT, set = CAMERA_SET, binding = CAMERA_PROPERTIES_BINDING) uniform CameraInfo cameraInfo;\n"
" layout(SGE_UNIFORM_BUFFER_LAYOUT, set = OBJECT_SET, binding = TRANSFORM_BINDING) uniform ObjectInfo objectInfo;\n"
" \n"
" layout(SGE_UNIFORM_BUFFER_LAYOUT, set = GLOBAL_SET, binding = SCREEN_BINDING) uniform ScreenInfo\n"
" {\n"
" uvec2 resolution;\n"
" uvec2 dpi;\n"
" uvec2 size;\n"
" mat4 matrix;\n"
" } screenInfo;\n"
"\n"
" layout(location = POSITION_LOCATION) in vec3 position;\n"
" \n"
" void main()\n"
" {\n"
" vec4 clipPos = screenInfo.matrix * objectInfo.transform * vec4(position, 1);\n"
" clipPos.y = -clipPos.y;\n"
" gl_Position = clipPos;\n"
" }\n"
"\n"
" #stage fragment\n"
"\n"
" #version 450\n"
" \n"
" #include <v3d.h>\n"
"\n"
" layout(SGE_UNIFORM_BUFFER_LAYOUT, set = MATERIAL_SET, binding = MATERIAL_PROPERTIES_BINDING) uniform Parameters\n"
" {\n"
" vec4 color;\n"
" PARAMETERS_HERE\n"
" } parameters;\n"
" \n"
" layout(SGE_UNIFORM_BUFFER_LAYOUT, set = OBJECT_SET, binding = TRANSFORM_BINDING) uniform ObjectInfo objectInfo;\n"
"\n"
" layout(SGE_UNIFORM_BUFFER_LAYOUT, set = GLOBAL_SET, binding = SCREEN_BINDING) uniform ScreenInfo\n"
" {\n"
" uvec2 resolution;\n"
" uvec2 dpi;\n"
" uvec2 size;\n"
" mat4 matrix;\n"
" } screenInfo;\n"
"\n"
" layout(location = 0) out vec4 color;\n"
" \n"
" vec4 convertToCenterOrigin(vec4 coord)\n"
" {\n"
" return vec4(coord.x - screenInfo.size.x * 0.5, screenInfo.size.y * 0.5 - coord.y, coord.z, coord.w);\n"
" }\n"
"\n"
" float realizeWidth(float width)\n"
" {\n"
" uvec2 win_size = screenInfo.size;\n"
" return width + win_size.x * 0.5;\n"
" }\n"
"\n"
" float realizeHeight(float height)\n"
" {\n"
" uvec2 win_size = screenInfo.size;\n"
" return win_size.y * 0.5 - height;\n"
" }\n"
"\n"
" vec2 realizeSize(vec2 size)\n"
" {\n"
" uvec2 win_size = screenInfo.size;\n"
" float size_x = size.x + win_size.x * 0.5;\n"
" float size_y = win_size.y * 0.5 - size.y;\n"
" return vec2(size_x, size_y);\n"
" }\n"
"\n"
" float peekFn(float x, float sharpness)\n"
" {\n"
" return (1.0 / (sharpness * sharpness * x * x + 1));\n"
" }\n"
" \n"
" float sdf(vec2 fragCoord)\n"
" {\n"
" PARAMETERS_UNPACK_HERE\n"
"\n"
" // Signed Distance Function Definition\n"
" \n"
" float alpha = 1.0f;\n"
" \n"
" SDF_FN_BODY_HERE\n"
" \n"
" return alpha;\n"
" }\n"
"\n"
" void main()\n"
" {\n"
" vec4 fragCoord = gl_FragCoord;\n"
" fragCoord = convertToCenterOrigin(fragCoord);\n"
"\n"
" float alpha = sdf(fragCoord.xy);\n"
"\n"
" color = vec4(1.0, 1.0, 1.0, alpha) * parameters.color;\n"
" }\n"
" }\n"
" }\n"
" }\n"
"}";
static const char _________SUTK_FONTS_CALIBRI_REGULAR_TTF[] =
{0x0, 0x1, 0x0, 0x0, 0x0, 0x15, 0x1, 0x0, 0x0, 0x4, 0x0, 0x50, 0x44, 0x53, 0x49, 0x47, 0xaf, 0x1d, 0x8d, 0x1a,
0x0, 0x5, 0x46, 0x88, 0x0, 0x0, 0x1b, 0x58, 0x45, 0x42, 0x44, 0x54, 0x31, 0x39, 0xae, 0x17, 0x0, 0x4, 0x1b, 0xe8,
Expand Down Expand Up @@ -26798,7 +26955,7 @@ typedef struct shader_file_path_and_data_mapping_t
long long data_size;
} shader_file_path_and_data_mapping_t;

#define G_SHADER_MAPPING_COUNT 6
#define G_SHADER_MAPPING_COUNT 7

static shader_file_path_and_data_mapping_t g_shader_mappings[G_SHADER_MAPPING_COUNT];
static bool g_is_shader_mappings_populated = false;
Expand All @@ -26809,10 +26966,11 @@ static __attribute__((unused)) const shader_file_path_and_data_mapping_t* g_get_
{
g_shader_mappings[0] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/presets/solid_color.v3dshader", _________SHADERS_PRESETS_SOLID_COLOR_V3DSHADER, 1729 };
g_shader_mappings[1] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/presets/solid_color_rect_array.v3dshader", _________SHADERS_PRESETS_SOLID_COLOR_RECT_ARRAY_V3DSHADER, 4056 };
g_shader_mappings[2] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../sutk/fonts/Calibri Regular.ttf", _________SUTK_FONTS_CALIBRI_REGULAR_TTF, 352736 };
g_shader_mappings[3] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../sutk/fonts/Roboto-Bold.ttf", _________SUTK_FONTS_ROBOTO_BOLD_TTF, 167336 };
g_shader_mappings[4] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/include/v3d.h", _________SHADERS_INCLUDE_V3D_H, 11952 };
g_shader_mappings[5] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/builtins/bitmap_text_shader.v3dshader", _________SHADERS_BUILTINS_BITMAP_TEXT_SHADER_V3DSHADER, 8056 };
g_shader_mappings[2] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/presets/no_standalone_use/sdf_template.template", _________SHADERS_PRESETS_NO_STANDALONE_USE_SDF_TEMPLATE_TEMPLATE, 3335 };
g_shader_mappings[3] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../sutk/fonts/Calibri Regular.ttf", _________SUTK_FONTS_CALIBRI_REGULAR_TTF, 352736 };
g_shader_mappings[4] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../sutk/fonts/Roboto-Bold.ttf", _________SUTK_FONTS_ROBOTO_BOLD_TTF, 167336 };
g_shader_mappings[5] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/include/v3d.h", _________SHADERS_INCLUDE_V3D_H, 11952 };
g_shader_mappings[6] = (shader_file_path_and_data_mapping_t) { "D:/4-Projects/indent/dependencies/VulkanRenderer/include/sge/pygen/../../../shaders/builtins/bitmap_text_shader.v3dshader", _________SHADERS_BUILTINS_BITMAP_TEXT_SHADER_V3DSHADER, 8056 };

g_is_shader_mappings_populated = true;
}
Expand Down
156 changes: 156 additions & 0 deletions shaders/presets/no_standalone_use/sdf_template.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
#sl version 2023
#sb version 2023

[Name("SDFRoundedRectShader")]
Shader
{
Properties
{
[Stage(fragment, vertex)]
[Set(material_set, material_properties)]
uniform Parameters
{
vec4 color;
PARAMETERS_HERE
} parameters;
}

Layout
{
[Rate(per_vertex)]
[MeshLayout(sge_optimal)]
[Attribute(position)]
vec3 position;
}

RenderPass
{
SubPass
{
[NoParse]
GraphicsPipeline
{
rasterization
{
// in SUTK (geometry compilation) we need this to be counterclockwise
frontface = counterclockwise
}

colorBlend
{
attachment
{
blendenable = true
}
}
}

[NoParse]
GLSL
{
#stage vertex

#version 450

#include <v3d.h>

layout(SGE_UNIFORM_BUFFER_LAYOUT, set = CAMERA_SET, binding = CAMERA_PROPERTIES_BINDING) uniform CameraInfo cameraInfo;
layout(SGE_UNIFORM_BUFFER_LAYOUT, set = OBJECT_SET, binding = TRANSFORM_BINDING) uniform ObjectInfo objectInfo;

layout(SGE_UNIFORM_BUFFER_LAYOUT, set = GLOBAL_SET, binding = SCREEN_BINDING) uniform ScreenInfo
{
uvec2 resolution;
uvec2 dpi;
uvec2 size;
mat4 matrix;
} screenInfo;

layout(location = POSITION_LOCATION) in vec3 position;

void main()
{
vec4 clipPos = screenInfo.matrix * objectInfo.transform * vec4(position, 1);
clipPos.y = -clipPos.y;
gl_Position = clipPos;
}

#stage fragment

#version 450

#include <v3d.h>

layout(SGE_UNIFORM_BUFFER_LAYOUT, set = MATERIAL_SET, binding = MATERIAL_PROPERTIES_BINDING) uniform Parameters
{
vec4 color;
PARAMETERS_HERE
} parameters;

layout(SGE_UNIFORM_BUFFER_LAYOUT, set = OBJECT_SET, binding = TRANSFORM_BINDING) uniform ObjectInfo objectInfo;

layout(SGE_UNIFORM_BUFFER_LAYOUT, set = GLOBAL_SET, binding = SCREEN_BINDING) uniform ScreenInfo
{
uvec2 resolution;
uvec2 dpi;
uvec2 size;
mat4 matrix;
} screenInfo;

layout(location = 0) out vec4 color;

vec4 convertToCenterOrigin(vec4 coord)
{
return vec4(coord.x - screenInfo.size.x * 0.5, screenInfo.size.y * 0.5 - coord.y, coord.z, coord.w);
}

float realizeWidth(float width)
{
uvec2 win_size = screenInfo.size;
return width + win_size.x * 0.5;
}

float realizeHeight(float height)
{
uvec2 win_size = screenInfo.size;
return win_size.y * 0.5 - height;
}

vec2 realizeSize(vec2 size)
{
uvec2 win_size = screenInfo.size;
float size_x = size.x + win_size.x * 0.5;
float size_y = win_size.y * 0.5 - size.y;
return vec2(size_x, size_y);
}

float peekFn(float x, float sharpness)
{
return (1.0 / (sharpness * sharpness * x * x + 1));
}

float sdf(vec2 fragCoord)
{
PARAMETERS_UNPACK_HERE

// Signed Distance Function Definition

float alpha = 1.0f;

SDF_FN_BODY_HERE

return alpha;
}

void main()
{
vec4 fragCoord = gl_FragCoord;
fragCoord = convertToCenterOrigin(fragCoord);

float alpha = sdf(fragCoord.xy);

color = vec4(1.0, 1.0, 1.0, alpha) * parameters.color;
}
}
}
}
}
Loading

0 comments on commit 777be2a

Please sign in to comment.