Light2d
Light rendering in 2D
Install / Use
/learn @miloyip/Light2dREADME
light2d
This project illustrates light rendering in 2D with C.
All samples output PNGs with svpng.
License: public domain.
Basic
Use Monte Carol integration and ray marching of signed distance field (SDF) to render a emissive circle.
Source code: basic.c
Uniform sampling (64 samples per pixel):

Uniform sampling with different number of samples per pixel:

Stratified sampling (64 samples per pixel):

Jittered sampling (64 samples per pixel):

Various sampling method side-by-side comparison (64 samples per pixel)::

Constructive Solid Geometry
Source code: csg.c
Use union operation for creating multiple shapes:

Various CSG operations on two circles:

Shapes
Source code: shapes.c
Examples of various shapes defined by SDF:


Reflection
Source code: reflection.c

Test scene with two boxes:

Visualization of SDF gradient, which is approximated by central difference:

Reflection via recursive tracing:

Concave mirror scene generates caustics effect:

Refraction
Source code: refraction.c
Applying Snell's law to compute refraction direction. Total internal reflection is also handled.

Test scenes:





Fresnel Reflectance
Source code: fresnel.c
Applying Fresnel equation to compute reflectance of dielectric medium.

Without Fresnel:

With Fresnel term:

Beer-Lambert
Source code: beerlambert.c beerlambert_color.c
Applying Beer-Lambert law to simulate absorption of light in medimum.



Related Skills
node-connect
337.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
