Changed normal of the ground to GL, Now the normal mapping is correct.

This commit is contained in:
2026-01-04 16:11:18 +01:00
parent 296aad3f84
commit b417f016af
20 changed files with 985 additions and 254 deletions

118
AGENTS.md Normal file
View File

@@ -0,0 +1,118 @@
# Fundamental Coding Style Rules
Codex must obey these rules without exception:
## Imports
* Each import statement must be separated by exactly **one empty line**.
* All `from` tokens must be aligned vertically using **tabs before `from`**.
* Use **double quotes** for all string literals.
* Use **ES modules** only.
* Avoid backticks unless unavoidable for syntax.
## Function Calls
* Always write calls like:
`myFunction( param )`
with spaces **inside** parentheses.
## Class Structure
* Exactly **one empty line** between class methods.
* No empty line at start or end of class.
* Methods must start with a blank line after `{` and end with a blank line before `}`.
## Method Body Spacing
Inside every method body:
* **One empty line between every line of code**.
* No inline comments on the same line as code.
## Callbacks & Functions
* Never write inline callbacks.
* Never write nested callbacks.
* Never pass anonymous inline functions to `.map()`, `.filter()`, `.forEach()`, etc.
* Never use arrow functions.
* Always create a separate class method instead.
## Promises
* Never use `.then()`.
* Never use `new Promise( resolve => { ... } )`.
* Always use `async` / `await`.
* Avoid `try-catch` blocks unless mandatory.
## Arrays
* Use `new Array()` instead of `[]`, **except** in Angular metadata (`imports: [ ]`, `providers: [ ]` etc.) where `[]` is allowed.
## Objects
* Never return an inline object directly.
* Always assign the object to a variable first, then return that variable.
* Align object literal values vertically using tabs before the values.
## Conditionals
* Never use short-form ternary (`? :`).
* Always write full `if` statements.
## Logging
* Do not use `$()` syntax.
* Use simple logs:
`console.log( "message", value );`
## JSON imports
Always use:
```
import data from "./file.json" with { type: "json" };
```
## Indentation
* Use **tabs** everywhere (no spaces).
* Nested JSON or object structures must use tabs for indentation.
# Repository Guidelines
## Project Structure & Modules
- `engine/`: core rendering engine (WebGL, deferred, PBR).
- `shaders/`: GLSL shader sources; `shaders/old/` contains legacy variants.
- `plugins/`: optional features and extensions (for example `plugins/ocean`).
- `demos/`, `start.html`, `index.html`: example entrypoints for running the engine.
- `media/`: textures, models, fonts, and screenshots used by demos.
- `server.js`: minimal static HTTP server for local development.
## Build, Run, and Development
- No build step is required; files are served as static assets.
- Run `node server.js` from the repo root to start the dev server on `http://localhost:4000`.
- Open `/start.html` or files under `/demos/` in your browser to exercise changes.
- Use ES modules (`type: "module"` in `package.json`) for new JavaScript files.
## Coding Style & Naming
- JavaScript only, using ES modules and `class` syntax where appropriate.
- Use camelCase for variables and functions, PascalCase for classes and render passes.
- Match existing indentation (tabs) and brace style in the surrounding file.
- Keep core engine logic in `engine/`, shaders in `shaders/`, and optional logic in `plugins/`.
## Testing & Validation
- There is no automated test runner yet; validate behavior through demos.
- Prefer creating small, focused demo pages under `demos/` (for example `demos/rough.htm`) for new features.
- Keep demos self-contained, quick to load, and clearly named after the feature they showcase.
## Commit & Pull Request Guidelines
- Write short, descriptive commit messages (for example `Fix SSAO sampling` or `Update README images`).
- Aim for one logical change per commit when practical.
- PRs should include a concise description, a list of affected areas, and screenshots or GIFs for visual or lighting changes.
- Link to any related issues and mention relevant demo URLs (such as `/demos/new.htm`) that reviewers can open.
## Agent-Specific Notes
- When changing rendering behavior, prefer adding or adjusting render passes under `engine/renderPasses/` instead of large monolithic edits.
- Avoid deleting existing demos or media assets; add new examples alongside current ones to preserve reference behavior.