Add comments
This commit is contained in:
parent
527103bc78
commit
6c8badaeb7
4 changed files with 32 additions and 11 deletions
10
demo1.cpp
10
demo1.cpp
|
@ -1,5 +1,8 @@
|
||||||
/**
|
/**
|
||||||
WIP raycasting demo for Pokitto.
|
Raycasting demo 1 for Pokitto.
|
||||||
|
|
||||||
|
This demo is a showoff of various features (movement, textures, sprites, fog,
|
||||||
|
...) , but has low FPS.
|
||||||
|
|
||||||
Don't forget to compile with -O3!
|
Don't forget to compile with -O3!
|
||||||
|
|
||||||
|
@ -686,7 +689,8 @@ Unit ceilingHeightAt(int16_t x, int16_t y)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Function for drawing a single pixel (like fragment shader).
|
Function for drawing a single pixel (like fragment shader). Bottleneck =>
|
||||||
|
should be as fast as possible.
|
||||||
*/
|
*/
|
||||||
inline void pixelFunc(PixelInfo pixel)
|
inline void pixelFunc(PixelInfo pixel)
|
||||||
{
|
{
|
||||||
|
@ -771,7 +775,7 @@ void draw()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool runReleased = false;
|
bool runReleased = false; // helper for detecting switching between walk/run
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
/**
|
/**
|
||||||
WIP raycasting demo for Pokitto.
|
Raycasting demo 2 for Pokitto.
|
||||||
|
|
||||||
|
This demo shows the simple version (only 1 intersection) of raycasting. Has
|
||||||
|
a fairly high FPS.
|
||||||
|
|
||||||
Don't forget to compile with -O3!
|
Don't forget to compile with -O3!
|
||||||
|
|
||||||
|
|
14
demo3.cpp
14
demo3.cpp
|
@ -1,5 +1,8 @@
|
||||||
/**
|
/**
|
||||||
WIP raycasting demo for Pokitto.
|
Raycasting demo 3 for Pokitto.
|
||||||
|
|
||||||
|
Minecraft-like demo, shows an interactive terrain editing and raycasting
|
||||||
|
without textures.
|
||||||
|
|
||||||
Don't forget to compile with -O3!
|
Don't forget to compile with -O3!
|
||||||
|
|
||||||
|
@ -25,7 +28,7 @@ Player player;
|
||||||
#define JUMP_SPEED 500
|
#define JUMP_SPEED 500
|
||||||
|
|
||||||
char floorColor = 0;
|
char floorColor = 0;
|
||||||
Vector2D selectedSquare; ///< Coords of tile selected for editing.
|
Vector2D selectedSquare; ///< Coords of a square selected for editing.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Represents one terrain change against the implicit terrain.
|
Represents one terrain change against the implicit terrain.
|
||||||
|
@ -38,10 +41,11 @@ public:
|
||||||
int8_t mColor;
|
int8_t mColor;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_CHANGES 16
|
#define MAX_CHANGES 16 ///< Maximum number of simultaneous terrain changes.
|
||||||
|
|
||||||
Change changes[MAX_CHANGES];
|
Change changes[MAX_CHANGES]; ///< Terrain change list.
|
||||||
|
|
||||||
|
// helpers
|
||||||
bool editReleased = false;
|
bool editReleased = false;
|
||||||
bool editing = false;
|
bool editing = false;
|
||||||
uint16_t changeIndex = 0;
|
uint16_t changeIndex = 0;
|
||||||
|
@ -51,6 +55,8 @@ int16_t editCounter = 0;
|
||||||
uint8_t squareColors[SQUARE_COLORS];
|
uint8_t squareColors[SQUARE_COLORS];
|
||||||
|
|
||||||
#define HEIGHT_PROFILE_LENGTH 256
|
#define HEIGHT_PROFILE_LENGTH 256
|
||||||
|
|
||||||
|
/// Used for terrain generation.
|
||||||
const int8_t heightProfile[] = {
|
const int8_t heightProfile[] = {
|
||||||
9,9,9,10,10,10,11,11,12,13,13,14,14,14,15,15,15,16,16,16,16,16,15,15,15,14,14,
|
9,9,9,10,10,10,11,11,12,13,13,14,14,14,15,15,15,16,16,16,16,16,15,15,15,14,14,
|
||||||
13,13,12,11,10,10,9,9,9,8,8,8,8,8,8,7,7,7,6,5,4,4,3,3,3,3,3,3,4,5,7,8,10,11,12,
|
13,13,12,11,10,10,9,9,9,8,8,8,8,8,8,7,7,7,6,5,4,4,3,3,3,3,3,3,4,5,7,8,10,11,12,
|
||||||
|
|
14
general.hpp
14
general.hpp
|
@ -1,5 +1,9 @@
|
||||||
/**
|
/**
|
||||||
General definitions for Pokitto raycasting demos.
|
General definitions common for Pokitto raycasting demos.
|
||||||
|
|
||||||
|
The demos use mode 13: 1 byte per pixel = 256 colors. Bitmaps (textures,
|
||||||
|
sprites, ...) are also in this format (use the provided python script to
|
||||||
|
convert png images).
|
||||||
|
|
||||||
author: Miloslav "drummyfish" Ciz
|
author: Miloslav "drummyfish" Ciz
|
||||||
license: CC0 1.0
|
license: CC0 1.0
|
||||||
|
@ -8,7 +12,7 @@
|
||||||
#ifndef RAYCAST_DEMO_GENERAL_HPP
|
#ifndef RAYCAST_DEMO_GENERAL_HPP
|
||||||
#define RAYCAST_DEMO_GENERAL_HPP
|
#define RAYCAST_DEMO_GENERAL_HPP
|
||||||
|
|
||||||
#include "stdio.h" // for debugging raycastlibg
|
//#include "stdio.h" // for debugging raycastlibg
|
||||||
|
|
||||||
#define VERTICAL_FOV UNITS_PER_SQUARE // redefine camera vertical FOV
|
#define VERTICAL_FOV UNITS_PER_SQUARE // redefine camera vertical FOV
|
||||||
|
|
||||||
|
@ -57,7 +61,7 @@ Pokitto::Core pokitto;
|
||||||
|
|
||||||
#define SUBSAMPLED_WIDTH (SCREEN_WIDTH / SUBSAMPLE)
|
#define SUBSAMPLED_WIDTH (SCREEN_WIDTH / SUBSAMPLE)
|
||||||
|
|
||||||
#define TRANSPARENT_COLOR 0b00000111
|
#define TRANSPARENT_COLOR 0b00000111 /// Transparent color for sprites and GUI.
|
||||||
|
|
||||||
Unit zBuffer[SUBSAMPLED_WIDTH]; ///< 1D z-buffer for visibility determination.
|
Unit zBuffer[SUBSAMPLED_WIDTH]; ///< 1D z-buffer for visibility determination.
|
||||||
|
|
||||||
|
@ -188,6 +192,7 @@ void inline drawSprite(const unsigned char *sprite, int16_t x, int16_t y, Unit d
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Faster than drawSprite.
|
||||||
void drawImage(const unsigned char *image, int16_t x, int16_t y)
|
void drawImage(const unsigned char *image, int16_t x, int16_t y)
|
||||||
{
|
{
|
||||||
// TODO: optimize
|
// TODO: optimize
|
||||||
|
@ -349,6 +354,9 @@ void initGeneral()
|
||||||
zBuffer[i] = 0;
|
zBuffer[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Computes an average color of given texture.
|
||||||
|
*/
|
||||||
unsigned char computeAverageColor(const unsigned char *texture)
|
unsigned char computeAverageColor(const unsigned char *texture)
|
||||||
{
|
{
|
||||||
uint32_t sumR = 0;
|
uint32_t sumR = 0;
|
||||||
|
|
Loading…
Reference in a new issue