# SummerShaders

A Minecraft shader pack for Iris/OptiFine.

## License

SummerShaders is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

Copyright 2026 GamesofDev

To view a copy of this license, visit: http://creativecommons.org/licenses/by/4.0/

If you use SummerShaders in your project, game, or video, please include the following attribution in your credits or documentation:

"SummerShaders" by GamesofDev, used under CC BY 4.0 / Desaturated or modified from original (if applicable).

## Shader Structure

### Root Directory

```
shaders/
  block.properties       - Block-specific rendering properties
  entity.properties      - Entity-specific rendering properties
  shaders.properties     - Main shader pack configuration
  LICENSE                - License file
  lang/                  - Language/translation files (empty)
  lib/                   - Shared shader libraries
  texture/               - Noise textures and lookup tables
  program/               - Core GLSL shader programs
  world0/                - Overworld shader variants (vertex/fragment)
  world1/                - The End shader variants
  world-1/               - Nether shader variants
```

### program/ Directory

Contains GLSL source files that define the rendering pipeline stages. These are the shared implementations referenced by the world-specific folders.

- `gbuffers_*.glsl` - Geometry buffer shaders that render different scene elements (terrain, entities, water, sky, etc.)
- `deferred*.glsl` - Deferred rendering passes for lighting and post-processing
- `composite*.glsl` - Composite passes for multi-stage effects (shadows, ambient occlusion, volumetric lighting)
- `shadow.glsl` - Shadow map generation
- `dh_terrain.glsl` / `dh_water.glsl` - Distant Horizons compatibility shaders
- `final.glsl` - Final output pass

### lib/ Directory

Shared utility libraries organized by function:

- `common/` - Core utilities: gbuffer data access, material ID mapping, noise generation, normals, position calculations
- `atmosphere/` - Sky rendering: atmospheric scattering, celestial bodies, fog, sky color, volumetric clouds
- `camera/` - Post-processing: bloom, color grading, depth of field, exposure, motion blur, tone mapping
- `lighting/` - Lighting systems: lightmaps, ray tracing, RSM, screen-space shadows, shadow mapping, SSAO
- `surface/` - Surface shading: PBR materials, parallax occlusion mapping
- `water/` - Water effects: caustics, fog, normals, reflection/refraction, translucency
- `antialiasing/` - Anti-aliasing: TAA, FSR, anisotropic filtering
- `settings.glsl` - User-configurable settings
- `uniform.glsl` - Uniform variable declarations
- `wavingPlants.glsl` - Plant waving animation

### world0/, world1/, world-1/ Directories

World-specific shader variants for each dimension:

- `world0/` - Overworld (default Minecraft dimension)
- `world1/` - The End
- `world-1/` - Nether

Each contains paired `.fsh` (fragment) and `.vsh` (vertex) files for every shader stage.

### texture/ Directory

Pre-computed noise textures and lookup tables used by the shader:

- `Noise2D.png` / `Noise3D_*.dat` - Noise for terrain, clouds, and effects
- `T1.png` / `T1_128_64.bin` - Lookup tables for atmospheric scattering
- `MS_64.bin` - Precomputed data for lighting calculations

### Shader Pipeline

The rendering pipeline executes in this order:

1. **gbuffers** - Render scene geometry to G-buffers (albedo, normals, depth, material data)
2. **shadow** - Generate shadow maps from the light's perspective
3. **deferred** - Process G-buffer data for global illumination
4. **composite** - Apply multi-pass effects (SSAO, volumetric lighting, reflections, bloom)
5. **final** - Apply tone mapping, color grading, and output the final image

## Building / Usage

This is a standard Iris/OptiFine shader pack. Place the entire `SummerShaders` folder (containing the `shaders/` directory) into your Minecraft shader packs folder and select it from the shader menu in-game.
