mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-23 01:32:14 -05:00
Ports: C-ray rendering engine
This commit is contained in:
parent
fe1df9e9fb
commit
2a21675b01
Notes:
sideshowbarker
2024-07-19 10:53:51 +09:00
Author: https://github.com/vkoskiv Commit: https://github.com/SerenityOS/serenity/commit/2a21675b01c Pull-request: https://github.com/SerenityOS/serenity/pull/862
7 changed files with 176 additions and 0 deletions
17
Ports/c-ray/package.sh
Executable file
17
Ports/c-ray/package.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash ../.port_include.sh
|
||||
port=c-ray
|
||||
version=git
|
||||
workdir=c-ray-master
|
||||
useconfigure=true
|
||||
curlopts="-L"
|
||||
files="https://github.com/vkoskiv/c-ray/archive/master.tar.gz c-ray-git.tar.gz"
|
||||
configopts="-DCMAKE_TOOLCHAIN_FILE=$SERENITY_ROOT/Toolchain/CMakeToolchain.txt -DNO_SDL2=True"
|
||||
|
||||
configure() {
|
||||
run cmake $configopts
|
||||
}
|
||||
|
||||
install() {
|
||||
mkdir -p $SERENITY_ROOT/Root/home/anon/c-ray
|
||||
cp -r c-ray-master/* $SERENITY_ROOT/Root/home/anon/c-ray
|
||||
}
|
3
Ports/c-ray/patches/add-dummy-configure.patch
Normal file
3
Ports/c-ray/patches/add-dummy-configure.patch
Normal file
|
@ -0,0 +1,3 @@
|
|||
diff --git a/configure b/configure
|
||||
new file mode 100644
|
||||
index 0000000..e69de29
|
23
Ports/c-ray/patches/disable-checkbuf.patch
Normal file
23
Ports/c-ray/patches/disable-checkbuf.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
diff --git a/src/utils/filehandler.c b/src/utils/filehandler.c
|
||||
index 99638f3..feded8f 100644
|
||||
--- a/src/utils/filehandler.c
|
||||
+++ b/src/utils/filehandler.c
|
||||
@@ -162,7 +162,7 @@ char *loadFile(char *inputFileName, size_t *bytes) {
|
||||
//Wait for 2 secs and abort if nothing is coming in from stdin
|
||||
void checkBuf() {
|
||||
#ifndef WINDOWS
|
||||
- fd_set set;
|
||||
+ /*fd_set set;
|
||||
struct timeval timeout;
|
||||
int rv;
|
||||
FD_ZERO(&set);
|
||||
@@ -176,7 +176,8 @@ void checkBuf() {
|
||||
logr(error, "No input found after %i seconds. Hint: Try `./bin/c-ray input/scene.json`.\n", timeout.tv_sec);
|
||||
} else {
|
||||
return;
|
||||
- }
|
||||
+ }*/
|
||||
+ return;
|
||||
#endif
|
||||
}
|
||||
|
19
Ports/c-ray/patches/enable-own-asprintf.patch
Normal file
19
Ports/c-ray/patches/enable-own-asprintf.patch
Normal file
|
@ -0,0 +1,19 @@
|
|||
diff --git a/src/libraries/asprintf.h b/src/libraries/asprintf.h
|
||||
index 70a95ac..0e46c3c 100644
|
||||
--- a/src/libraries/asprintf.h
|
||||
+++ b/src/libraries/asprintf.h
|
||||
@@ -33,7 +33,6 @@ int vscprintf(const char *format, va_list ap) {
|
||||
* GNU-C-compatible compilers implement these with the same names, thus we
|
||||
* don't have to do anything
|
||||
*/
|
||||
-#ifdef _MSC_VER
|
||||
int cray_vasprintf(char **strp, const char *format, va_list ap) {
|
||||
int len = vscprintf(format, ap);
|
||||
if (len == -1)
|
||||
@@ -57,6 +56,5 @@ int asprintf(char **strp, const char *format, ...) {
|
||||
va_end(ap);
|
||||
return retval;
|
||||
}
|
||||
-#endif
|
||||
|
||||
#endif // ASPRINTF_H
|
30
Ports/c-ray/patches/fix-linkage.patch
Normal file
30
Ports/c-ray/patches/fix-linkage.patch
Normal file
|
@ -0,0 +1,30 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 5ccce96..1db6074 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -58,7 +58,7 @@ if (NOT NO_SDL2)
|
||||
if (MSVC)
|
||||
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARY})
|
||||
else()
|
||||
- target_link_libraries(${PROJECT_NAME} -lpthread -lm ${SDL2_LIBRARY})
|
||||
+ target_link_libraries(${PROJECT_NAME} -lSDL2 -lgui -ldraw -lipc -lcore -lpthread -lm -lstdc++)
|
||||
endif()
|
||||
add_definitions(-DUI_ENABLED)
|
||||
else()
|
||||
@@ -66,7 +66,7 @@ if (NOT NO_SDL2)
|
||||
if (MSVC)
|
||||
target_link_libraries(${PROJECT_NAME})
|
||||
else()
|
||||
- target_link_libraries(${PROJECT_NAME} -lpthread -lm)
|
||||
+ target_link_libraries(${PROJECT_NAME} -lgui -ldraw -lipc -lcore -lpthread -lm -lstdc++)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
@@ -75,6 +75,6 @@ else()
|
||||
if (MSVC)
|
||||
target_link_libraries(${PROJECT_NAME})
|
||||
else()
|
||||
- target_link_libraries(${PROJECT_NAME} -lpthread -lm)
|
||||
+ target_link_libraries(${PROJECT_NAME} -lgui -ldraw -lipc -lcore -lpthread -lm -lstdc++)
|
||||
endif()
|
||||
endif()
|
26
Ports/c-ray/patches/lower-hdr-json-settings.patch
Normal file
26
Ports/c-ray/patches/lower-hdr-json-settings.patch
Normal file
|
@ -0,0 +1,26 @@
|
|||
diff --git a/input/hdr.json b/input/hdr.json
|
||||
index c3fd066..ebd69da 100644
|
||||
--- a/input/hdr.json
|
||||
+++ b/input/hdr.json
|
||||
@@ -2,8 +2,8 @@
|
||||
"version": 1.0,
|
||||
"renderer": {
|
||||
"threadCount": 0,
|
||||
- "sampleCount": 250,
|
||||
- "bounces": 30,
|
||||
+ "sampleCount": 1,
|
||||
+ "bounces": 2,
|
||||
"antialiasing": true,
|
||||
"tileWidth": 64,
|
||||
"tileHeight": 64,
|
||||
@@ -39,8 +39,8 @@
|
||||
"outputFileName": "rendered",
|
||||
"fileType": "png",
|
||||
"count": 0,
|
||||
- "width": 1280,
|
||||
- "height": 800,
|
||||
+ "width": 300,
|
||||
+ "height": 200,
|
||||
"ambientColor": {
|
||||
"hdr": "input/HDRs/rooitou_park_1k.hdr",
|
||||
"offset": 0,
|
58
Ports/c-ray/patches/patch-renderthread-and-main-loop.patch
Normal file
58
Ports/c-ray/patches/patch-renderthread-and-main-loop.patch
Normal file
|
@ -0,0 +1,58 @@
|
|||
diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c
|
||||
index 835d99b..aa06055 100644
|
||||
--- a/src/renderer/renderer.c
|
||||
+++ b/src/renderer/renderer.c
|
||||
@@ -20,8 +20,8 @@
|
||||
#include "../utils/loaders/textureloader.h"
|
||||
|
||||
//Main thread loop speeds
|
||||
-#define paused_msec 100
|
||||
-#define active_msec 16
|
||||
+#define paused_msec 800
|
||||
+#define active_msec 400
|
||||
|
||||
/// @todo Use defaultSettings state struct for this.
|
||||
/// @todo Clean this up, it's ugly.
|
||||
@@ -47,7 +47,6 @@ void render(struct renderer *r) {
|
||||
//Main loop (input)
|
||||
bool threadsHaveStarted = false;
|
||||
float avgRayTime = 0.0f;
|
||||
- int pauser = 0;
|
||||
float finalAvg = 0.0f;
|
||||
int ctr = 1;
|
||||
while (r->state.isRendering) {
|
||||
@@ -66,25 +65,6 @@ void render(struct renderer *r) {
|
||||
sleepMSec(paused_msec);
|
||||
}
|
||||
|
||||
- //Run the sample printing about 4x/s
|
||||
- if (pauser == 280 / active_msec) {
|
||||
- long remainingSampleCount = ((r->state.tileCount - r->state.finishedTileCount) * r->prefs.tileWidth * r->prefs.tileHeight * r->prefs.sampleCount);
|
||||
- double sps = (1000000.0f/finalAvg) * r->prefs.threadCount;
|
||||
- long usecTillFinished = remainingSampleCount * finalAvg;
|
||||
- char rem[32];
|
||||
- smartTime((0.001 * usecTillFinished) / r->prefs.threadCount, rem);
|
||||
- float completion = ((float)r->state.finishedTileCount / r->state.tileCount) * 100;
|
||||
- logr(info, "[%s%.0f%%%s] μs/ray: %.02f, etf: %s, %.02lfMs/s %s \r",
|
||||
- KBLU,
|
||||
- KNRM,
|
||||
- completion,
|
||||
- finalAvg,
|
||||
- rem,
|
||||
- 0.000001*sps,
|
||||
- r->state.threadStates[0].paused ? "[PAUSED]" : "");
|
||||
- pauser = 0;
|
||||
- }
|
||||
- pauser++;
|
||||
|
||||
if (!threadsHaveStarted) {
|
||||
threadsHaveStarted = true;
|
||||
@@ -286,7 +266,7 @@ void *renderThread(void *arg) {
|
||||
//No more tiles to render, exit thread. (render done)
|
||||
tinfo->threadComplete = true;
|
||||
tinfo->currentTileNum = -1;
|
||||
- return 0;
|
||||
+ pthread_exit((void*) arg); //for Serenity, return 0 didn't work
|
||||
}
|
||||
|
||||
struct renderer *newRenderer() {
|
Loading…
Reference in a new issue