Advertisement
Guest User

Shader

a guest
Jul 18th, 2012
687
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.27 KB | None | 0 0
  1. #version 120
  2.  
  3. #define MAX_NUM_CAMS 8
  4. varying vec3 location;
  5. varying vec3 location_obj;
  6. uniform mat4 viewMat;
  7. uniform int numCameras;
  8. uniform sampler2D texSampler[MAX_NUM_CAMS];
  9. uniform sampler2D weightSampler[MAX_NUM_CAMS];
  10.                                                                                
  11. void main()                                                                    
  12. {                                                                              
  13.     int i;
  14.     float sumw = 0.0;
  15.     float camw[MAX_NUM_CAMS];
  16.     vec3 colour = vec3(0,0,0);
  17.     vec4 p = vec4(location, 1.0);
  18.     vec4 p_obj = vec4(location_obj, 1.0);
  19.     vec4 tc = viewMat * p_obj;
  20.    
  21.     camw[0] = texture2DProj(weightSampler[0],tc).r;
  22.     camw[1] = texture2DProj(weightSampler[1],tc).r;
  23.     camw[2] = texture2DProj(weightSampler[2],tc).r;
  24.     camw[3] = texture2DProj(weightSampler[3],tc).r;
  25.     camw[4] = texture2DProj(weightSampler[4],tc).r;
  26.     camw[5] = texture2DProj(weightSampler[5],tc).r;
  27.     camw[6] = texture2DProj(weightSampler[6],tc).r;
  28.     camw[7] = texture2DProj(weightSampler[7],tc).r;
  29.    
  30.     vec4 texCoord0 = gl_TextureMatrix[0] * p;                          
  31.     vec4 texColour0 = texture2DProj(texSampler[0],texCoord0);  
  32.     vec4 texCoord1 = gl_TextureMatrix[1] * p;                          
  33.     vec4 texColour1 = texture2DProj(texSampler[1],texCoord1);  
  34.     vec4 texCoord2 = gl_TextureMatrix[2] * p;                          
  35.     vec4 texColour2 = texture2DProj(texSampler[2],texCoord2);  
  36.     vec4 texCoord3 = gl_TextureMatrix[3] * p;                          
  37.     vec4 texColour3 = texture2DProj(texSampler[3],texCoord3);  
  38.     vec4 texCoord4 = gl_TextureMatrix[4] * p;                      
  39.     vec4 texColour4 = texture2DProj(texSampler[4],texCoord4);
  40.     vec4 texCoord5 = gl_TextureMatrix[5] * p;                          
  41.     vec4 texColour5 = texture2DProj(texSampler[5],texCoord5);
  42.     vec4 texCoord6 = gl_TextureMatrix[6] * p;                          
  43.     vec4 texColour6 = texture2DProj(texSampler[6],texCoord6);
  44.     vec4 texCoord7 = gl_TextureMatrix[7] * p;                          
  45.     vec4 texColour7 = texture2DProj(texSampler[7],texCoord7);
  46.    
  47.    
  48.     i = 0;
  49.  
  50.     if (i<numCameras)
  51.     {
  52.         sumw += camw[i];
  53.     }
  54.     i = 1;
  55.     if (i<numCameras)
  56.     {
  57.         sumw += camw[i];
  58.     }
  59.     i = 2;
  60.     if (i<numCameras)
  61.     {
  62.         sumw += camw[i];
  63.     }
  64.     i = 3;
  65.     if (i<numCameras)
  66.     {
  67.         sumw += camw[i];
  68.     }
  69.     i = 4;
  70.     if (i<numCameras)
  71.     {
  72.         sumw += camw[i];
  73.     }
  74.     i = 5;
  75.  
  76.     if (i<numCameras)
  77.     {
  78.         sumw += camw[i];
  79.     }
  80.     i = 6;
  81.     if (i<numCameras)
  82.     {
  83.         sumw += camw[i];
  84.     }
  85.     i = 7;
  86.     if (i<numCameras)
  87.     {
  88.         sumw += camw[i];
  89.     }
  90.  
  91.  
  92.    
  93.     if (sumw<=0.0)
  94.     {
  95.         discard;
  96.     }
  97.     else
  98.     {  
  99.         i = 0;                                                                         
  100.         if (i<numCameras && sumw>0.0)                                          
  101.         {                                                                      
  102.             float w = camw[i] / sumw;                                          
  103.             if (w>1.0) w = 1.0;                                                
  104.             colour += texColour0.rgb*w;                                        
  105.         }                                                                      
  106.         i = 1;                                                                         
  107.         if (i<numCameras && sumw>0.0)                                          
  108.         {                                                                                      
  109.             float w = camw[i] / sumw;                                          
  110.             if (w>1.0) w = 1.0;                                                
  111.             colour += texColour1.rgb*w;                                        
  112.         }                                                                      
  113.         i = 2;                                                                         
  114.         if (i<numCameras && sumw>0.0)                                          
  115.         {                                                                                      
  116.             float w = camw[i] / sumw;                                          
  117.             if (w>1.0) w = 1.0;                                                
  118.             colour += texColour2.rgb*w;                                        
  119.         }                                                                      
  120.         i = 3;                                                                         
  121.         if (i<numCameras && sumw>0.0)                                          
  122.         {                                                                                      
  123.             float w = camw[i] / sumw;                                          
  124.             if (w>1.0) w = 1.0;                                                
  125.             colour += texColour3.rgb*w;                                        
  126.         }                                                                      
  127.         i = 4;                                                                         
  128.         if (i<numCameras && sumw>0.0)                                          
  129.         {                                                                                      
  130.             float w = camw[i] / sumw;                                          
  131.             if (w>1.0) w = 1.0;                                                
  132.             colour += texColour4.rgb*w;                                        
  133.         }                                                                      
  134.         i = 5;                                                                         
  135.         if (i<numCameras && sumw>0.0)                                          
  136.         {                                                                                      
  137.             float w = camw[i] / sumw;                                          
  138.             if (w>1.0) w = 1.0;                                                
  139.             colour += texColour5.rgb*w;                                        
  140.         }                                                                      
  141.         i = 6;                                                                         
  142.         if (i<numCameras && sumw>0.0)                                          
  143.         {                                                                                      
  144.             float w = camw[i] / sumw;                                          
  145.             if (w>1.0) w = 1.0;                                                
  146.             colour += texColour6.rgb*w;                                        
  147.         }                                                                      
  148.         i = 7;                                                                         
  149.         if (i<numCameras && sumw>0.0)                                          
  150.         {                                                                                      
  151.             float w = camw[i] / sumw;                                          
  152.             if (w>1.0) w = 1.0;                                                
  153.             colour += texColour7.rgb*w;                                        
  154.         }      
  155.        
  156.                                            
  157.         gl_FragColor = vec4(colour, 1);
  158.     }      
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement