Rasterfarm-SDK
Loading...
Searching...
No Matches
implementation.h File Reference
#include "utils.h"
#include "circulator.h"
#include "types.h"
#include "memorypool.h"
#include "vector.h"
#include "raster.h"
#include <vulkan/vulkan.h>
#include <SPIRV/GlslangToSpv.h>

Classes

class  Implementation
 
struct  Implementation::SwapChainImage
 

Macros

#define VK_API_VERSION_MAJOR(version)   (((uint32_t)(version) >> 22U) & 0x7FU)
 
#define VK_API_VERSION_MINOR(version)   (((uint32_t)(version) >> 12U) & 0x3FFU)
 
#define BASE_FRAMEBUFFER_HANDLE   0
 

Typedefs

typedef UnorderedSet< PipelineStateStateUnorderedSet
 
typedef uint TextureUnit
 
typedef VertexMemory * VertexBufferHandle
 
typedef UniformMemory * UniformBufferHandle
 
typedef VkSampler UniformSamplerHandle
 
typedef ImageMemory * TextureHandle
 
typedef VkFramebuffer FrameBufferHandle
 
typedef VkRenderPass RenderBufferHandle
 
typedef VkFilter TextureFilterHandle
 
typedef glslang::TShader * ShaderHandle
 
typedef glslang::TProgram * ProgramHandle
 
typedef VkViewport Viewport
 
typedef VkRect2D Scissor
 

Enumerations

enum  PolygonMode {
  FILL = VK_POLYGON_MODE_FILL ,
  LINE = VK_POLYGON_MODE_LINE ,
  POINT = VK_POLYGON_MODE_POINT
}
 
enum  DrawPrimitive {
  TRIANGLES = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST ,
  TRIANGLE_FAN = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN ,
  TRIANGLE_STRIP = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP ,
  LINES = VK_PRIMITIVE_TOPOLOGY_LINE_LIST ,
  LINE_LOOP = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY ,
  LINE_STRIP = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP ,
  POINTS = VK_PRIMITIVE_TOPOLOGY_POINT_LIST ,
  PATCH = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
}
 
enum  DrawUsageHint {
  STATIC = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER ,
  DYNAMIC = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
}
 
enum  RenderBufferBit : uint {
  COLOR_BUFFER = 0x0001 ,
  DEPTH_BUFFER = 0x0002 ,
  STENCIL_BUFFER = 0x0004
}
 
enum  PipelineState : uint {
  NO_STATE = 0x0000 ,
  STENCIL_TEST = 0x0001 ,
  DEPTH_TEST = 0x0002 ,
  DEPTH_BOUNDS_TEST = 0x0004 ,
  DEPTH_CLAMP = 0x0008 ,
  DEPTH_BIAS = 0x0010 ,
  SCISSOR_TEST = 0x0020 ,
  COLOR_BLEND = 0x0040 ,
  CULL_FACE = 0x0080 ,
  RASTERIZER_DISCARD = 0x0100 ,
  SAMPLE_ALPHA_TO_COVERAGE = 0x0200 ,
  SAMPLE_COVERAGE = 0x0400 ,
  ORIENT_PRIMITIVES_CW = 0x0800 ,
  DEPTH_WRITE = 0x1000 ,
  PIPELINE_STATE_LAST = 0x2000
}
 
enum  CullFace {
  CULL_NO_FACE = VK_CULL_MODE_NONE ,
  CULL_BACK_FACE = VK_CULL_MODE_BACK_BIT ,
  CULL_FRONT_FACE = VK_CULL_MODE_FRONT_BIT ,
  CULL_FRONT_BACK_FACE = VK_CULL_MODE_FRONT_AND_BACK
}
 
enum  TextureType {
  QUAD_MAP = VK_IMAGE_VIEW_TYPE_2D ,
  CUBE_MAP = VK_IMAGE_VIEW_TYPE_CUBE
}
 
enum  ShaderType {
  VERTEX_SHADER = EShLangVertex ,
  FRAGMENT_SHADER = EShLangFragment ,
  GEOMETRY_SHADER = EShLangGeometry ,
  COMPUTE_SHADER = EShLangCompute ,
  RAY_GENERATOR_SHADER = EShLangRayGen ,
  TESSELLATION_CONTROL_SHADER = EShLangTessControl ,
  TESSELLATION_EVALUATION_SHADER = EShLangTessEvaluation
}
 
enum  TextureParameter {
  MINIFY_FILTER = 0 ,
  MAGNIFY_FILTER
}
 
enum  TextureWrap {
  CLAMP_TO_EDGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE ,
  CLAMP_TO_BORDER = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER ,
  REPEAT = VK_SAMPLER_ADDRESS_MODE_REPEAT ,
  MIRRORED_REPEAT = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT
}
 
enum  TextureFilterSetting {
  NEAREST = VK_FILTER_NEAREST ,
  LINEAR = VK_FILTER_LINEAR ,
  NEAREST_MIPMAP_NEAREST = VK_SAMPLER_MIPMAP_MODE_NEAREST ,
  LINEAR_MIPMAP_LINEAR = VK_SAMPLER_MIPMAP_MODE_LINEAR
}
 
enum  PixelFormat {
  UNDEFINED = VK_FORMAT_UNDEFINED ,
  ALPHA = VK_FORMAT_R32_UINT ,
  LUMINANCE = VK_FORMAT_R8_UNORM ,
  LUMINANCE_ALPHA = VK_FORMAT_R8G8_UNORM ,
  BGR = VK_FORMAT_B8G8R8_UNORM ,
  RGB = VK_FORMAT_R8G8B8_UNORM ,
  BGRA = VK_FORMAT_B8G8R8A8_UNORM ,
  RGBA = VK_FORMAT_R8G8B8A8_UNORM ,
  DEPTH = VK_FORMAT_D32_SFLOAT ,
  DEPTH_16 = VK_FORMAT_D16_UNORM ,
  DEPTH_24 = VK_FORMAT_D24_UNORM_S8_UINT
}
 
enum  BufferType {
  BYTE = 0 ,
  UNSIGNED_BYTE ,
  SHORT ,
  UNSIGNED_SHORT ,
  UNSIGNED_SHORT_5_6_5 ,
  UNSIGNED_SHORT_5_5_5_1 ,
  UNSIGNED_SHORT_4_4_4_4 ,
  INT ,
  UNSIGNED_INT ,
  FLOAT
}
 
enum  BlendFactor {
  BLEND_ZERO = VK_BLEND_FACTOR_ZERO ,
  BLEND_ONE = VK_BLEND_FACTOR_ONE ,
  BLEND_SRC_COLOR = VK_BLEND_FACTOR_SRC_COLOR ,
  BLEND_ONE_MINUS_SRC_COLOR = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR ,
  BLEND_DST_COLOR = VK_BLEND_FACTOR_DST_COLOR ,
  BLEND_ONE_MINUS_DST_COLOR = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR ,
  BLEND_SRC_ALPHA = VK_BLEND_FACTOR_SRC_ALPHA ,
  BLEND_ONE_MINUS_SRC_ALPHA = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA ,
  BLEND_DST_ALPHA = VK_BLEND_FACTOR_DST_ALPHA ,
  BLEND_ONE_MINUS_DST_ALPHA = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA
}
 
enum  TextureCubeFace {
  POSITIVE_X = CUBE_MAP ,
  NEGATIVE_X ,
  POSITIVE_Y ,
  NEGATIVE_Y ,
  POSITIVE_Z ,
  NEGATIVE_Z
}
 
enum  VertexOrientation {
  CLOCKWISE = VK_FRONT_FACE_CLOCKWISE ,
  COUNTERCLOCKWISE = VK_FRONT_FACE_COUNTER_CLOCKWISE
}
 
enum  {
  TEXTURE_UNIT_BASE = 0 ,
  INVALID_TEXTURE_UNIT = -1
}
 
enum  StencilOperation {
  STENCIL_OPERATION_KEEP = VK_STENCIL_OP_KEEP ,
  STENCIL_OPERATION_ZERO = VK_STENCIL_OP_ZERO ,
  STENCIL_OPERATION_REPLACE = VK_STENCIL_OP_REPLACE ,
  STENCIL_OPERATION_INC_AND_CLAMP = VK_STENCIL_OP_INCREMENT_AND_CLAMP ,
  STENCIL_OPERATION_DEC_AND_CLAMP = VK_STENCIL_OP_DECREMENT_AND_CLAMP ,
  STENCIL_OPERATION_INVERT = VK_STENCIL_OP_INVERT ,
  STENCIL_OPERATION_INC_AND_WRAP = VK_STENCIL_OP_INCREMENT_AND_WRAP ,
  STENCIL_OPERATION_DEC_AND_WRAP = VK_STENCIL_OP_INCREMENT_AND_WRAP
}
 
enum  CompareOperation {
  COMPARE_COMPARISON_NEVER = VK_COMPARE_OP_NEVER ,
  COMPARE_COMPARISON_LESS = VK_COMPARE_OP_LESS ,
  COMPARE_COMPARISON_EQUAL = VK_COMPARE_OP_EQUAL ,
  COMPARE_COMPARISON_LESS_OR_EQUAL = VK_COMPARE_OP_LESS_OR_EQUAL ,
  COMPARE_COMPARISON_GREATER = VK_COMPARE_OP_GREATER ,
  COMPARE_COMPARISON_NOT_EQUAL = VK_COMPARE_OP_NOT_EQUAL ,
  COMPARE_COMPARISON_GREATER_OR_EQUAL = VK_COMPARE_OP_GREATER_OR_EQUAL ,
  STENCIL_COMPARISON_ALWAYS = VK_COMPARE_OP_ALWAYS
}
 
enum  OutputAttachment {
  COLOR_ATTACHMENT = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL ,
  DEPTH_ATTACHMENT = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL ,
  STENCIL_ATTACHMENT = VK_IMAGE_LAYOUT_UNDEFINED
}
 
enum  BufferTarget {
  RENDER_BUFFER = VK_OBJECT_TYPE_RENDER_PASS ,
  FRAME_BUFFER = VK_OBJECT_TYPE_FRAMEBUFFER
}
 
enum  ShaderBufferType {
  VERTEX = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT ,
  INDEX = VK_BUFFER_USAGE_INDEX_BUFFER_BIT ,
  UNIFORM = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
}
 
enum  UniformDescriptorType {
  BUFFER = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER ,
  SAMPLER = VK_DESCRIPTOR_TYPE_SAMPLER ,
  STORAGE = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER ,
  TEXEL = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER ,
  IMAGE_SAMPLER = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER ,
  SAMPLED_IMAGE = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE ,
  INPUT_ATTACHMENT = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
}
 

Macro Definition Documentation

◆ BASE_FRAMEBUFFER_HANDLE

#define BASE_FRAMEBUFFER_HANDLE   0

◆ VK_API_VERSION_MAJOR

#define VK_API_VERSION_MAJOR ( version)    (((uint32_t)(version) >> 22U) & 0x7FU)

◆ VK_API_VERSION_MINOR

#define VK_API_VERSION_MINOR ( version)    (((uint32_t)(version) >> 12U) & 0x3FFU)

Typedef Documentation

◆ FrameBufferHandle

typedef VkFramebuffer FrameBufferHandle

◆ ProgramHandle

typedef glslang::TProgram* ProgramHandle

◆ RenderBufferHandle

typedef VkRenderPass RenderBufferHandle

◆ Scissor

typedef VkRect2D Scissor

◆ ShaderHandle

typedef glslang::TShader* ShaderHandle

◆ StateUnorderedSet

◆ TextureFilterHandle

typedef VkFilter TextureFilterHandle

◆ TextureHandle

typedef ImageMemory* TextureHandle

◆ TextureUnit

typedef uint TextureUnit

◆ UniformBufferHandle

typedef UniformMemory* UniformBufferHandle

◆ UniformSamplerHandle

typedef VkSampler UniformSamplerHandle

◆ VertexBufferHandle

typedef VertexMemory* VertexBufferHandle

◆ Viewport

typedef VkViewport Viewport

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
TEXTURE_UNIT_BASE 
INVALID_TEXTURE_UNIT 

◆ BlendFactor

Enumerator
BLEND_ZERO 
BLEND_ONE 
BLEND_SRC_COLOR 
BLEND_ONE_MINUS_SRC_COLOR 
BLEND_DST_COLOR 
BLEND_ONE_MINUS_DST_COLOR 
BLEND_SRC_ALPHA 
BLEND_ONE_MINUS_SRC_ALPHA 
BLEND_DST_ALPHA 
BLEND_ONE_MINUS_DST_ALPHA 

◆ BufferTarget

Enumerator
RENDER_BUFFER 
FRAME_BUFFER 

◆ BufferType

enum BufferType
Enumerator
BYTE 
UNSIGNED_BYTE 
SHORT 
UNSIGNED_SHORT 
UNSIGNED_SHORT_5_6_5 
UNSIGNED_SHORT_5_5_5_1 
UNSIGNED_SHORT_4_4_4_4 
INT 
UNSIGNED_INT 
FLOAT 

◆ CompareOperation

Enumerator
COMPARE_COMPARISON_NEVER 
COMPARE_COMPARISON_LESS 
COMPARE_COMPARISON_EQUAL 
COMPARE_COMPARISON_LESS_OR_EQUAL 
COMPARE_COMPARISON_GREATER 
COMPARE_COMPARISON_NOT_EQUAL 
COMPARE_COMPARISON_GREATER_OR_EQUAL 
STENCIL_COMPARISON_ALWAYS 

◆ CullFace

enum CullFace
Enumerator
CULL_NO_FACE 
CULL_BACK_FACE 
CULL_FRONT_FACE 
CULL_FRONT_BACK_FACE 

◆ DrawPrimitive

Enumerator
TRIANGLES 
TRIANGLE_FAN 
TRIANGLE_STRIP 
LINES 
LINE_LOOP 
LINE_STRIP 
POINTS 
PATCH 

◆ DrawUsageHint

Enumerator
STATIC 
DYNAMIC 

◆ OutputAttachment

Enumerator
COLOR_ATTACHMENT 
DEPTH_ATTACHMENT 
STENCIL_ATTACHMENT 

◆ PipelineState

enum PipelineState : uint

The first 3 states reserved to indicate which render-pass a given pipeline is rendering-to.

Enumerator
NO_STATE 
STENCIL_TEST 
DEPTH_TEST 
DEPTH_BOUNDS_TEST 
DEPTH_CLAMP 
DEPTH_BIAS 
SCISSOR_TEST 
COLOR_BLEND 
CULL_FACE 
RASTERIZER_DISCARD 
SAMPLE_ALPHA_TO_COVERAGE 
SAMPLE_COVERAGE 
ORIENT_PRIMITIVES_CW 
DEPTH_WRITE 
PIPELINE_STATE_LAST 

◆ PixelFormat

Enumerator
UNDEFINED 
ALPHA 
LUMINANCE 
LUMINANCE_ALPHA 
BGR 
RGB 
BGRA 
RGBA 
DEPTH 
DEPTH_16 
DEPTH_24 

◆ PolygonMode

Rasterization-mode for polygons.

Enumerator
FILL 
LINE 
POINT 

◆ RenderBufferBit

enum RenderBufferBit : uint
Enumerator
COLOR_BUFFER 
DEPTH_BUFFER 
STENCIL_BUFFER 

◆ ShaderBufferType

Enumerator
VERTEX 
INDEX 
UNIFORM 

◆ ShaderType

enum ShaderType
Enumerator
VERTEX_SHADER 
FRAGMENT_SHADER 
GEOMETRY_SHADER 
COMPUTE_SHADER 
RAY_GENERATOR_SHADER 
TESSELLATION_CONTROL_SHADER 
TESSELLATION_EVALUATION_SHADER 

◆ StencilOperation

Enumerator
STENCIL_OPERATION_KEEP 
STENCIL_OPERATION_ZERO 
STENCIL_OPERATION_REPLACE 
STENCIL_OPERATION_INC_AND_CLAMP 
STENCIL_OPERATION_DEC_AND_CLAMP 
STENCIL_OPERATION_INVERT 
STENCIL_OPERATION_INC_AND_WRAP 
STENCIL_OPERATION_DEC_AND_WRAP 

◆ TextureCubeFace

Enumerator
POSITIVE_X 
NEGATIVE_X 
POSITIVE_Y 
NEGATIVE_Y 
POSITIVE_Z 
NEGATIVE_Z 

◆ TextureFilterSetting

Enumerator
NEAREST 
LINEAR 
NEAREST_MIPMAP_NEAREST 
LINEAR_MIPMAP_LINEAR 

◆ TextureParameter

Enumerator
MINIFY_FILTER 
MAGNIFY_FILTER 

◆ TextureType

Enumerator
QUAD_MAP 
CUBE_MAP 

◆ TextureWrap

Enumerator
CLAMP_TO_EDGE 
CLAMP_TO_BORDER 
REPEAT 
MIRRORED_REPEAT 

◆ UniformDescriptorType

Enumerator
BUFFER 
SAMPLER 
STORAGE 
TEXEL 
IMAGE_SAMPLER 
SAMPLED_IMAGE 
INPUT_ATTACHMENT 

◆ VertexOrientation

Enumerator
CLOCKWISE 
COUNTERCLOCKWISE