Add floor mirror
This commit is contained in:
parent
189140db7a
commit
e91fb33a89
1 changed files with 23 additions and 2 deletions
25
demo2.cpp
25
demo2.cpp
|
@ -31,6 +31,9 @@
|
|||
//#define NO_SHADING
|
||||
/* ^ Turns off shading (fog) which increases FPS. */
|
||||
|
||||
//#define NO_MIRROR
|
||||
/* ^ Turns off the floor mirror effect, which should increase FPS. */
|
||||
|
||||
//#define USE_DIST_APPROX 1
|
||||
/* ^ Turns on distance approximation, which won't compute exact distances but
|
||||
only approximations - this should increase performance a little, but
|
||||
|
@ -925,6 +928,8 @@ bool shotFired = false;
|
|||
uint8_t previousColumn = 255; ///< Helper for pixelIntensity.
|
||||
int8_t pixelIntensity = 0; ///< Precomputed column intensity addition.
|
||||
|
||||
int16_t mirror = 0;
|
||||
|
||||
/**
|
||||
Function for drawing a single pixel (like fragment shader).
|
||||
*/
|
||||
|
@ -935,9 +940,25 @@ inline void pixelFunc(PixelInfo *pixel)
|
|||
|
||||
uint8_t c = 0;
|
||||
|
||||
#ifndef NO_MIRROR
|
||||
if (pixel->position.y == 0)
|
||||
mirror = 0;
|
||||
#endif
|
||||
|
||||
if (!pixel->isWall)
|
||||
{
|
||||
c = pixel->isFloor ? cFloor: cCeiling;
|
||||
|
||||
#ifndef NO_MIRROR
|
||||
int16_t intensity = pixel->isFloor ?
|
||||
-1 * (pixel->depth - mirror * 64) / UNITS_PER_SQUARE : 0;
|
||||
#else
|
||||
int16_t intensity = -1 * pixel->depth / (UNITS_PER_SQUARE * 2);
|
||||
#endif
|
||||
|
||||
c = addIntensity(c,intensity);
|
||||
|
||||
mirror++;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1006,8 +1027,8 @@ int main()
|
|||
for (uint8_t i = 0; i < TEXTURES; ++i)
|
||||
textureAverageColors[i] = computeAverageColor(textures[i]);
|
||||
|
||||
cFloor = rgbToIndex(0,1,1);
|
||||
cCeiling = rgbToIndex(1,0,1);
|
||||
cFloor = rgbToIndex(3,3,2);
|
||||
cCeiling = rgbToIndex(3,2,0);
|
||||
|
||||
player.setPositionSquare(6,5);
|
||||
player.mCamera.height = CAMERA_COLL_HEIGHT_BELOW;
|
||||
|
|
Loading…
Reference in a new issue