Add no-op standard shader;

This commit is contained in:
bjorn 2019-06-20 14:21:35 -07:00
parent 612f699aa4
commit 4611b1c9a3
5 changed files with 21 additions and 0 deletions

View File

@ -78,6 +78,7 @@ const char* CompareModes[] = {
const char* DefaultShaders[] = {
[SHADER_UNLIT] = "unlit",
[SHADER_STANDARD] = "standard",
[SHADER_CUBE] = "cube",
[SHADER_PANO] = "pano",
[SHADER_FONT] = "font",

View File

@ -62,6 +62,7 @@ static const char* getUniformTypeName(const Uniform* uniform) {
Shader* lovrShaderInitDefault(Shader* shader, DefaultShader type, ShaderFlag* flags, uint32_t flagCount) {
switch (type) {
case SHADER_UNLIT: return lovrShaderInitGraphics(shader, NULL, NULL, flags, flagCount);
case SHADER_STANDARD: return lovrShaderInitGraphics(shader, lovrStandardVertexShader, lovrStandardFragmentShader, flags, flagCount);
case SHADER_CUBE: return lovrShaderInitGraphics(shader, lovrCubeVertexShader, lovrCubeFragmentShader, flags, flagCount);
case SHADER_PANO: return lovrShaderInitGraphics(shader, lovrCubeVertexShader, lovrPanoFragmentShader, flags, flagCount);
case SHADER_FONT: return lovrShaderInitGraphics(shader, NULL, lovrFontFragmentShader, flags, flagCount);

View File

@ -53,6 +53,7 @@ typedef struct {
typedef enum {
SHADER_UNLIT,
SHADER_STANDARD,
SHADER_CUBE,
SHADER_PANO,
SHADER_FONT,

View File

@ -115,6 +115,22 @@ const char* lovrUnlitFragmentShader = ""
" return graphicsColor * lovrDiffuseColor * vertexColor * texture(image, uv); \n"
"}";
const char* lovrStandardVertexShader = ""
"out vec3 vWorldPosition; \n"
"out vec3 vWorldNormal; \n"
"vec4 position(mat4 projection, mat4 transform, vec4 vertex) { \n"
" vWorldPosition = vec3(lovrModel * vertex); \n"
" vWorldNormal = mat3(lovrModel) * lovrNormal; // TODO non-uniform scale \n"
" return projection * lovrView * vec4(vWorldPosition, 1.); \n"
"}";
const char* lovrStandardFragmentShader = ""
"in vec3 vWorldPosition; \n"
"in vec3 vWorldNormal; \n"
"vec4 color(vec4 graphicsColor, sampler2D image, vec2 uv) { \n"
" return vec4(1., 0., 0., 1.); \n"
"}";
const char* lovrCubeVertexShader = ""
"out vec3 texturePosition[2]; \n"
"vec4 position(mat4 projection, mat4 transform, vec4 vertex) { \n"

View File

@ -8,6 +8,8 @@ extern const char* lovrShaderComputePrefix;
extern const char* lovrShaderComputeSuffix;
extern const char* lovrUnlitVertexShader;
extern const char* lovrUnlitFragmentShader;
extern const char* lovrStandardVertexShader;
extern const char* lovrStandardFragmentShader;
extern const char* lovrCubeVertexShader;
extern const char* lovrCubeFragmentShader;
extern const char* lovrPanoFragmentShader;