Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 120
- #define MAX_NUM_CAMS 8
- varying vec3 location;
- varying vec3 location_obj;
- uniform mat4 viewMat;
- uniform int numCameras;
- uniform sampler2D texSampler[MAX_NUM_CAMS];
- uniform sampler2D weightSampler[MAX_NUM_CAMS];
- void main()
- {
- int i;
- float sumw = 0.0;
- float camw[MAX_NUM_CAMS];
- vec3 colour = vec3(0,0,0);
- vec4 p = vec4(location, 1.0);
- vec4 p_obj = vec4(location_obj, 1.0);
- vec4 tc = viewMat * p_obj;
- camw[0] = texture2DProj(weightSampler[0],tc).r;
- camw[1] = texture2DProj(weightSampler[1],tc).r;
- camw[2] = texture2DProj(weightSampler[2],tc).r;
- camw[3] = texture2DProj(weightSampler[3],tc).r;
- camw[4] = texture2DProj(weightSampler[4],tc).r;
- camw[5] = texture2DProj(weightSampler[5],tc).r;
- camw[6] = texture2DProj(weightSampler[6],tc).r;
- camw[7] = texture2DProj(weightSampler[7],tc).r;
- vec4 texCoord0 = gl_TextureMatrix[0] * p;
- vec4 texColour0 = texture2DProj(texSampler[0],texCoord0);
- vec4 texCoord1 = gl_TextureMatrix[1] * p;
- vec4 texColour1 = texture2DProj(texSampler[1],texCoord1);
- vec4 texCoord2 = gl_TextureMatrix[2] * p;
- vec4 texColour2 = texture2DProj(texSampler[2],texCoord2);
- vec4 texCoord3 = gl_TextureMatrix[3] * p;
- vec4 texColour3 = texture2DProj(texSampler[3],texCoord3);
- vec4 texCoord4 = gl_TextureMatrix[4] * p;
- vec4 texColour4 = texture2DProj(texSampler[4],texCoord4);
- vec4 texCoord5 = gl_TextureMatrix[5] * p;
- vec4 texColour5 = texture2DProj(texSampler[5],texCoord5);
- vec4 texCoord6 = gl_TextureMatrix[6] * p;
- vec4 texColour6 = texture2DProj(texSampler[6],texCoord6);
- vec4 texCoord7 = gl_TextureMatrix[7] * p;
- vec4 texColour7 = texture2DProj(texSampler[7],texCoord7);
- i = 0;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 1;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 2;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 3;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 4;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 5;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 6;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- i = 7;
- if (i<numCameras)
- {
- sumw += camw[i];
- }
- if (sumw<=0.0)
- {
- discard;
- }
- else
- {
- i = 0;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour0.rgb*w;
- }
- i = 1;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour1.rgb*w;
- }
- i = 2;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour2.rgb*w;
- }
- i = 3;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour3.rgb*w;
- }
- i = 4;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour4.rgb*w;
- }
- i = 5;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour5.rgb*w;
- }
- i = 6;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour6.rgb*w;
- }
- i = 7;
- if (i<numCameras && sumw>0.0)
- {
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour7.rgb*w;
- }
- gl_FragColor = vec4(colour, 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement