52 lines
1.5 KiB
Diff
52 lines
1.5 KiB
Diff
|
Simple dithered motion blur effect, applied to whole rendering.
|
||
|
|
||
|
diff --git a/game.h b/game.h
|
||
|
index 1ad5131..d886e0b 100644
|
||
|
--- a/game.h
|
||
|
+++ b/game.h
|
||
|
@@ -347,6 +347,8 @@ struct
|
||
|
char popupStr[LCR_POPUP_STR_SIZE];
|
||
|
uint8_t popupCountdown;
|
||
|
|
||
|
+ int_fast8_t frameCycle;
|
||
|
+
|
||
|
struct
|
||
|
{
|
||
|
uint8_t selectedTab;
|
||
|
@@ -399,6 +401,9 @@ uint8_t LCR_gameMusicOn(void)
|
||
|
|
||
|
void LCR_gameDrawPixel(unsigned long index, uint16_t color)
|
||
|
{
|
||
|
+ if ((index % LCR_SETTING_MOTION_BLUR_FRAMES) != LCR_game.frameCycle)
|
||
|
+ return;
|
||
|
+
|
||
|
#if LCR_SETTING_RESOLUTION_SUBDIVIDE <= 1
|
||
|
LCR_drawPixel(index,color);
|
||
|
#else
|
||
|
@@ -1899,6 +1904,8 @@ uint8_t LCR_gameStep(uint32_t time)
|
||
|
{
|
||
|
LCR_LOG2("rendering next frame");
|
||
|
|
||
|
+ LCR_game.frameCycle = LCR_renderer.frame % LCR_SETTING_MOTION_BLUR_FRAMES;
|
||
|
+
|
||
|
while (time >= LCR_game.nextRenderFrameTime)
|
||
|
LCR_game.nextRenderFrameTime += 1000 / LCR_SETTING_FPS;
|
||
|
|
||
|
diff --git a/settings.h b/settings.h
|
||
|
index 332df45..4c28e70 100644
|
||
|
--- a/settings.h
|
||
|
+++ b/settings.h
|
||
|
@@ -222,6 +222,12 @@
|
||
|
#define LCR_SETTING_TIME_MULTIPLIER 100
|
||
|
#endif
|
||
|
|
||
|
+#ifndef LCR_SETTING_MOTION_BLUR_FRAMES
|
||
|
+ #define LCR_SETTING_MOTION_BLUR_FRAMES 2
|
||
|
+ /** Length of the motion blur rendering cycle. The longer, the more pronounced
|
||
|
+ the effect. Should be kept a power of two else performance suffers greatly. */
|
||
|
+#endif
|
||
|
+
|
||
|
#ifndef LCR_SETTING_GHOST_STEP
|
||
|
/** Step (in physics engine ticks) by which the samples for ghost car will be
|
||
|
spaced (positions inbetween will be interpolated). Lower step along with more
|