graph LR idea_11725f60_0089_4e24_a8fc_36f14453a454["Vertex Shaders"] idea_16580ad5_1edc_423d_b97d_255123c00c8e["Alpha Compositing"] idea_1bf957b0_27de_4de7_b402_ca930952ce42["Homogeneous Coordinates"] idea_2132fb22_760b_47ad_a3f5_b8bea6818535["Matrix Multiplication Rules in Linear Algebra"] idea_2246b373_045b_4ab6_8f09_a13780ebeb90["Draw Calls"] idea_28f8e056_82d8_4577_856d_73fb3875a368["Rotation Matrices"] idea_2abd57d7_d6e0_41f1_aab2_1a257d0583a7["Framebuffers and Render-to-Texture"] idea_2cfec1e2_1e85_4252_9c2f_5d84b2cebe40["Vertex Buffers and Attribute Layout"] idea_2d437482_7a3b_4c4d_a63a_93e44ab43611["Model-View-Projection Transform Chain"] idea_2eb111f4_4e0e_45c0_aad0_e49168c0fd2a["Vector Normalization"] idea_3667d158_485d_4a8b_88de_cf6307b176b6["Depth Testing"] idea_380b1a1a_6c4b_4026_a920_80ec6f426d1c["Dot Product"] idea_3cd97f6e_8236_45cd_8867_bedbe4c062fd["Surface Normals"] idea_48f86375_ead5_4cc3_ab84_8edc4322e53f["Coordinate Spaces in 3D Graphics"] idea_49f6c988_f90a_4744_9bd9_fd10b68f8bd3["Tangent Space"] idea_4c994d27_c47c_4439_a063_67e98c5943a5["Clip Space and Perspective Division"] idea_534a7b38_bad6_4580_adcb_da873cf02bab["Alpha Blending"] idea_57c74eda_73c8_44c2_9f5c_bcf9fbc1f8e2["Depth Buffer"] idea_5db26f51_2024_41c7_b1ad_dec1389b0eed["View Matrix"] idea_638b1726_9303_4ff4_9f46_6504dcf9a0b2["WebGL Rendering Context"] idea_66a149b2_64c4_44bc_bad7_5c13ed3f60ca["Triangle Meshes"] idea_7c766c7b_ae77_4254_b8fd_bb5dcd7459ab["JavaScript Typed Arrays"] idea_7c9274b1_f0e2_4e28_8f8e_b735f35394e1["Texture Coordinates"] idea_81448752_4931_4d1d_8908_8fc26af1aecd["RGB Color Model"] idea_8ba7fcbb_b557_4684_9996_67304766a318["Shader Performance Characteristics"] idea_90366e19_4170_4b87_8c8a_1e54e4fd237c["Texture Filtering and Wrapping Modes"] idea_9da7745c_742d_463b_8145_5c0772ddb672["Programmable Graphics Pipeline"] idea_a3228759_a0a5_4890_a83b_65cf09cd09e2["Rasterization and Varying Interpolation"] idea_a89694fb_d555_4ff7_a3fc_3570f75b145e["GLSL Storage Qualifiers"] idea_a9fe4910_2659_4fa9_a877_9484f08412a2["Texture Sampling"] idea_aa8d6d63_115a_4bf0_9f4f_6d139d6ff969["Linear Interpolation"] idea_b12c7243_c81e_4ecc_a7fb_7e3971643f8e["Normalized Device Coordinates"] idea_b326e0a5_b6b5_4bca_9f1f_041ab1d79a0b["Viewport Transform"] idea_b93d591e_0525_4d33_992d_61806d3f2368["GLSL Vector and Matrix Types"] idea_be71c575_5d29_4d16_a4c4_22c2bc73698f["Perspective Projection Matrix"] idea_c87e972c_f979_440b_8672_bce106a40f43["Lambertian Diffuse Reflection"] idea_cccfdc60_ef1b_498f_82ef_c5eabacf59aa["Normal Mapping"] idea_d03b8e83_f090_48e0_a201_e0be29df2598["Overdraw"] idea_d44ad3b2_933c_41d5_a364_ce26c9f0eeee["Barycentric Coordinates"] idea_d77ebadc_d511_4408_8ee7_9481601be65a["Fragment Shaders"] idea_e00d9a66_92ab_4b75_9b01_49cf7aaa4bfa["Mipmapping"] idea_eb586262_4bf8_4ba6_b9c4_adb51294db97["GPU SIMD Execution Model"] idea_f24e9584_c56c_4f4a_8963_284b64677bd5["Blinn-Phong Reflection Model"] idea_f96c29ed_24fa_4fb0_bae0_fe1e67f8f4a2["GLSL Precision Qualifiers"] idea_1bf957b0_27de_4de7_b402_ca930952ce42 --> idea_4c994d27_c47c_4439_a063_67e98c5943a5 idea_2246b373_045b_4ab6_8f09_a13780ebeb90 --> idea_2cfec1e2_1e85_4252_9c2f_5d84b2cebe40 idea_28f8e056_82d8_4577_856d_73fb3875a368 --> idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 idea_d77ebadc_d511_4408_8ee7_9481601be65a --> idea_8ba7fcbb_b557_4684_9996_67304766a318 idea_16580ad5_1edc_423d_b97d_255123c00c8e --> idea_534a7b38_bad6_4580_adcb_da873cf02bab idea_f24e9584_c56c_4f4a_8963_284b64677bd5 --> idea_cccfdc60_ef1b_498f_82ef_c5eabacf59aa idea_d44ad3b2_933c_41d5_a364_ce26c9f0eeee --> idea_a3228759_a0a5_4890_a83b_65cf09cd09e2 idea_eb586262_4bf8_4ba6_b9c4_adb51294db97 --> idea_8ba7fcbb_b557_4684_9996_67304766a318 idea_f96c29ed_24fa_4fb0_bae0_fe1e67f8f4a2 --> idea_8ba7fcbb_b557_4684_9996_67304766a318 idea_b93d591e_0525_4d33_992d_61806d3f2368 --> idea_11725f60_0089_4e24_a8fc_36f14453a454 idea_b93d591e_0525_4d33_992d_61806d3f2368 --> idea_d77ebadc_d511_4408_8ee7_9481601be65a idea_7c9274b1_f0e2_4e28_8f8e_b735f35394e1 --> idea_a9fe4910_2659_4fa9_a877_9484f08412a2 idea_11725f60_0089_4e24_a8fc_36f14453a454 --> idea_2cfec1e2_1e85_4252_9c2f_5d84b2cebe40 idea_638b1726_9303_4ff4_9f46_6504dcf9a0b2 --> idea_9da7745c_742d_463b_8145_5c0772ddb672 idea_5db26f51_2024_41c7_b1ad_dec1389b0eed --> idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 idea_380b1a1a_6c4b_4026_a920_80ec6f426d1c --> idea_f24e9584_c56c_4f4a_8963_284b64677bd5 idea_aa8d6d63_115a_4bf0_9f4f_6d139d6ff969 --> idea_90366e19_4170_4b87_8c8a_1e54e4fd237c idea_b93d591e_0525_4d33_992d_61806d3f2368 --> idea_a89694fb_d555_4ff7_a3fc_3570f75b145e idea_66a149b2_64c4_44bc_bad7_5c13ed3f60ca --> idea_9da7745c_742d_463b_8145_5c0772ddb672 idea_4c994d27_c47c_4439_a063_67e98c5943a5 --> idea_a3228759_a0a5_4890_a83b_65cf09cd09e2 idea_b326e0a5_b6b5_4bca_9f1f_041ab1d79a0b --> idea_a3228759_a0a5_4890_a83b_65cf09cd09e2 idea_a9fe4910_2659_4fa9_a877_9484f08412a2 --> idea_2abd57d7_d6e0_41f1_aab2_1a257d0583a7 idea_7c766c7b_ae77_4254_b8fd_bb5dcd7459ab --> idea_2cfec1e2_1e85_4252_9c2f_5d84b2cebe40 idea_aa8d6d63_115a_4bf0_9f4f_6d139d6ff969 --> idea_a3228759_a0a5_4890_a83b_65cf09cd09e2 idea_638b1726_9303_4ff4_9f46_6504dcf9a0b2 --> idea_2abd57d7_d6e0_41f1_aab2_1a257d0583a7 idea_57c74eda_73c8_44c2_9f5c_bcf9fbc1f8e2 --> idea_2abd57d7_d6e0_41f1_aab2_1a257d0583a7 idea_b12c7243_c81e_4ecc_a7fb_7e3971643f8e --> idea_4c994d27_c47c_4439_a063_67e98c5943a5 idea_d03b8e83_f090_48e0_a201_e0be29df2598 --> idea_8ba7fcbb_b557_4684_9996_67304766a318 idea_d77ebadc_d511_4408_8ee7_9481601be65a --> idea_a9fe4910_2659_4fa9_a877_9484f08412a2 idea_48f86375_ead5_4cc3_ab84_8edc4322e53f --> idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 idea_a9fe4910_2659_4fa9_a877_9484f08412a2 --> idea_cccfdc60_ef1b_498f_82ef_c5eabacf59aa idea_d77ebadc_d511_4408_8ee7_9481601be65a --> idea_534a7b38_bad6_4580_adcb_da873cf02bab idea_57c74eda_73c8_44c2_9f5c_bcf9fbc1f8e2 --> idea_3667d158_485d_4a8b_88de_cf6307b176b6 idea_9da7745c_742d_463b_8145_5c0772ddb672 --> idea_11725f60_0089_4e24_a8fc_36f14453a454 idea_9da7745c_742d_463b_8145_5c0772ddb672 --> idea_d77ebadc_d511_4408_8ee7_9481601be65a idea_c87e972c_f979_440b_8672_bce106a40f43 --> idea_f24e9584_c56c_4f4a_8963_284b64677bd5 idea_be71c575_5d29_4d16_a4c4_22c2bc73698f --> idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 idea_3cd97f6e_8236_45cd_8867_bedbe4c062fd --> idea_f24e9584_c56c_4f4a_8963_284b64677bd5 idea_a3228759_a0a5_4890_a83b_65cf09cd09e2 --> idea_3667d158_485d_4a8b_88de_cf6307b176b6 idea_1bf957b0_27de_4de7_b402_ca930952ce42 --> idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 idea_81448752_4931_4d1d_8908_8fc26af1aecd --> idea_d77ebadc_d511_4408_8ee7_9481601be65a idea_2132fb22_760b_47ad_a3f5_b8bea6818535 --> idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 idea_a9fe4910_2659_4fa9_a877_9484f08412a2 --> idea_90366e19_4170_4b87_8c8a_1e54e4fd237c idea_e00d9a66_92ab_4b75_9b01_49cf7aaa4bfa --> idea_90366e19_4170_4b87_8c8a_1e54e4fd237c idea_2eb111f4_4e0e_45c0_aad0_e49168c0fd2a --> idea_f24e9584_c56c_4f4a_8963_284b64677bd5 idea_49f6c988_f90a_4744_9bd9_fd10b68f8bd3 --> idea_cccfdc60_ef1b_498f_82ef_c5eabacf59aa idea_be71c575_5d29_4d16_a4c4_22c2bc73698f --> idea_4c994d27_c47c_4439_a063_67e98c5943a5 idea_11725f60_0089_4e24_a8fc_36f14453a454 --> idea_a89694fb_d555_4ff7_a3fc_3570f75b145e style idea_eb586262_4bf8_4ba6_b9c4_adb51294db97 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_49f6c988_f90a_4744_9bd9_fd10b68f8bd3 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_57c74eda_73c8_44c2_9f5c_bcf9fbc1f8e2 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_aa8d6d63_115a_4bf0_9f4f_6d139d6ff969 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_a9fe4910_2659_4fa9_a877_9484f08412a2 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_3667d158_485d_4a8b_88de_cf6307b176b6 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_b12c7243_c81e_4ecc_a7fb_7e3971643f8e fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_28f8e056_82d8_4577_856d_73fb3875a368 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_b93d591e_0525_4d33_992d_61806d3f2368 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_2eb111f4_4e0e_45c0_aad0_e49168c0fd2a fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_2abd57d7_d6e0_41f1_aab2_1a257d0583a7 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_5db26f51_2024_41c7_b1ad_dec1389b0eed fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_7c9274b1_f0e2_4e28_8f8e_b735f35394e1 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_a89694fb_d555_4ff7_a3fc_3570f75b145e fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_2246b373_045b_4ab6_8f09_a13780ebeb90 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_cccfdc60_ef1b_498f_82ef_c5eabacf59aa fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_8ba7fcbb_b557_4684_9996_67304766a318 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_380b1a1a_6c4b_4026_a920_80ec6f426d1c fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_f24e9584_c56c_4f4a_8963_284b64677bd5 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_f96c29ed_24fa_4fb0_bae0_fe1e67f8f4a2 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_48f86375_ead5_4cc3_ab84_8edc4322e53f fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_638b1726_9303_4ff4_9f46_6504dcf9a0b2 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_7c766c7b_ae77_4254_b8fd_bb5dcd7459ab fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_be71c575_5d29_4d16_a4c4_22c2bc73698f fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_9da7745c_742d_463b_8145_5c0772ddb672 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_3cd97f6e_8236_45cd_8867_bedbe4c062fd fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_11725f60_0089_4e24_a8fc_36f14453a454 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_16580ad5_1edc_423d_b97d_255123c00c8e fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_4c994d27_c47c_4439_a063_67e98c5943a5 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_1bf957b0_27de_4de7_b402_ca930952ce42 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_2d437482_7a3b_4c4d_a63a_93e44ab43611 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_b326e0a5_b6b5_4bca_9f1f_041ab1d79a0b fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_a3228759_a0a5_4890_a83b_65cf09cd09e2 fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_2132fb22_760b_47ad_a3f5_b8bea6818535 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_534a7b38_bad6_4580_adcb_da873cf02bab fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_66a149b2_64c4_44bc_bad7_5c13ed3f60ca fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_d44ad3b2_933c_41d5_a364_ce26c9f0eeee fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_d03b8e83_f090_48e0_a201_e0be29df2598 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_c87e972c_f979_440b_8672_bce106a40f43 fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_d77ebadc_d511_4408_8ee7_9481601be65a fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_81448752_4931_4d1d_8908_8fc26af1aecd fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_90366e19_4170_4b87_8c8a_1e54e4fd237c fill:#e5e7eb,stroke:#9ca3af,color:#374151 style idea_e00d9a66_92ab_4b75_9b01_49cf7aaa4bfa fill:#fef3c7,stroke:#f59e0b,color:#92400e style idea_2cfec1e2_1e85_4252_9c2f_5d84b2cebe40 fill:#e5e7eb,stroke:#9ca3af,color:#374151 linkStyle 0 stroke:#2563eb,stroke-width:3px linkStyle 3 stroke:#2563eb,stroke-width:3px linkStyle 10 stroke:#2563eb,stroke-width:3px linkStyle 12 stroke:#2563eb,stroke-width:3px linkStyle 13 stroke:#2563eb,stroke-width:3px linkStyle 18 stroke:#2563eb,stroke-width:3px linkStyle 19 stroke:#2563eb,stroke-width:3px linkStyle 21 stroke:#2563eb,stroke-width:3px linkStyle 26 stroke:#2563eb,stroke-width:3px linkStyle 28 stroke:#2563eb,stroke-width:3px linkStyle 30 stroke:#2563eb,stroke-width:3px linkStyle 31 stroke:#2563eb,stroke-width:3px linkStyle 33 stroke:#2563eb,stroke-width:3px linkStyle 34 stroke:#2563eb,stroke-width:3px linkStyle 38 stroke:#2563eb,stroke-width:3px linkStyle 40 stroke:#2563eb,stroke-width:3px linkStyle 42 stroke:#2563eb,stroke-width:3px linkStyle 46 stroke:#2563eb,stroke-width:3px linkStyle 47 stroke:#2563eb,stroke-width:3px