Added renderer to RenderArea to gain access to camera
This commit is contained in:
parent
d6663d84c6
commit
1b890849a8
4 changed files with 13 additions and 13 deletions
|
@ -45,6 +45,7 @@ typedef struct
|
||||||
struct RenderArea
|
struct RenderArea
|
||||||
{
|
{
|
||||||
ColorProfile* hdr_mapping;
|
ColorProfile* hdr_mapping;
|
||||||
|
Renderer* renderer;
|
||||||
RenderParams params;
|
RenderParams params;
|
||||||
int pixel_count;
|
int pixel_count;
|
||||||
int pixel_done;
|
int pixel_done;
|
||||||
|
@ -77,7 +78,6 @@ typedef struct {
|
||||||
int pixel_done;
|
int pixel_done;
|
||||||
Thread* thread;
|
Thread* thread;
|
||||||
RenderArea* area;
|
RenderArea* area;
|
||||||
Renderer* renderer;
|
|
||||||
} RenderChunk;
|
} RenderChunk;
|
||||||
|
|
||||||
#define RENDER_INVERSE 1
|
#define RENDER_INVERSE 1
|
||||||
|
@ -94,11 +94,12 @@ void renderQuit()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderArea* renderCreateArea()
|
RenderArea* renderCreateArea(Renderer* renderer)
|
||||||
{
|
{
|
||||||
RenderArea* result;
|
RenderArea* result;
|
||||||
|
|
||||||
result = malloc(sizeof(RenderArea));
|
result = malloc(sizeof(RenderArea));
|
||||||
|
result->renderer = renderer;
|
||||||
result->hdr_mapping = colorProfileCreate();
|
result->hdr_mapping = colorProfileCreate();
|
||||||
result->params.width = 1;
|
result->params.width = 1;
|
||||||
result->params.height = 1;
|
result->params.height = 1;
|
||||||
|
@ -605,7 +606,7 @@ void* _renderPostProcessChunk(void* data)
|
||||||
callback = chunk->area->fragment_callbacks[fragment->flags.callback];
|
callback = chunk->area->fragment_callbacks[fragment->flags.callback];
|
||||||
if (callback.function)
|
if (callback.function)
|
||||||
{
|
{
|
||||||
col = callback.function(chunk->renderer, fragment->data.location, callback.data);
|
col = callback.function(chunk->area->renderer, fragment->data.location, callback.data);
|
||||||
/*colorNormalize(&col);*/
|
/*colorNormalize(&col);*/
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -635,7 +636,7 @@ void* _renderPostProcessChunk(void* data)
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_CHUNKS 8
|
#define MAX_CHUNKS 8
|
||||||
void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks)
|
void renderPostProcess(RenderArea* area, int nbchunks)
|
||||||
{
|
{
|
||||||
volatile RenderChunk chunks[MAX_CHUNKS];
|
volatile RenderChunk chunks[MAX_CHUNKS];
|
||||||
int i;
|
int i;
|
||||||
|
@ -663,12 +664,11 @@ void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks)
|
||||||
{
|
{
|
||||||
chunks[i].thread = NULL;
|
chunks[i].thread = NULL;
|
||||||
chunks[i].area = area;
|
chunks[i].area = area;
|
||||||
chunks[i].renderer = renderer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
running = 0;
|
running = 0;
|
||||||
loops = 0;
|
loops = 0;
|
||||||
while ((y < ny && !renderer->render_interrupt) || running > 0)
|
while ((y < ny && !area->renderer->render_interrupt) || running > 0)
|
||||||
{
|
{
|
||||||
timeSleepMs(100);
|
timeSleepMs(100);
|
||||||
|
|
||||||
|
@ -682,13 +682,13 @@ void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks)
|
||||||
chunks[i].thread = NULL;
|
chunks[i].thread = NULL;
|
||||||
running--;
|
running--;
|
||||||
}
|
}
|
||||||
else if (renderer->render_interrupt)
|
else if (area->renderer->render_interrupt)
|
||||||
{
|
{
|
||||||
chunks[i].interrupt = 1;
|
chunks[i].interrupt = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (y < ny && !chunks[i].thread && !renderer->render_interrupt)
|
if (y < ny && !chunks[i].thread && !area->renderer->render_interrupt)
|
||||||
{
|
{
|
||||||
chunks[i].finished = 0;
|
chunks[i].finished = 0;
|
||||||
chunks[i].interrupt = 0;
|
chunks[i].interrupt = 0;
|
||||||
|
|
|
@ -28,7 +28,7 @@ typedef struct
|
||||||
void renderInit();
|
void renderInit();
|
||||||
void renderQuit();
|
void renderQuit();
|
||||||
|
|
||||||
RenderArea* renderCreateArea();
|
RenderArea* renderCreateArea(Renderer* renderer);
|
||||||
void renderDeleteArea(RenderArea* area);
|
void renderDeleteArea(RenderArea* area);
|
||||||
|
|
||||||
void renderSetParams(RenderArea* area, RenderParams params);
|
void renderSetParams(RenderArea* area, RenderParams params);
|
||||||
|
@ -39,7 +39,7 @@ void renderUpdate(RenderArea* area);
|
||||||
|
|
||||||
void renderPushTriangle(RenderArea* area, Vector3 pixel1, Vector3 pixel2, Vector3 pixel3, Vector3 location1, Vector3 location2, Vector3 location3, f_RenderFragmentCallback callback, void* callback_data);
|
void renderPushTriangle(RenderArea* area, Vector3 pixel1, Vector3 pixel2, Vector3 pixel3, Vector3 location1, Vector3 location2, Vector3 location3, f_RenderFragmentCallback callback, void* callback_data);
|
||||||
|
|
||||||
void renderPostProcess(RenderArea* area, Renderer* renderer, int nbchunks);
|
void renderPostProcess(RenderArea* area, int nbchunks);
|
||||||
int renderSaveToFile(RenderArea* area, const char* path);
|
int renderSaveToFile(RenderArea* area, const char* path);
|
||||||
void renderSetPreviewCallbacks(RenderArea* area, RenderCallbackStart start, RenderCallbackDraw draw, RenderCallbackUpdate update);
|
void renderSetPreviewCallbacks(RenderArea* area, RenderCallbackStart start, RenderCallbackDraw draw, RenderCallbackUpdate update);
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ Renderer* rendererCreate()
|
||||||
result->render_progress = 0.0;
|
result->render_progress = 0.0;
|
||||||
result->is_rendering = 0;
|
result->is_rendering = 0;
|
||||||
result->render_camera = cameraCreateDefinition();
|
result->render_camera = cameraCreateDefinition();
|
||||||
result->render_area = renderCreateArea();
|
result->render_area = renderCreateArea(result);
|
||||||
|
|
||||||
renderSetParams(result->render_area, params);
|
renderSetParams(result->render_area, params);
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ void rendererStart(Renderer* renderer, RenderParams params)
|
||||||
threadJoin(thread);
|
threadJoin(thread);
|
||||||
|
|
||||||
renderer->is_rendering = 1;
|
renderer->is_rendering = 1;
|
||||||
renderPostProcess(renderer->render_area, renderer, core_count);
|
renderPostProcess(renderer->render_area, core_count);
|
||||||
renderer->is_rendering = 0;
|
renderer->is_rendering = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ START_TEST(test_render_quad)
|
||||||
renderClear(renderer->render_area);
|
renderClear(renderer->render_area);
|
||||||
|
|
||||||
renderer->pushQuad(renderer, v3(-1.0, 0.0, 1.0), v3(-1.0, 0.0, -1.0), v3(1.0, 0.0, -1.0), v3(1.0, 0.0, 1.0), _postProcessFragment, NULL);
|
renderer->pushQuad(renderer, v3(-1.0, 0.0, 1.0), v3(-1.0, 0.0, -1.0), v3(1.0, 0.0, -1.0), v3(1.0, 0.0, 1.0), _postProcessFragment, NULL);
|
||||||
renderPostProcess(renderer->render_area, renderer, tests_cpu_count);
|
renderPostProcess(renderer->render_area, tests_cpu_count);
|
||||||
|
|
||||||
renderSaveToFile(renderer->render_area, "./output/test_render_quad.png");
|
renderSaveToFile(renderer->render_area, "./output/test_render_quad.png");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue