Browse Source

move default shaders into a source file

testing
cinnaboot 6 years ago
parent
commit
e588d897a3
  1. 66
      src/default_shaders.cpp
  2. 26
      src/renderer.cpp

66
src/default_shaders.cpp

@ -0,0 +1,66 @@
const char* DEFAULT_VERTEX_SHADER = R"VS(
#version 330 core
layout (location = 0) in vec3 vertexPosition_modelspace;
layout (location = 1) in vec3 normal;
layout (location = 2) in vec3 texCoord;
out vec3 fragVertex;
out vec3 fragNormal;
out vec2 fragUV;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
void main()
{
fragNormal = normal;
fragVertex = vertexPosition_modelspace;
fragUV = texCoord.st;
gl_Position = projection * view * model * vec4(vertexPosition_modelspace, 1);
}
)VS";
const char* DEFAULT_FRAGMENT_SHADER = R"FS(
#version 330 core
//in vec3 fragColor; // NOTE: removing this line fails to link program... somehow?
in vec3 fragVertex;
in vec3 fragNormal;
in vec2 fragUV;
out vec4 color;
uniform mat4 model;
uniform mat3 normal_matrix;
struct point_light {
uint light_ID;
vec3 position;
vec3 color;
float intensity;
};
#define MAX_LIGHTS 10
uniform point_light lights[MAX_LIGHTS];
uniform uint num_lights = 0u;
uniform sampler2D sampler;
void main()
{
vec3 normal = normalize(normal_matrix * fragNormal);
vec3 fragPosition = vec3(model * vec4(fragVertex, 1));
float totalBrightness = 0;
for (uint i = 0u; i < num_lights; i++) {
vec3 surfaceToLight = lights[i].position - fragPosition;
float brightness = dot(normal, surfaceToLight) / (length(surfaceToLight) * length(normal));
totalBrightness += brightness;
}
color = clamp(totalBrightness, 0, 1) * texture(sampler, fragUV.st);
}
)FS";

26
src/renderer.cpp

@ -12,11 +12,9 @@
#include <glm/gtc/matrix_transform.hpp>
#include "dumbLog.h"
#include "renderer.h"
#include "default_shaders.cpp"
#define DEFAULT_VERTEX_SHADER_FILE "../data/default.vs"
#define DEFAULT_FRAGMENT_SHADER_FILE "../data/default.fs"
#define MAX_LIGHTS 10 // NOTE: needs to match the fragment shader source
#define DEFAULT_PALETTE_DIR "../data"
#define DEFAULT_PALETTE_FILE "palette.png"
@ -35,7 +33,6 @@ void openglDebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity,
bool initSDL(SDL_Handles& handles, v2i& viewport_dims);
bool initContext(SDL_Handles& handles);
bool initGL();
bool initShaders(render_state* rs);
bool initPalette(uint palette_id, util_image& image);
bool initDebugRenderGroup(render_state* rs);
void setDefaults(render_state* rs);
@ -52,7 +49,7 @@ renInit()
if (initSDL(rs->handles, rs->viewport_dims) &&
initContext(rs->handles) &&
initGL() &&
initShaders(rs) &&
rgInitShaderProgram(rs->default_shader, DEFAULT_VERTEX_SHADER, DEFAULT_FRAGMENT_SHADER) &&
initPalette(rs->palette_id, rs->palette_image) &&
initDebugRenderGroup(rs) )
{
@ -212,25 +209,6 @@ initGL()
return true;
}
bool
initShaders(render_state* rs)
{
const char* vs_code = utilDumpTextFile(DEFAULT_VERTEX_SHADER_FILE);
const char* fs_code = utilDumpTextFile(DEFAULT_FRAGMENT_SHADER_FILE);
bool shader_error = !rgInitShaderProgram(rs->default_shader, vs_code, fs_code);
utilSafeFree(vs_code);
utilSafeFree(fs_code);
if (shader_error) {
LOG(Error) << "Error initializing shader program\n";
return false;
}
return true;
}
bool
initPalette(uint palette_id, util_image& image)
{

Loading…
Cancel
Save