This commit is contained in:
Miloslav Číž 2018-09-18 15:28:43 +02:00
parent 2b16ea434e
commit c97448e9a8
4 changed files with 38 additions and 34 deletions

View file

@ -1026,17 +1026,12 @@ inline void pixelFunc(RCL_PixelInfo *pixel)
rgbToIndex(intensity/2,intensity,intensity/3) : rgbToIndex(intensity/2,intensity,intensity/3) :
rgbToIndex(intensity,intensity/2,0); rgbToIndex(intensity,intensity/2,0);
putSubsampledPixel // macro putSubsampledPixel(pixel,c);
} }
void draw() void draw()
{ {
RCL_RayConstraints c; RCL_render(player.mCamera,floorHeightAt,ceilingHeightAt,textureAt,defaultConstraints);
c.maxHits = 8;
c.maxSteps = 10;
RCL_render(player.mCamera,floorHeightAt,ceilingHeightAt,textureAt,c);
RCL_Unit previousDepth; RCL_Unit previousDepth;
@ -1099,6 +1094,9 @@ int main()
{ {
initGeneral(); initGeneral();
defaultConstraints.maxHits = 8;
defaultConstraints.maxSteps = 10;
player.setPositionSquare(6,4); player.setPositionSquare(6,4);
sprites[0] = Sprite(spriteStatue,10,5,1,100); sprites[0] = Sprite(spriteStatue,10,5,1,100);

View file

@ -961,24 +961,19 @@ inline void pixelFunc(RCL_PixelInfo *pixel)
} }
putSubsampledPixel // macro putSubsampledPixel(pixel,c);
} }
void draw() void draw()
{ {
RCL_RayConstraints c;
c.maxHits = 1;
c.maxSteps = 20;
#ifdef HEAD_BOB #ifdef HEAD_BOB
player.mCamera.height += player.mHeadBob; player.mCamera.height += player.mHeadBob;
#endif #endif
#ifdef RENDER_PRECISE #ifdef RENDER_PRECISE
RCL_render(player.mCamera,floorHeightAt,0,textureAt,c); RCL_render(player.mCamera,floorHeightAt,0,textureAt,defaultConstraints);
#else #else
RCL_renderSimple(player.mCamera,floorHeightAt,textureAt,rollAt,c); RCL_renderSimple(player.mCamera,floorHeightAt,textureAt,rollAt,defaultConstraints);
#endif #endif
#ifdef HEAD_BOB #ifdef HEAD_BOB
@ -1001,6 +996,9 @@ int main()
{ {
initGeneral(); initGeneral();
defaultConstraints.maxHits = 1;
defaultConstraints.maxSteps = 20;
for (uint8_t i = 0; i < TEXTURES; ++i) for (uint8_t i = 0; i < TEXTURES; ++i)
textureAverageColors[i] = computeAverageColor(textures[i]); textureAverageColors[i] = computeAverageColor(textures[i]);

View file

@ -494,20 +494,15 @@ inline void pixelFunc(RCL_PixelInfo *pixel)
if (intensity != 0) if (intensity != 0)
c = addIntensity(c,intensity); c = addIntensity(c,intensity);
putSubsampledPixel // macro putSubsampledPixel(pixel,c);
} }
bool flyBy = true; bool flyBy = true;
void draw() void draw()
{ {
RCL_RayConstraints c;
c.maxHits = 6;
c.maxSteps = 20;
player.mCamera.height += player.mHeadBob; player.mCamera.height += player.mHeadBob;
RCL_render(player.mCamera,floorHeightAt,0,colorAt,c); RCL_render(player.mCamera,floorHeightAt,0,colorAt,defaultConstraints);
player.mCamera.height -= player.mHeadBob; player.mCamera.height -= player.mHeadBob;
if (flyBy && (pokitto.frameCount >> 3) % 3 != 0) if (flyBy && (pokitto.frameCount >> 3) % 3 != 0)
@ -554,6 +549,9 @@ int main()
{ {
initGeneral(); initGeneral();
defaultConstraints.maxHits = 6;
defaultConstraints.maxSteps = 20;
floorColor = rgbToIndex(4,2,0); floorColor = rgbToIndex(4,2,0);
squareColors[0] = rgbToIndex(0,0,3); squareColors[0] = rgbToIndex(0,0,3);

View file

@ -72,22 +72,30 @@ Pokitto::Core pokitto;
RCL_Unit zBuffer[SUBSAMPLED_WIDTH]; ///< 1D z-buffer for visibility determination. RCL_Unit zBuffer[SUBSAMPLED_WIDTH]; ///< 1D z-buffer for visibility determination.
RCL_RayConstraints defaultConstraints;
unsigned short palette[256]; unsigned short palette[256];
// helper macro for fast pixel drawing
#ifdef POK_SIM #ifdef POK_SIM
#define putSubsampledPixel\ inline void putSubsampledPixel(RCL_PixelInfo *pixel, uint8_t color)
pokitto.display.drawPixel(pixel->position.x * SUBSAMPLE,pixel->position.y,c);\ {
pokitto.display.drawPixel(pixel->position.x * SUBSAMPLE + 1,pixel->position.y,c); pokitto.display.drawPixel(pixel->position.x * SUBSAMPLE,pixel->position.y,color);
pokitto.display.drawPixel(pixel->position.x * SUBSAMPLE + 1,pixel->position.y,color);
}
#else #else
// this code breaks the simulator // This code breaks the simulator.
#define putSubsampledPixel\ inline void putSubsampledPixel(RCL_PixelInfo *pixel, uint8_t color)
uint8_t *buf = pokitto.display.screenbuffer;\ {
buf += pixel->position.x * SUBSAMPLE;\ uint8_t *buf = pokitto.display.screenbuffer;
buf += pixel->position.y * SCREEN_WIDTH;\
for (uint8_t i = 0; i < SUBSAMPLE - 1; ++i)\ buf += pixel->position.x * SUBSAMPLE;
*buf++ = c;\ buf += pixel->position.y * SCREEN_WIDTH;
*buf = c;
for (uint8_t i = 0; i < SUBSAMPLE - 1; ++i)
*buf++ = color;
*buf = color;
}
#endif #endif
/** /**
@ -394,6 +402,8 @@ void initGeneral()
pokitto.display.setFont(fontTiny); pokitto.display.setFont(fontTiny);
pokitto.display.persistence = 1; pokitto.display.persistence = 1;
RCL_initRayConstraints(&defaultConstraints);
initPalette(); initPalette();
for (uint8_t i = 0; i < SUBSAMPLED_WIDTH; ++i) for (uint8_t i = 0; i < SUBSAMPLED_WIDTH; ++i)