<commit_before># Core lesson plan

## Basic GLSL

* introduction to glsl
* vectors and matrices
* loops and control flow, preprocessor, structs and arrays

## Fragment shaders

* introduction to fragment shaders
* uniform variables & textures

## Vertex shaders

* introduction to vertex shaders (wire cube)
* varying-variables/hello shader (draw flat colored polygons with model/view/projection matrix)


## Projective geometry

* Clip coordinates
* Transformations


# Optional stuff

## More shaders

* blinn-phong lighting
* cel shader
* point sprites/billboards
* cube maps
* raycasting
* bump mapping/normal mapping
* cone tracing
* blending/transparency

## Extensions

* dFdx/dFdy extensions
* multiple render targets
* frag_depth

## glslify

* some example using multiple files
* some example using a module from npm (maybe glsl-random?)

## Advanced shaders

* tone mapping (low priority)
* ssao (low priority)
* feedback effects
  1. simple texture feedback
  1. cellular automata
  1. separate logic and render shaders
  1. floating point textures
  1. particle system: gl.POINTS<commit_msg>expanding lesson plan, scope and madness<commit_after># Core lesson plan

## Basic GLSL

* introduction to glsl
* vectors and matrices
* loops and control flow, preprocessor, structs and arrays

## Fragment shaders

* introduction to fragment shaders
* uniform variables & textures

## Vertex shaders

* introduction to vertex shaders (wire cube)
* varying-variables/hello shader (draw flat colored polygons with model/view/projection matrix)

## Projective geometry

* Clip coordinates
* Transformations

## Lighting

* flat shading
* gouraud shading
* blinn-phong
* other models?  (cook torrance maybe)

# Optional stuff

## Color space

* rgb coordinates
* hsl
* dynamic range/tonemapping

## Image processing

* convolutions
    + blur
    + edge enhancment maybe
* warping
* mip mapping

## Antialiasing

## Raytracing

* perhaps have students implement a simple glsl raytracer for some quadric surfaces

## More shaders

* cel shader
* point sprites/billboards
* cube maps
* raycasting
* bump mapping/normal mapping
* cone tracing
* blending/transparency

## Extensions

* dFdx/dFdy extensions
* multiple render targets
* frag_depth

## glslify

* some example using multiple files
* some example using a module from npm (maybe glsl-random?)

## Advanced shaders

* ssao

## feedback effects

* simple texture feedback
* cellular automata
* separate logic and render shaders
* floating point textures
* particle system: gl.POINTS
{'fraction_non_alphanumeric': 0.06971248523040567, 'fraction_numerical': 0.0019692792437967705, 'mean_word_length': 4.450643776824034, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4406013', 'n_tokens_mistral': 747, 'n_tokens_neox': 713, 'n_words': 281}