{"id":48379896,"url":"https://github.com/midwan/amiga-lw-plugin","last_synced_at":"2026-04-11T22:22:40.519Z","repository":{"id":349177891,"uuid":"1201355558","full_name":"midwan/amiga-lw-plugin","owner":"midwan","description":"LightWave 3D 5.x plugins for AmigaOS, cross-compiled with GCC","archived":false,"fork":false,"pushed_at":"2026-04-05T19:24:41.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T19:24:48.229Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/midwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-04T15:10:20.000Z","updated_at":"2026-04-05T19:24:44.000Z","dependencies_parsed_at":"2026-04-07T21:00:37.862Z","dependency_job_id":null,"html_url":"https://github.com/midwan/amiga-lw-plugin","commit_stats":null,"previous_names":["midwan/amiga-lw-plugin"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/midwan/amiga-lw-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/midwan%2Famiga-lw-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/midwan%2Famiga-lw-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/midwan%2Famiga-lw-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/midwan%2Famiga-lw-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/midwan","download_url":"https://codeload.github.com/midwan/amiga-lw-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/midwan%2Famiga-lw-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31528751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-05T19:04:19.522Z","updated_at":"2026-04-11T22:22:40.508Z","avatar_url":"https://github.com/midwan.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Amiga LightWave Plugin\n\nLightWave 3D 5.x plugins for AmigaOS, cross-compiled with GCC.\n\nCurrent version: `0.7.0`\n\n## 0.7.0 Highlights\n\n- Fixed scene persistence for the **Fresnel** and **PBR** shaders so object\n  property saves now stick correctly when the plugins are attached.\n- Simplified **PBR Shader** to match its current implementation: AO and\n  environment light are now documented and exposed as fast normal-based\n  approximations, while blurred reflections remain the ray-traced feature.\n- Expanded **LensFlare** to support a configurable flare-source cap up to 50.\n- Optimized **ObjSwap** for larger replacement sets with faster sorting and\n  frame lookup.\n\n## Plugins\n\n### ObjSwap\n\nObject Replacement plugin for Layout. Automatically swaps objects based on\nframe number derived from filename suffixes.\n\nGiven a base object `Ship.lwo`, the plugin scans the directory for\n`Ship_010.lwo`, `Ship_100.lwo` etc. and replaces the object at the\ncorresponding frames. If no exact frame match exists, the most recent\nreplacement before the current frame is used.\n\n### Fresnel\n\nPhysically-based Fresnel shader for Layout. Adds realistic angle-dependent\nreflectivity to surfaces using Schlick's approximation. Edges become more\nreflective and less transparent at glancing angles — essential for convincing\nglass, water, and polished surfaces. Configurable IOR, power, and independent\ncontrol over reflection, diffuse and transparency effects.\n\n### PBR Shader\n\nCombined PBR-lite shader that brings modern material concepts to LightWave 5.x.\nIncludes variable metallic intensity (0-100), roughness (normal perturbation),\nambient occlusion and environment-light approximations based on the surface\nnormal, plus blurred reflections using multi-sample ray tracing. For\nangle-dependent Fresnel effects, stack with the standalone Fresnel plugin.\n\n### LensFlare\n\nPost-render image filter that detects bright specular highlights and composites\nglow and hexagonal star streaks over the rendered image. Finds the brightest\nspecular hotspots up to a configurable cap (default 8, maximum 50) and renders\nwarm-tinted flares with configurable threshold, radius, streak length, and\nintensity. Applied via the Effects/Image Processing panel.\n\n## Toolchain\n\nUses `sacredbanana/amiga-compiler:m68k-amigaos` Docker image providing:\n- `m68k-amigaos-gcc` 6.5.0b (GCC cross-compiler)\n- Full AmigaOS NDK headers and libraries\n- libnix (no ixemul.library dependency)\n\n## Building\n\n```bash\n./build.sh          # Build SDK library + all plugins\n./build.sh objswap  # Build ObjSwap only\n./build.sh fresnel  # Build Fresnel only\n./build.sh pbr      # Build PBR Shader only\n./build.sh lensflare # Build LensFlare only\n./build.sh clean    # Clean build artifacts\n```\n\nCI builds run automatically via GitHub Actions using the same Docker image.\n\n## Installation\n\nCopy the `.p` file(s) from `build/` to your LightWave plugins directory\non the Amiga, then add the plugin lines to your LW config file:\n\n```\nPlugin ObjReplacementHandler ObjSwap objswap.p ObjSwap\nPlugin ObjReplacementInterface ObjSwap objswap.p ObjSwap\nPlugin ShaderHandler Fresnel fresnel.p Fresnel\nPlugin ShaderInterface Fresnel fresnel.p Fresnel\nPlugin ShaderHandler PBR pbr.p PBR Shader\nPlugin ShaderInterface PBR pbr.p PBR Shader\nPlugin ImageFilterHandler LensFlare lensflare.p LensFlare\n\n```\n\n## SDK\n\nThe `sdk/` directory contains the LightWave 5.x SDK headers and support\nlibrary, patched for GCC compatibility:\n\n- `sdk/include/` — LW SDK headers (with GCC XCALL_ support added to `plug.h`)\n- `sdk/lib/` — Built server library (`server.a`) and startup code (`serv_gcc.o`)\n- `sdk/source/` — Server library source, GCC startup assembly, stubs\n\n## Project Structure\n\n```\n├── build.sh              # Docker build wrapper\n├── Makefile              # Build system\n├── VERSION               # Semver version\n├── .github/workflows/    # CI\n├── sdk/\n│   ├── include/          # LW 5.x SDK headers\n│   ├── lib/              # Built libraries\n│   └── source/           # Library source\n└── src/\n    ├── objswap/          # ObjSwap plugin source\n    ├── fresnel/          # Fresnel shader source\n    ├── pbr/              # PBR shader source\n    └── lensflare/        # Lens flare image filter source\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmidwan%2Famiga-lw-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmidwan%2Famiga-lw-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmidwan%2Famiga-lw-plugin/lists"}