Newer
Older
Import / research / rendering / notes.txt


shaders
  - #extension to enable extensions such as shadow2DEXT -> percentage closest sampling kind of thing
  - #defines to enable/disable features and to redefine things
  - structs to pass in parameter blocks such as for params to  lighting params, lambert terms, fresnel terms, 
    specular, environment mapping etc.
  - bone weights to array of vecs. Can have arrays in shaders
  - varying in a common shader code shared between vertex and pixel shader, eg: common.gls
      - then always variables match up, such as for   uv0, tangent, normal and binormal, color, worldPosition, and ???
  - t,b,n are originally input parameters with each vertex and are transformed ??? need to check ??? by world matrix
  - t,b,n are interpolated by pixel shader, and each pixel the vec3s are put together to create a mat3
  - the mat3 is called the tangent matrix
         - uv0 is looked up in the normal map for the object, then xyz values * 2.0 and -1.0 to make them go from -1 to 1 
         - this texture space normal is then transformed by the tangent matrix ( normal * tagentMatrix )
         - the resulting normal is normalized and that is the final result of the normal calculations


  - bone weights
         - some fixed number of bones - depends on openGLES version
         - eg: ES2, might have 32 matrixes, or for ES3 might have 128
     - each vertex then has some fixed number of bone weights and indexes
         - eg: might have 2 bones
         - a vertex then needs to have a weight and an index for 2 bones, so for example this could go in a vec4
             - eg: vec4 boneData;  indexA = int(boneData.x);  weightA = boneData.y;
                                   indexB = int(boneData.z);  weightB = boneData.z;
         - then the index is used to look up a matrix in the array of bones (which might actually be and array of vec3)
             - then the vertex is multiplied by that matrix and also multiplied by the weight
             - repeated for the 2nd index and weight and added together
             - the result is the vertex position