Extract retained stroke preview pass orchestration plan
This commit is contained in:
157
src/shader.h
157
src/shader.h
@@ -1,91 +1,104 @@
|
||||
#pragma once
|
||||
#include "renderer_api/renderer_api.h"
|
||||
#include "util.h"
|
||||
|
||||
#include "../libs/glm/glm/glm.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <sys/stat.h>
|
||||
|
||||
uint16_t constexpr shader_const_hash(const char* input)
|
||||
{
|
||||
return *input ?
|
||||
static_cast<uint16_t>(*input) + 33 * shader_const_hash(input + 1) :
|
||||
5381;
|
||||
}
|
||||
|
||||
bool check_uniform_uniqueness();
|
||||
|
||||
enum class kShaderUniform : uint16_t
|
||||
{
|
||||
MVP = const_hash("mvp"),
|
||||
Tex = const_hash("tex"),
|
||||
TexFG = const_hash("tex_fg"),
|
||||
TexBG = const_hash("tex_bg"),
|
||||
TexMix = const_hash("tex_mix"),
|
||||
TexMixA = const_hash("tex_mix_alpha"),
|
||||
TexMask = const_hash("tex_mask"),
|
||||
TexDual = const_hash("tex_dual"),
|
||||
TexStroke = const_hash("tex_stroke"),
|
||||
TexPattern = const_hash("tex_pattern"),
|
||||
PatternOffset = const_hash("pattern_offset"),
|
||||
PatternAlpha = const_hash("pattern_alpha"),
|
||||
MixAlpha = const_hash("mix_alpha"),
|
||||
Opacity = const_hash("opacity"),
|
||||
Wet = const_hash("wet"),
|
||||
Lock = const_hash("lock"),
|
||||
Col = const_hash("col"),
|
||||
Tof = const_hash("tof"),
|
||||
Tsz = const_hash("tsz"),
|
||||
Alpha = const_hash("alpha"),
|
||||
Mask = const_hash("mask"),
|
||||
Resolution = const_hash("resolution"),
|
||||
Highlight = const_hash("highlight"),
|
||||
BlendMode = const_hash("blend_mode"),
|
||||
DualBlendMode = const_hash("dual_blend_mode"),
|
||||
Noise = const_hash("noise"),
|
||||
Direction = const_hash("dir"),
|
||||
UseDual = const_hash("use_dual"),
|
||||
UsePattern = const_hash("use_pattern"),
|
||||
LightDir = const_hash("light_dir"),
|
||||
Mode = const_hash("mode"),
|
||||
Ambient = const_hash("ambient"),
|
||||
PatternInvert = const_hash("pattern_invert"),
|
||||
PatternScale = const_hash("pattern_scale"),
|
||||
PatternBright = const_hash("pattern_bright"),
|
||||
PatternContrast = const_hash("pattern_contr"),
|
||||
PatternDepth = const_hash("pattern_depth"),
|
||||
PatternBlendMode = const_hash("patt_blend_mode"),
|
||||
Colorize = const_hash("colorize"),
|
||||
DualAlpha = const_hash("dual_alpha"),
|
||||
UseFragcoord = const_hash("use_fragcoord"),
|
||||
DrawOutline = const_hash("draw_outline"),
|
||||
MVP = shader_const_hash("mvp"),
|
||||
Tex = shader_const_hash("tex"),
|
||||
TexFG = shader_const_hash("tex_fg"),
|
||||
TexBG = shader_const_hash("tex_bg"),
|
||||
TexMix = shader_const_hash("tex_mix"),
|
||||
TexMixA = shader_const_hash("tex_mix_alpha"),
|
||||
TexMask = shader_const_hash("tex_mask"),
|
||||
TexDual = shader_const_hash("tex_dual"),
|
||||
TexStroke = shader_const_hash("tex_stroke"),
|
||||
TexPattern = shader_const_hash("tex_pattern"),
|
||||
PatternOffset = shader_const_hash("pattern_offset"),
|
||||
PatternAlpha = shader_const_hash("pattern_alpha"),
|
||||
MixAlpha = shader_const_hash("mix_alpha"),
|
||||
Opacity = shader_const_hash("opacity"),
|
||||
Wet = shader_const_hash("wet"),
|
||||
Lock = shader_const_hash("lock"),
|
||||
Col = shader_const_hash("col"),
|
||||
Tof = shader_const_hash("tof"),
|
||||
Tsz = shader_const_hash("tsz"),
|
||||
Alpha = shader_const_hash("alpha"),
|
||||
Mask = shader_const_hash("mask"),
|
||||
Resolution = shader_const_hash("resolution"),
|
||||
Highlight = shader_const_hash("highlight"),
|
||||
BlendMode = shader_const_hash("blend_mode"),
|
||||
DualBlendMode = shader_const_hash("dual_blend_mode"),
|
||||
Noise = shader_const_hash("noise"),
|
||||
Direction = shader_const_hash("dir"),
|
||||
UseDual = shader_const_hash("use_dual"),
|
||||
UsePattern = shader_const_hash("use_pattern"),
|
||||
LightDir = shader_const_hash("light_dir"),
|
||||
Mode = shader_const_hash("mode"),
|
||||
Ambient = shader_const_hash("ambient"),
|
||||
PatternInvert = shader_const_hash("pattern_invert"),
|
||||
PatternScale = shader_const_hash("pattern_scale"),
|
||||
PatternBright = shader_const_hash("pattern_bright"),
|
||||
PatternContrast = shader_const_hash("pattern_contr"),
|
||||
PatternDepth = shader_const_hash("pattern_depth"),
|
||||
PatternBlendMode = shader_const_hash("patt_blend_mode"),
|
||||
Colorize = shader_const_hash("colorize"),
|
||||
DualAlpha = shader_const_hash("dual_alpha"),
|
||||
UseFragcoord = shader_const_hash("use_fragcoord"),
|
||||
DrawOutline = shader_const_hash("draw_outline"),
|
||||
};
|
||||
|
||||
enum class kShader : uint16_t
|
||||
{
|
||||
Color = const_hash("color"),
|
||||
ColorQuad = const_hash("color-quad"),
|
||||
ColorTri = const_hash("color-tri"),
|
||||
ColorHue = const_hash("color-hue"),
|
||||
Texture = const_hash("texture"),
|
||||
TextureMask = const_hash("texture-mask"),
|
||||
TextureColorize = const_hash("texture-colorize"),
|
||||
TextureAlpha= const_hash("texture-alpha"),
|
||||
TextureBlend= const_hash("texture-blend"),
|
||||
CompErase = const_hash("comp-erase"),
|
||||
CompDraw = const_hash("comp-draw"),
|
||||
UVs = const_hash("uvs"),
|
||||
UVs_2 = const_hash("uvs2"),
|
||||
Font = const_hash("font"),
|
||||
Atlas = const_hash("atlas"),
|
||||
Stroke = const_hash("stroke"),
|
||||
StrokePad = const_hash("stroke-pad"),
|
||||
StrokeDilate= const_hash("stroke-dilate"),
|
||||
StrokePreview = const_hash("stroke-preview"),
|
||||
Checkerboard= const_hash("checkerboard"),
|
||||
Equirect = const_hash("equirect"),
|
||||
BrushStroke = const_hash("brush-stroke"),
|
||||
VertexColor = const_hash("vertex-color"),
|
||||
Lambert = const_hash("lambert"),
|
||||
LambertLightmap = const_hash("lambert-lightmap"),
|
||||
BakeUV = const_hash("bakeuv"),
|
||||
Color = shader_const_hash("color"),
|
||||
ColorQuad = shader_const_hash("color-quad"),
|
||||
ColorTri = shader_const_hash("color-tri"),
|
||||
ColorHue = shader_const_hash("color-hue"),
|
||||
Texture = shader_const_hash("texture"),
|
||||
TextureMask = shader_const_hash("texture-mask"),
|
||||
TextureColorize = shader_const_hash("texture-colorize"),
|
||||
TextureAlpha= shader_const_hash("texture-alpha"),
|
||||
TextureBlend= shader_const_hash("texture-blend"),
|
||||
CompErase = shader_const_hash("comp-erase"),
|
||||
CompDraw = shader_const_hash("comp-draw"),
|
||||
UVs = shader_const_hash("uvs"),
|
||||
UVs_2 = shader_const_hash("uvs2"),
|
||||
Font = shader_const_hash("font"),
|
||||
Atlas = shader_const_hash("atlas"),
|
||||
Stroke = shader_const_hash("stroke"),
|
||||
StrokePad = shader_const_hash("stroke-pad"),
|
||||
StrokeDilate= shader_const_hash("stroke-dilate"),
|
||||
StrokePreview = shader_const_hash("stroke-preview"),
|
||||
Checkerboard= shader_const_hash("checkerboard"),
|
||||
Equirect = shader_const_hash("equirect"),
|
||||
BrushStroke = shader_const_hash("brush-stroke"),
|
||||
VertexColor = shader_const_hash("vertex-color"),
|
||||
Lambert = shader_const_hash("lambert"),
|
||||
LambertLightmap = shader_const_hash("lambert-lightmap"),
|
||||
BakeUV = shader_const_hash("bakeuv"),
|
||||
};
|
||||
|
||||
class Shader
|
||||
{
|
||||
std::map<std::string, struct stat> m_deps;
|
||||
std::string m_path;
|
||||
std::map<kShaderUniform, GLuint> m_umap;
|
||||
GLuint prog;
|
||||
std::map<kShaderUniform, unsigned int> m_umap;
|
||||
unsigned int prog;
|
||||
std::string read(const std::string& path);
|
||||
public:
|
||||
kShader name;
|
||||
@@ -102,7 +115,7 @@ public:
|
||||
void u_int(kShaderUniform id, int i);
|
||||
void u_int(const char* uniform_name, int i);
|
||||
void u_float(kShaderUniform id, float f);
|
||||
GLint GetAttribLocation(const char* attribute_name);
|
||||
int GetAttribLocation(const char* attribute_name);
|
||||
};
|
||||
|
||||
class ShaderManager
|
||||
|
||||
Reference in New Issue
Block a user