ThreeJS Examples Syllabus

Category 1: Fundamentals - Geometry, Camera, and Basic Rendering (幾何、相機和基本渲染)

Focus: Core concepts and basic 3D scene setup

Examples to cover (~30):

  • Basics: webgl_geometries, webgl_camera, webgl_camera_array, webgl_camera_logarithmicdepthbuffer
  • Basic Geometry: webgl_geometry_cube, webgl_geometry_shapes, webgl_geometry_colors, webgl_geometry_dynamic
  • Parametric & Advanced: webgl_geometries_parametric, webgl_geometry_convex, webgl_geometry_terrain
  • Text: webgl_geometry_text, webgl_geometry_text_shapes, webgl_geometry_text_stroke
  • Special: webgl_geometry_minecraft, webgl_geometry_teapot, webgl_geometry_nurbs
  • Extrusion: webgl_geometry_extrude_shapes, webgl_geometry_extrude_splines
  • Tools: webgl_helpers, webgl_geometry_spline_editor, webgl_geometry_terrain_raycast
  • CSG: webgl_geometry_csg
  • Lookup: webgl_geometry_colors_lookuptable

Category 2: Materials, Textures & Visual Effects (材質、紋理和視覺效果)

Focus: Materials system, texture mapping, and visual enhancements

Examples to cover (~50):

  • Basic Materials: webgl_materials_blending, webgl_materials_blending_custom, webgl_materials_channels, webgl_materials_wireframe, webgl_materials_toon, webgl_materials_alphahash
  • Texture Mapping: webgl_materials_texture_anisotropy, webgl_materials_texture_canvas, webgl_materials_texture_filters, webgl_materials_texture_manualmipmap, webgl_materials_texture_partialupdate, webgl_materials_texture_rotation
  • Advanced Materials: webgl_materials_bumpmap, webgl_materials_normalmap, webgl_materials_normalmap_object_space, webgl_materials_displacementmap
  • PBR Materials: webgl_materials_physical_clearcoat, webgl_materials_physical_transmission, webgl_materials_physical_transmission_alpha, webgl_materials_subsurface_scattering
  • Environment Maps: webgl_materials_cubemap, webgl_materials_cubemap_dynamic, webgl_materials_cubemap_refraction, webgl_materials_cubemap_mipmaps, webgl_materials_cubemap_render_to_mipmaps, webgl_materials_envmaps, webgl_materials_envmaps_exr, webgl_materials_envmaps_groundprojected, webgl_materials_envmaps_hdr, webgl_materials_matcap
  • Video/Webcam: webgl_materials_video, webgl_materials_video_webcam
  • Special: webgl_materials_car, webgl_materials_modified
  • Effects: webgl_effects_anaglyph, webgl_effects_ascii, webgl_effects_parallaxbarrier, webgl_effects_peppersghost, webgl_effects_stereo
  • Special Rendering: webgl_mirror, webgl_refraction, webgl_portal

Category 3: Lighting & Shadows (光線與陰影)

Focus: Different light types, shadow mapping techniques

Examples to cover (~25):

  • Light Types: webgl_lights_hemisphere, webgl_lights_physical, webgl_lights_pointlights, webgl_lights_spotlight, webgl_lights_spotlights, webgl_lights_rectarealight
  • Light Probes: webgl_lightprobe, webgl_lightprobe_cubecamera
  • Shadows: webgl_shadowmap, webgl_shadowmap_performance, webgl_shadowmap_pointlight, webgl_shadowmap_viewer, webgl_shadowmap_vsm, webgl_shadowmesh, webgl_shadow_contact
  • Advanced Shadows: webgl_shadowmap_csm, webgl_shadowmap_pcss, webgl_shadowmap_progressive
  • Lens Effects: webgl_lensflares
  • Global Illumination: webgl_simple_gi
  • Tone Mapping: webgl_tonemapping
  • Color Space: webgl_test_wide_gamut, webgl_furnace_test, webgl_pmrem_test

Category 4: Animation & Character Control (動畫和角色控制)

Focus: Keyframe animation, skeletal animation, morphing

Examples to cover (~25):

  • Basic Animation: webgl_animation_keyframes, webgl_animation_multiple
  • Skinning: webgl_animation_skinning_blending, webgl_animation_skinning_additive_blending, webgl_animation_skinning_ik, webgl_animation_skinning_morph
  • Morph Targets: webgl_morphtargets, webgl_morphtargets_face, webgl_morphtargets_horse, webgl_morphtargets_sphere, webgl_morphtargets_webcam
  • Animation Groups: misc_animation_groups, misc_animation_keys
  • Instanced Animation: webgl_instancing_morph
  • Modifiers: webgl_modifier_curve, webgl_modifier_curve_instanced, webgl_modifier_edgesplit, webgl_modifier_simplifier, webgl_modifier_subdivision, webgl_modifier_tessellation

Category 5: Interaction & Controls (交互與控制)

Focus: User interaction, raycasting, controls

Examples to cover (~35):

  • Interactive: webgl_interactive_cubes, webgl_interactive_cubes_gpu, webgl_interactive_cubes_ortho, webgl_interactive_buffergeometry, webgl_interactive_lines, webgl_interactive_points, webgl_interactive_raycasting_points, webgl_interactive_voxelpainter
  • Raycasting: webgl_raycaster_bvh, webgl_raycaster_sprite, webgl_raycaster_texture, misc_raycaster_helper
  • Camera Controls: misc_controls_orbit, misc_controls_arcball, misc_controls_fly, misc_controls_map, misc_controls_pointerlock, misc_controls_trackball, misc_controls_transform, misc_controls_drag
  • Selection: misc_boxselection
  • Look At: misc_lookat
  • Layers: webgl_layers
  • Math: webgl_math_obb, webgl_math_orientation_transform

Category 6: Instancing, Performance & Advanced Geometry

Focus: Performance optimization, instancing, buffer geometry

Examples to cover (~50):

  • Instancing: webgl_instancing_dynamic, webgl_instancing_performance, webgl_instancing_raycast, webgl_instancing_scatter
  • Buffer Geometry: webgl_buffergeometry, webgl_buffergeometry_attributes_integer, webgl_buffergeometry_attributes_none, webgl_buffergeometry_custom_attributes_particles, webgl_buffergeometry_drawrange, webgl_buffergeometry_glbufferattribute, webgl_buffergeometry_indexed, webgl_buffergeometry_instancing, webgl_buffergeometry_instancing_billboards, webgl_buffergeometry_instancing_interleaved, webgl_buffergeometry_lines, webgl_buffergeometry_lines_indexed, webgl_buffergeometry_points, webgl_buffergeometry_points_interleaved, webgl_buffergeometry_rawshader, webgl_buffergeometry_selective_draw, webgl_buffergeometry_uint
  • Custom Attributes: webgl_custom_attributes, webgl_custom_attributes_lines, webgl_custom_attributes_points, webgl_custom_attributes_points2, webgl_custom_attributes_points3
  • Points & Particles: webgl_points_billboards, webgl_points_dynamic, webgl_points_sprites, webgl_points_waves
  • Lines: webgl_lines_colors, webgl_lines_dashed, webgl_lines_fat, webgl_lines_fat_raycasting, webgl_lines_fat_wireframe
  • LOD: webgl_lod
  • Batch: webgl_mesh_batch
  • Performance: webgl_performance, webgl_test_memory, webgl_test_memory2
  • Sprites: webgl_sprites

Category 7: File Loaders & Import/Export

Focus: Loading external 3D models and assets

Examples to cover (~70):

  • GLTF (Most Important): webgl_loader_gltf, webgl_loader_gltf_avif, webgl_loader_gltf_compressed, webgl_loader_gltf_dispersion, webgl_loader_gltf_instancing, webgl_loader_gltf_iridescence, webgl_loader_gltf_sheen, webgl_loader_gltf_transmission, webgl_loader_gltf_variants, webgl_loader_gltf_anisotropy
  • Common Formats: webgl_loader_fbx, webgl_loader_fbx_nurbs, webgl_loader_obj, webgl_loader_obj_mtl, webgl_loader_collada, webgl_loader_collada_kinematics, webgl_loader_collada_skinning, webgl_loader_draco, webgl_loader_stl, webgl_loader_ply
  • CAD Formats: webgl_loader_3dm, webgl_loader_3ds, webgl_loader_3mf, webgl_loader_3mf_materials, webgl_loader_amf, webgl_loader_ifc, webgl_loader_usdz, webgl_loader_kmz
  • Animation Formats: webgl_loader_bvh, webgl_loader_md2, webgl_loader_md2_control, webgl_loader_mdd
  • Point Cloud: webgl_loader_pcd, webgl_loader_xyz
  • Scientific: webgl_loader_pdb, webgl_loader_nrrd, webgl_loader_vtk
  • Other: webgl_loader_gcode, webgl_loader_ldraw, webgl_loader_lwo, webgl_loader_svg, webgl_loader_vox, webgl_loader_vrml, webgl_loader_ttf
  • Texture Loaders: webgl_loader_texture_dds, webgl_loader_texture_exr, webgl_loader_texture_ultrahdr, webgl_loader_texture_hdr, webgl_loader_texture_ktx, webgl_loader_texture_ktx2, webgl_loader_texture_lottie, webgl_loader_texture_pvrtc, webgl_loader_texture_rgbm, webgl_loader_texture_tga, webgl_loader_texture_tiff, webgl_loader_imagebitmap
  • Exporters: misc_exporter_draco, misc_exporter_gltf, misc_exporter_obj, misc_exporter_ply, misc_exporter_stl, misc_exporter_usdz, misc_exporter_exr, misc_exporter_ktx2

Category 8: Post-Processing & Advanced Rendering

Focus: Post-processing effects, render targets, advanced techniques

Examples to cover (~60):

  • Basic Post-Processing: webgl_postprocessing, webgl_postprocessing_advanced
  • Anti-Aliasing: webgl_postprocessing_fxaa, webgl_postprocessing_smaa, webgl_postprocessing_ssaa, webgl_postprocessing_taa
  • Bloom & Glow: webgl_postprocessing_unreal_bloom, webgl_postprocessing_unreal_bloom_selective
  • Depth Effects: webgl_postprocessing_dof, webgl_postprocessing_dof2, webgl_postprocessing_ssao, webgl_postprocessing_sao, webgl_postprocessing_gtao, webgl_postprocessing_material_ao
  • Reflections: webgl_postprocessing_ssr
  • Stylistic: webgl_postprocessing_outline, webgl_postprocessing_pixel, webgl_postprocessing_rgb_halftone, webgl_postprocessing_sobel, webgl_postprocessing_glitch, webgl_postprocessing_afterimage
  • Color Grading: webgl_postprocessing_3dlut, webgl_postprocessing_backgrounds, webgl_postprocessing_transition
  • Special Effects: webgl_postprocessing_godrays, webgl_postprocessing_masking, webgl_postprocessing_procedural
  • Render Targets: webgl_rtt, webgl_multiple_rendertargets, webgl_multisampled_renderbuffers
  • Clipping: webgl_clipping, webgl_clipping_advanced, webgl_clipping_intersection, webgl_clipping_stencil, webgl_clipculldistance
  • Depth & Texture: webgl_depth_texture, webgl_framebuffer_texture
  • Advanced Textures: webgl_texture2darray, webgl_texture2darray_compressed, webgl_texture2darray_layerupdate, webgl_texture3d, webgl_texture3d_partialupdate
  • Decals: webgl_decals
  • UBO: webgl_ubo, webgl_ubo_arrays
  • Multiple Views: webgl_multiple_elements, webgl_multiple_elements_text, webgl_multiple_scenes_comparison, webgl_multiple_views
  • Panoramas: webgl_panorama_cube, webgl_panorama_equirectangular, webgl_video_panorama_equirectangular
  • Read Buffer: webgl_read_float_buffer
  • Path Tracing: webgl_renderer_pathtracer
  • Render Target Array: webgl_rendertarget_texture2darray

Category 9: Shaders, GPGPU, Volumes & Special Techniques

Focus: Custom shaders, GPU computing, volumetric rendering

Examples to cover (~35):

  • Custom Shaders: webgl_shader, webgl_shader_lava, webgl_shaders_ocean, webgl_shaders_sky
  • GPGPU: webgl_gpgpu_birds, webgl_gpgpu_birds_gltf, webgl_gpgpu_water, webgl_gpgpu_protoplanet
  • Volumetric: webgl_volume_cloud, webgl_volume_instancing, webgl_volume_perlin
  • Water: webgl_water, webgl_water_flowmap
  • Marching Cubes: webgl_marchingcubes
  • Video: webgl_video_kinect
  • Workers: webgl_worker_offscreencanvas
  • Audio: webaudio_orientation, webaudio_sandbox, webaudio_timing, webaudio_visualizer
  • CSS Integration: css2d_label, css3d_molecules, css3d_orthographic, css3d_periodictable, css3d_sandbox, css3d_sprites, css3d_youtube
  • SVG: svg_lines, svg_sandbox
  • Physics: physics_ammo_break, physics_ammo_cloth, physics_ammo_instancing, physics_ammo_rope, physics_ammo_terrain, physics_ammo_volume, physics_jolt_instancing, physics_rapier_instancing
  • Game: games_fps
  • Tests: misc_uv_tests

Category 10: WebGPU & WebXR (Future of 3D Web)

Focus: Next-generation graphics API and VR/AR

Examples to cover (~180):

WebGPU (~157 examples):

  • Basics: webgpu_camera, webgpu_camera_array, webgpu_camera_logarithmicdepthbuffer, webgpu_sandbox
  • Materials: webgpu_materials, webgpu_materials_basic, webgpu_materials_alphahash, webgpu_materials_arrays, webgpu_materials_displacementmap, webgpu_materials_envmaps, webgpu_materials_envmaps_bpcem, webgpu_materials_lightmap, webgpu_materials_matcap, webgpu_materials_sss, webgpu_materials_transmission, webgpu_materials_toon, webgpu_materials_video, webgpu_clearcoat
  • Lighting: webgpu_lights_custom, webgpu_lights_ies_spotlight, webgpu_lights_phong, webgpu_lights_physical, webgpu_lights_rectarealight, webgpu_lights_selective, webgpu_lights_spotlight, webgpu_lights_tiled, webgpu_lightprobe, webgpu_lightprobe_cubecamera
  • Compute Shaders: webgpu_compute_audio, webgpu_compute_birds, webgpu_compute_geometry, webgpu_compute_particles, webgpu_compute_particles_rain, webgpu_compute_particles_snow, webgpu_compute_points, webgpu_compute_sort_bitonic, webgpu_compute_texture, webgpu_compute_texture_pingpong, webgpu_compute_water
  • TSL (Three Shading Language): webgpu_tsl_angular_slicing, webgpu_tsl_compute_attractors_particles, webgpu_tsl_earth, webgpu_tsl_editor, webgpu_tsl_galaxy, webgpu_tsl_halftone, webgpu_tsl_interoperability, webgpu_tsl_procedural_terrain, webgpu_tsl_raging_sea, webgpu_tsl_transpiler, webgpu_tsl_vfx_flames, webgpu_tsl_vfx_linkedparticles, webgpu_tsl_vfx_tornado
  • Post-Processing: All webgpu_postprocessing_* examples (~30)
  • Advanced: Shadows, instancing, skinning, volumes, particles, loaders, etc.

WebXR (~24 examples):

  • AR: webxr_ar_cones, webxr_ar_hittest, webxr_ar_lighting, webxr_ar_plane_detection
  • VR Interaction: webxr_vr_handinput, webxr_vr_handinput_cubes, webxr_vr_handinput_profiles, webxr_vr_handinput_pointerclick, webxr_vr_handinput_pointerdrag, webxr_vr_handinput_pressbutton
  • VR Experiences: webxr_vr_layers, webxr_vr_panorama, webxr_vr_panorama_depth, webxr_vr_rollercoaster, webxr_vr_sandbox, webxr_vr_teleport, webxr_vr_video
  • XR General: webxr_xr_ballshooter, webxr_xr_controls_transform, webxr_xr_cubes, webxr_xr_dragging, webxr_xr_dragging_custom_depth, webxr_xr_haptics, webxr_xr_paint, webxr_xr_sculpt
  • WebGPU XR: webgpu_xr_cubes

📊 Summary Statistics

CategoryTopic# Examples
1Fundamentals~30
2Materials & Textures~50
3Lighting & Shadows~25
4Animation~25
5Interaction & Controls~35
6Performance & Instancing~50
7Loaders & File I/O~70
8Post-Processing~60
9Shaders & Special~35
10WebGPU & WebXR~180
Total~560

🎯 Teaching Approach Recommendations

  1. Lesson Structure: Each lesson should be 2-3 hours with:
  • Theory introduction (20%)
  • Live coding demonstration (40%)
  • Student hands-on practice (40%)
  1. Key Examples to Demo Live: Focus on 5-8 representative examples per lesson, show others as reference
  1. Progressive Difficulty: Start simple in each lesson, build complexity
  1. Practical Projects: End each lesson with a mini-project combining concepts
  1. WebGPU Note: Lesson 10 is the longest - consider splitting if needed, as WebGPU is the future but may need more dedicated time