vec3 calcNormal() { vec3 normal = normalize(ex_Normal); vec3 tangent = normalize(ex_Tangent); //Gram–Schmidt process tangent = normalize(tangent - dot(tangent, normal) * normal); vec3 bitangent = cross(tangent, normal); vec3 bumpMapNormal = texture(texture0, ex_TexCoord).xyz; //převod z vektoru barvy o rozsahu <0,1> do vektoru normály <-1,1> bumpMapNormal = 2.0 * bumpMapNormal - vec3(1.0, 1.0, 1.0); // Transformační matice TBN mat3 TBN = mat3(tangent, bitangent, normal); return normalize(TBN * bumpMapNormal); } void main(void){ vec3 N=calcNormal();
Zaměřte se mimojiné na čistotu svého kódu:
Kent Beck: Metoda, která má víc než 10 příkazů dělá pravděpodobně více věcí a je vhodné ji rozdělit.
Cay Horstmann: Přinese-li student ke zkoušce program s metodou delší než 35 příkazů, vyhodí jej, aniž by se jej na cokoli dalšího zeptal.