mirror of https://github.com/bjornbytes/lovr.git
Font shader;
This commit is contained in:
parent
93c286afb6
commit
8ad3e64a2d
|
@ -79,6 +79,7 @@ void lovrGraphicsInit() {
|
|||
state.skyboxShader = lovrShaderCreate(lovrSkyboxVertexShader, lovrSkyboxFragmentShader);
|
||||
int uniformId = lovrShaderGetUniformId(state.skyboxShader, "cube");
|
||||
lovrShaderSendInt(state.skyboxShader, uniformId, 1);
|
||||
state.fontShader = lovrShaderCreate(lovrDefaultVertexShader, lovrFontFragmentShader);
|
||||
state.fullscreenShader = lovrShaderCreate(lovrNoopVertexShader, lovrDefaultFragmentShader);
|
||||
state.defaultTexture = lovrTextureCreate(lovrTextureDataGetBlank(1, 1, 0xff, FORMAT_RGBA));
|
||||
|
||||
|
@ -1029,6 +1030,17 @@ void lovrGraphicsSkybox(Skybox* skybox, float angle, float ax, float ay, float a
|
|||
}
|
||||
|
||||
void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAlign halign, VerticalAlign valign) {
|
||||
Shader* lastShader = lovrGraphicsGetShader();
|
||||
if (lastShader == state.defaultShader) {
|
||||
lovrRetain(&lastShader->ref);
|
||||
lovrGraphicsSetShader(state.fontShader);
|
||||
}
|
||||
|
||||
lovrGraphicsEnsureFont();
|
||||
lovrFontPrint(state.activeFont, str, transform, wrap, halign, valign);
|
||||
|
||||
if (lastShader == state.defaultShader) {
|
||||
lovrGraphicsSetShader(lastShader);
|
||||
lovrRelease(&lastShader->ref);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,6 +73,7 @@ typedef struct {
|
|||
Shader* activeShader;
|
||||
Shader* defaultShader;
|
||||
Shader* skyboxShader;
|
||||
Shader* fontShader;
|
||||
Shader* fullscreenShader;
|
||||
Font* activeFont;
|
||||
Font* defaultFont;
|
||||
|
|
|
@ -74,6 +74,19 @@ const char* lovrSkyboxFragmentShader = ""
|
|||
"}"
|
||||
"";
|
||||
|
||||
const char* lovrFontFragmentShader = ""
|
||||
"float median(float r, float g, float b) { \n"
|
||||
" return max(min(r, g), min(max(r, g), b)); \n"
|
||||
"} \n"
|
||||
"vec4 color(vec4 graphicsColor, sampler2D image, vec2 uv) { \n"
|
||||
" vec3 sample = texture(image, uv).rgb; \n"
|
||||
" float sdf = median(sample.r, sample.g, sample.b); \n"
|
||||
" float w = fwidth(sdf); \n"
|
||||
" float alpha = smoothstep(.5 - w, .5 + w, sdf); \n"
|
||||
" return vec4(graphicsColor.rgb, alpha); \n"
|
||||
"}"
|
||||
"";
|
||||
|
||||
const char* lovrNoopVertexShader = ""
|
||||
"vec4 position(mat4 projection, mat4 transform, vec4 vertex) { \n"
|
||||
" return vertex; \n"
|
||||
|
|
|
@ -36,6 +36,7 @@ extern const char* lovrDefaultVertexShader;
|
|||
extern const char* lovrDefaultFragmentShader;
|
||||
extern const char* lovrSkyboxVertexShader;
|
||||
extern const char* lovrSkyboxFragmentShader;
|
||||
extern const char* lovrFontFragmentShader;
|
||||
extern const char* lovrNoopVertexShader;
|
||||
|
||||
GLuint compileShader(GLuint type, const char* source);
|
||||
|
|
Loading…
Reference in New Issue