aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assets/shaders/glsl330/color-depth.fs24
-rw-r--r--assets/shaders/glsl330/postprocessing.fs26
-rw-r--r--design.org3
-rw-r--r--src/assets.c11
-rw-r--r--src/assets.h4
-rw-r--r--src/game.c6
-rw-r--r--src/world.h4
7 files changed, 42 insertions, 36 deletions
diff --git a/assets/shaders/glsl330/color-depth.fs b/assets/shaders/glsl330/color-depth.fs
deleted file mode 100644
index c011df5..0000000
--- a/assets/shaders/glsl330/color-depth.fs
+++ /dev/null
@@ -1,24 +0,0 @@
-#version 330
-
-in vec2 fragTexCoord;
-in vec4 fragColor;
-
-uniform sampler2D texture0;
-uniform vec4 colDiffuse;
-
-out vec4 finalColor;
-
-const int factor = 30; // x/255
-
-void main()
-{
- // Texel color fetching from texture sampler
- vec4 texelColor = texture(texture0, fragTexCoord)*colDiffuse*fragColor;
-
- ivec4 color = ivec4(texelColor / factor * 255);
- color *= factor;
-
- // Calculate final fragment color
- finalColor = vec4(float(color.r) / 255, float(color.g) / 255,
- float(color.b) / 255, texelColor.a);
-} \ No newline at end of file
diff --git a/assets/shaders/glsl330/postprocessing.fs b/assets/shaders/glsl330/postprocessing.fs
new file mode 100644
index 0000000..a2dcb17
--- /dev/null
+++ b/assets/shaders/glsl330/postprocessing.fs
@@ -0,0 +1,26 @@
+#version 330
+
+in vec2 fragTexCoord;
+in vec4 fragColor;
+
+uniform sampler2D texture0;
+uniform vec4 colDiffuse;
+
+out vec4 finalColor;
+
+float gamma = 0.6;
+float numColors = 11.0;
+
+void main()
+{
+ // Texel color fetching from texture sampler
+ vec3 texelColor = texture(texture0, fragTexCoord.xy).rgb;
+
+ texelColor = pow(texelColor, vec3(gamma, gamma, gamma));
+ texelColor = texelColor*numColors;
+ texelColor = floor(texelColor);
+ texelColor = texelColor/numColors;
+ texelColor = pow(texelColor, vec3(1.0/gamma));
+
+ finalColor = vec4(texelColor, 1.0);
+}
diff --git a/design.org b/design.org
index 7c8d313..d2bcecc 100644
--- a/design.org
+++ b/design.org
@@ -74,7 +74,7 @@ said you will have your neck snapped no matter what you do.
19. Laptop running Haiku OS.
20. Nuclear Ninja Tortoise.
-* Rest of the items [2/41]
+* Rest of the items [2/42]
+ [X] Old mint.
+ [X] Sticky nickel.
+ [ ] Dollaridoo.
@@ -120,6 +120,7 @@ said you will have your neck snapped no matter what you do.
+ [ ] Blood covered rock.
+ [ ] Blood covered hammer.
+ [ ] Duck tape. No, duck tape should not be used as a permanent fix!
++ [ ] Infrared goggles.
* Design and programming
+ It will have a open world making heavy use of height maps.
diff --git a/src/assets.c b/src/assets.c
index 0180d03..6619c21 100644
--- a/src/assets.c
+++ b/src/assets.c
@@ -25,7 +25,7 @@ const char imageAssetPaths[IMAGE_ASSET_COUNT][FT_NAMEMAX] = {
const char shaderAssetNames[SHADER_ASSET_COUNT][FT_NAMEMAX] = {
"skybox",
"instancing",
- "color-depth"
+ "postprocessing"
};
const char modelAssetPaths[MODEL_ASSET_COUNT][FT_NAMEMAX] = {
@@ -35,7 +35,8 @@ const char modelAssetPaths[MODEL_ASSET_COUNT][FT_NAMEMAX] = {
"ShopKeeper.obj" // John and Ron ARE NOT the same person
};
-void initShaderAssets(Shader shaders[SHADER_ASSET_COUNT])
+void initShaderAssets(Shader shaders[SHADER_ASSET_COUNT],
+ const Settings* settings)
{
// Skybox.
Shader shader = shaders[SKYBOX_SHADER];
@@ -45,6 +46,8 @@ void initShaderAssets(Shader shaders[SHADER_ASSET_COUNT])
// Instancing.
shader = shaders[INSTANCING_SHADER];
shader.locs[SHADER_LOC_MATRIX_MVP] = GetShaderLocation(shader, "mvp");
+
+ // Postprocessing.
}
void initModelAssets(Assets* assets)
@@ -63,7 +66,7 @@ void initModelAssets(Assets* assets)
do they also pronounce Mario as Mor-io?
*/
-void initAssets(Assets* assets)
+void initAssets(Assets* assets, const Settings* settings)
{
// Textures.
for (int index = 0; index < TEXTURE_ASSET_COUNT; ++index)
@@ -89,7 +92,7 @@ void initAssets(Assets* assets)
shaderAssetNames[index]));
}
- initShaderAssets(assets->shaders);
+ initShaderAssets(assets->shaders, settings);
// Models.
for (int index = 0; index < MODEL_ASSET_COUNT; ++index)
diff --git a/src/assets.h b/src/assets.h
index 9b93e0e..1ad82d1 100644
--- a/src/assets.h
+++ b/src/assets.h
@@ -44,7 +44,7 @@ enum {
enum {
SKYBOX_SHADER,
INSTANCING_SHADER,
- COLOR_DEPTH_SHADER
+ POSTPROCESSING_SHADER
};
// Model asset ids.
@@ -62,7 +62,7 @@ typedef struct {
Model models[MODEL_ASSET_COUNT];
} Assets;
-void initAssets(Assets* assets);
+void initAssets(Assets* assets, const Settings* settings);
void closeAssets(Assets* assets);
#endif
diff --git a/src/game.c b/src/game.c
index 7c4d240..6166ac7 100644
--- a/src/game.c
+++ b/src/game.c
@@ -50,7 +50,7 @@ void initGame(Game* game)
resetScreenScale(game);
// Assets.
- initAssets(&game->assets);
+ initAssets(&game->assets, &game->settings);
// Skybox.
game->skybox = LoadModelFromMesh(GenMeshCube(1.0, 1.0, 1.0));
@@ -66,7 +66,7 @@ void initGame(Game* game)
game->player = createPlayer();
game->player.position = Vector3Scale(game->world.size, 0.5);
- DisableCursor();
+ //DisableCursor();
}
void updateMainMenuScene(Game* game)
@@ -108,7 +108,7 @@ void updateGameScene(Game* game)
ClearBackground(BLACK);
- BeginShaderMode(game->assets.shaders[COLOR_DEPTH_SHADER]);
+ BeginShaderMode(game->assets.shaders[POSTPROCESSING_SHADER]);
drawGameScreen(game);
EndShaderMode();
}
diff --git a/src/world.h b/src/world.h
index 93bcb38..08c4f39 100644
--- a/src/world.h
+++ b/src/world.h
@@ -17,8 +17,8 @@
#define WORLD_GROUND_COLOR GREEN
#define WORLD_GROUND_BLUR 2
-#define WORLD_GROUND_CONTRAST -30
-#define WORLD_GROUND_IMAGE_NOISE 0.3
+#define WORLD_GROUND_CONTRAST 0
+#define WORLD_GROUND_IMAGE_NOISE 0.5
#define BVH_MAX 4 // Max entities per node.
#define BVH_MAX_BRANCH_COUNT 8