From 414d4e6411ac24678ab52ed441117de0b28610a4 Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Wed, 18 Oct 2023 12:05:01 +0300 Subject: [PATCH] Primitive sampling --- Math/private/Topology.cpp | 4 + RayTracer/applications/Rayt.cpp | 2 +- RayTracer/applications/SceneLoad.cpp | 113 ++++++++++++++--- RayTracer/applications/rsc/cube/script.lua | 7 ++ RayTracer/applications/rsc/scene.blend1 | Bin 844596 -> 0 bytes RayTracer/applications/rsc/scene/meshes.obj | 28 ++--- RayTracer/applications/rsc/scene/script.lua | 20 ++- RayTracer/private/RayTracer.cpp | 129 +++++++++++++------- RayTracer/public/RayTracer.hpp | 19 ++- 9 files changed, 242 insertions(+), 80 deletions(-) delete mode 100644 RayTracer/applications/rsc/scene.blend1 diff --git a/Math/private/Topology.cpp b/Math/private/Topology.cpp index d47b0da..4b1d534 100644 --- a/Math/private/Topology.cpp +++ b/Math/private/Topology.cpp @@ -35,6 +35,10 @@ bool TrigCache::castRay(const Ray& ray) const { static halnf a, f, u, v; static halnf t; + if (ray.dir.dot(mNormal) > 0) { + return false; + } + h = ray.dir.cross(mEdgeP1P3); a = mEdgeP1P2.dot(h); diff --git a/RayTracer/applications/Rayt.cpp b/RayTracer/applications/Rayt.cpp index 4cfee71..ea6b6cd 100644 --- a/RayTracer/applications/Rayt.cpp +++ b/RayTracer/applications/Rayt.cpp @@ -51,7 +51,7 @@ void renderCommand(const String& scenePath) { auto start = get_time(); - rayt.render(scene, output); + rayt.render(scene, output, settings); auto end = get_time(); diff --git a/RayTracer/applications/SceneLoad.cpp b/RayTracer/applications/SceneLoad.cpp index 7112c9f..36e062c 100644 --- a/RayTracer/applications/SceneLoad.cpp +++ b/RayTracer/applications/SceneLoad.cpp @@ -46,26 +46,68 @@ bool loadMeshes(tp::Scene& scene, const tp::String& objetsPath) { return scene.mObjects.size(); } -bool getVector(lua_State* L, const char* name, tp::Vec3F& out, const char* parent) { - lua_getglobal(L, name); - - if (lua_istable(L, -1)) { - lua_pushstring(L, "x"); - lua_gettable(L, -2); - - if (lua_isnumber(L, -1)) { - out.x = lua_tonumber(L, -1); - } else { - printf("Component of vector '%s' is not found in %s\n\n", name, parent); - return false; - } - - lua_pop(L, 1); - - } else { - printf("Vector '%s' is not found in %s\n\n", name, parent); - return false; +// Function to read a Lua table representing RenderSettings +int readRenderSettings(lua_State* L, tp::RayTracer::RenderSettings& settings) { + lua_getglobal(L, "RenderSettings"); + if (!lua_istable(L, -1)) { + printf("RenderSettings is not a table.\n"); + return 0; // Error } + + // Read depth field + lua_getfield(L, -1, "depth"); + if (lua_isnumber(L, -1)) { + settings.depth = (int) lua_tonumber(L, -1); + } else { + printf("RenderSettings 'depth' field is missing or not a number.\n"); + lua_pop(L, 1); // Pop the 'depth' field + return 0; // Error + } + lua_pop(L, 1); // Pop the 'depth' field + + // Read spray field + lua_getfield(L, -1, "spray"); + if (lua_isnumber(L, -1)) { + settings.spray = (int) lua_tonumber(L, -1); + } else { + printf("RenderSettings 'spray' field is missing or not a number.\n"); + lua_pop(L, 1); // Pop the 'spray' field + return 0; // Error + } + lua_pop(L, 1); // Pop the 'spray' field + + return 1; // Success +} + +// Function to read a Lua table representing a light +int readLight(lua_State* L, tp::PointLight* light) { + lua_getfield(L, -1, "pos"); // Get the "pos" field from the light table + if (!lua_istable(L, -1)) { + printf("Light is missing the 'pos' table.\n"); + return 0; // Error + } + for (int i = 0; i < 3; i++) { + lua_rawgeti(L, -1, i + 1); // Index is 1-based in Lua + if (!lua_isnumber(L, -1)) { + printf("Light 'pos' field is not a number at index %d.\n", i); + lua_pop(L, 2); // Pop both the number and the 'pos' table + return 0; // Error + } + light->pos[i] = lua_tonumber(L, -1); + lua_pop(L, 1); // Pop the number + } + lua_pop(L, 1); // Pop the 'pos' table + + lua_getfield(L, -1, "intensity"); // Get the "intensity" field from the light table + if (!lua_isnumber(L, -1)) { + printf("Light is missing the 'intensity' field or it's not a number.\n"); + lua_pop(L, 1); // Pop the 'intensity' field + return 0; // Error + } + light->intensity = lua_tonumber(L, -1); + lua_pop(L, 1); // Pop the 'intensity' field + + return 1; // Success } void loadScene(tp::Scene& scene, const tp::String& scenePath, tp::RayTracer::RenderSettings& settings) { @@ -154,5 +196,38 @@ void loadScene(tp::Scene& scene, const tp::String& scenePath, tp::RayTracer::Ren scene.mCamera.setFar(100); scene.mCamera.setRatio((tp::halnf) size_y / (tp::halnf) size_x); + // ---------- LIGHTS + { + lua_getglobal(L, "Lights"); + if (!lua_istable(L, -1)) { + printf("Lights is not a table.\n"); + lua_close(L); + return; // Error + } + + // Read and process each light in the "Lights" table + int numLights = lua_rawlen(L, -1); // Get the number of lights in the table + for (int i = 1; i <= numLights; i++) { + lua_rawgeti(L, -1, i); // Get the i-th element (light) from the table + if (lua_istable(L, -1)) { + tp::PointLight light; + if (!readLight(L, &light)) { + printf("Cant read lights data\n"); + lua_close(L); + return; // Error + } + scene.mLights.append(light); + } + lua_pop(L, 1); // Pop the i-th light table + } + } + + // ----------- settings -------------- + if (!readRenderSettings(L, settings)) { + printf("Cant Read Render Settings"); + lua_close(L); + return; // Error + } + lua_close(L); } diff --git a/RayTracer/applications/rsc/cube/script.lua b/RayTracer/applications/rsc/cube/script.lua index bdb4935..d4f220a 100644 --- a/RayTracer/applications/rsc/cube/script.lua +++ b/RayTracer/applications/rsc/cube/script.lua @@ -6,3 +6,10 @@ Camera = { size_x = 400, size_y = 600, } + +Lights = { + { + pos = { 4, 3, 3 }, + intensity = 4 + } +} \ No newline at end of file diff --git a/RayTracer/applications/rsc/scene.blend1 b/RayTracer/applications/rsc/scene.blend1 deleted file mode 100644 index fe7b753e28aba243ce5a2e2211c93bf22333f75b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 844596 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 A4gdfE diff --git a/RayTracer/applications/rsc/scene/meshes.obj b/RayTracer/applications/rsc/scene/meshes.obj index 4367775..4368e9e 100644 --- a/RayTracer/applications/rsc/scene/meshes.obj +++ b/RayTracer/applications/rsc/scene/meshes.obj @@ -11,31 +11,31 @@ v -1.039076 -1.039076 -1.285234 v 1.039076 -1.039076 1.792917 v 1.039076 -1.039076 -1.285234 vt 0.625000 0.500000 -vt 0.875000 0.500000 -vt 0.875000 0.750000 vt 0.625000 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.500000 vt 0.375000 0.750000 -vt 0.625000 1.000000 vt 0.375000 1.000000 +vt 0.625000 1.000000 vt 0.375000 0.000000 -vt 0.625000 0.000000 -vt 0.625000 0.250000 vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.625000 0.000000 vt 0.125000 0.500000 -vt 0.375000 0.500000 vt 0.125000 0.750000 -vn 0.0000 0.0000 1.0000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 -1.0000 0.0000 +vt 0.375000 0.500000 vn 0.0000 0.0000 -1.0000 vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 usemtl Material s off -f 1/1/1 5/2/1 7/3/1 3/4/1 -f 4/5/2 3/4/2 7/6/2 8/7/2 -f 8/8/3 7/9/3 5/10/3 6/11/3 -f 6/12/4 2/13/4 4/5/4 8/14/4 -f 6/11/5 5/10/5 1/1/5 2/13/5 +f 1/1/1 3/2/1 7/3/1 5/4/1 +f 4/5/2 8/6/2 7/7/2 3/2/2 +f 8/8/3 6/9/3 5/10/3 7/11/3 +f 6/12/4 8/13/4 4/5/4 2/14/4 +f 6/9/5 2/14/5 1/1/5 5/10/5 o Cube.001 v 0.411013 -0.208216 -1.264212 v 0.411013 -0.208216 -0.612621 diff --git a/RayTracer/applications/rsc/scene/script.lua b/RayTracer/applications/rsc/scene/script.lua index 7e6f251..ac2cd3b 100644 --- a/RayTracer/applications/rsc/scene/script.lua +++ b/RayTracer/applications/rsc/scene/script.lua @@ -3,6 +3,22 @@ Meshes = "meshes.obj" Camera = { pos = { 0.5, 4.5, 0.2 }, - size_x = 500, - size_y = 700, + size_x = 600, + size_y = 800, } + +Lights = { + { + pos = { -0.5, 3.5, 1 }, + intensity = 1 + }, + { + pos = { 0, 0, 1 }, + intensity = 0.5 + }, +} + +RenderSettings = { + depth = 1, + spray = 10, +} \ No newline at end of file diff --git a/RayTracer/private/RayTracer.cpp b/RayTracer/private/RayTracer.cpp index 3c5e93f..09f598d 100644 --- a/RayTracer/private/RayTracer.cpp +++ b/RayTracer/private/RayTracer.cpp @@ -10,6 +10,38 @@ #include +/* + if (1) { + const auto& points = castData.obj->mCache.TransformedPoints; + const auto& normals = castData.obj->mCache.TransformedNormals; + const auto trig = castData.trig; + +const auto& n1 = normals[trig->mP1]; +const auto& n2 = normals[trig->mP2]; +const auto& n3 = normals[trig->mP3]; + +auto v0 = points[trig->mP1]; +auto v1 = points[trig->mP2]; +auto v2 = points[trig->mP3]; + +// Calculate barycentric coordinates +Vec3F barycentric; + +// Calculate the area of the triangle +auto areaABC = (halnf) (v1 - v0).cross(v2 - v0).length(); +auto areaPBC = (halnf) (v1 - castData.hitPos).cross(v2 - castData.hitPos).length(); +auto areaPCA = (halnf) (v2 - castData.hitPos).cross(v0 - castData.hitPos).length(); + +// Calculate the barycentric coordinates +barycentric.x = areaPBC / areaABC; +barycentric.y = areaPCA / areaABC; +barycentric.z = 1.0f - barycentric.x - barycentric.y; + +// Interpolate the normal using barycentric coordinates +normal = n1 * barycentric.x + n2 * barycentric.y + n3 * barycentric.z; +} +*/ + using namespace tp; ModuleManifest* sDependencies[] = {&gModuleMath, &gModuleCommandLine, &gModuleConnection, nullptr}; @@ -28,7 +60,7 @@ void RayTracer::castRay(const Ray& ray, RayCastData& out, alnf far) { auto dist = (trig->getHitPos() - ray.pos).length2(); - if (far > dist) { + if (far > dist && dist > EPSILON) { out.trig = &trig.data(); out.hitPos = trig->getHitPos(); out.obj = &obj.data(); @@ -41,9 +73,58 @@ void RayTracer::castRay(const Ray& ray, RayCastData& out, alnf far) { } } -void RayTracer::render(const Scene& scene, RayTracer::RenderBuffer& buff) { +void RayTracer::cycle(const RayCastData& castData, LightData& out, uhalni depth) { + if (depth) { + depth--; + + Vec3F normal = castData.trig->getNormal(); + normal.normalize(); + + const auto delta1 = castData.trig->mEdgeP1P2.unitV(); + const auto delta2 = normal.cross(delta1); + + for (auto idx : Range(mSettings.spray)) { + RayCastData materialCastData; + LightData lightData; + + auto d1 = ((halnf) randomFloat() - 0.5f) * 2; + auto d2 = ((halnf) randomFloat() - 0.5f) * 2; + + auto sprayNormal = (normal + delta1 * d1 + delta2 * d2).normalize(); + + castRay({sprayNormal, castData.hitPos}, materialCastData, mScene->mCamera.getFar()); + if (materialCastData.hit) { + cycle(materialCastData, lightData, depth); + out.intensity += lightData.intensity * 0.2; + } + } + } + + // cast for light + for (auto light : mScene->mLights) { + RayCastData lightCastData; + auto dir = light->pos - castData.hitPos; + auto length = (halnf) dir.length(); + + Ray lightRay = {dir.unitV(), castData.hitPos}; + + if (lightRay.dir.dot(castData.trig->mNormal) < 0) { + continue; + } + castRay(lightRay, lightCastData, length); + + if (lightCastData.hit) { + continue; + } + + out.intensity += light->intensity / (length * length); + } +} + +void RayTracer::render(const Scene& scene, RayTracer::RenderBuffer& buff, const RenderSettings& settings) { mScene = &scene; mBuff = &buff; + mSettings = settings; auto pos = mScene->mCamera.getPos(); auto fov = mScene->mCamera.getFOV(); @@ -71,54 +152,20 @@ void RayTracer::render(const Scene& scene, RayTracer::RenderBuffer& buff) { for (RayTracer::RenderBuffer::Index i = 0; i < buff.size().x; i++) { for (RayTracer::RenderBuffer::Index j = 0; j < buff.size().y; j++) { iterPoint = planeLeftTop + ((deltaX * (halnf) i) + (deltaY * (halnf) j)); - ray.dir = (iterPoint - pos).unitV(); castRay(ray, castData, mScene->mCamera.getFar()); if (castData.hit) { - Vec3F normal = castData.trig->getNormal(); + LightData lightData; + cycle(castData, lightData, mSettings.depth); - if (1) { - const auto& points = castData.obj->mCache.TransformedPoints; - const auto& normals = castData.obj->mCache.TransformedNormals; - const auto trig = castData.trig; + lightData.intensity = clamp(lightData.intensity, 0.f, 1.f); + RGBA col = {lightData.intensity, lightData.intensity, lightData.intensity, 1.f}; - const auto& n1 = normals[trig->mP1]; - const auto& n2 = normals[trig->mP2]; - const auto& n3 = normals[trig->mP3]; - - auto v0 = points[trig->mP1]; - auto v1 = points[trig->mP2]; - auto v2 = points[trig->mP3]; - - // Calculate barycentric coordinates - Vec3F barycentric; - - // Calculate the area of the triangle - auto areaABC = (halnf) (v1 - v0).cross(v2 - v0).length(); - auto areaPBC = (halnf) (v1 - castData.hitPos).cross(v2 - castData.hitPos).length(); - auto areaPCA = (halnf) (v2 - castData.hitPos).cross(v0 - castData.hitPos).length(); - - // Calculate the barycentric coordinates - barycentric.x = areaPBC / areaABC; - barycentric.y = areaPCA / areaABC; - barycentric.z = 1.0f - barycentric.x - barycentric.y; - - // Interpolate the normal using barycentric coordinates - normal = n1 * barycentric.x + n2 * barycentric.y + n3 * barycentric.z; - } - - normal.normalize(); - - RGBA col = {normal.x * 0.5f + 0.5f, normal.y * 0.5f + 0.5f, normal.z * 0.5f + 0.5f, 1.f}; buff.set({i, j}, col); - - // auto depth = 1 - clamp((halnf) (castData.hitPos - ray.pos).length(), 0.f, mScene->mCamera.getFar()) / mScene->mCamera.getFar(); - // buff.set({i, j}, {depth, depth, depth, 1.f}); - } else { - buff.set({i, j}, RGBA(0.f, 0.f, 0.f, 0.f)); + buff.set({i, j}, 0.f); } } } diff --git a/RayTracer/public/RayTracer.hpp b/RayTracer/public/RayTracer.hpp index 812d871..7c5afd2 100644 --- a/RayTracer/public/RayTracer.hpp +++ b/RayTracer/public/RayTracer.hpp @@ -21,12 +21,19 @@ namespace tp { TopologyCache mCache; }; + struct PointLight { + Vec3F pos; + halnf fallOut = 1.f; + halnf intensity = 1.f; + }; + class Scene { public: Scene() = default; public: Buffer mObjects; + Buffer mLights; Camera mCamera; }; @@ -35,14 +42,14 @@ namespace tp { typedef Buffer2D RenderBuffer; struct RenderSettings { - alni samplesiPerPixel = 1; - alni rayBounces = 1; + uhalni depth = 2; + uhalni spray = 1; Vec2I size; }; public: RayTracer() = default; - void render(const Scene& scene, RenderBuffer& buff); + void render(const Scene& scene, RenderBuffer& buff, const RenderSettings& settings); private: struct RayCastData { @@ -52,7 +59,13 @@ namespace tp { bool hit = false; }; + struct LightData { + halnf intensity = 0; + }; + + private: void castRay(const Ray& ray, RayCastData& out, alnf far); + void cycle(const RayCastData& ray, LightData& out, uhalni depth); private: RenderSettings mSettings;