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;
- i = 0;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[0],tc).r;
- sumw += camw[i];
- }
- i = 1;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[1],tc).r;
- sumw += camw[i];
- }
- i = 2;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[2],tc).r;
- sumw += camw[i];
- }
- i = 3;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[3],tc).r;
- sumw += camw[i];
- }
- i = 4;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[4],tc).r;
- sumw += camw[i];
- }
- i = 5;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[5],tc).r;
- sumw += camw[i];
- }
- i = 6;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[6],tc).r;
- sumw += camw[i];
- }
- i = 7;
- camw[i]=0.0;
- if (i<numCameras)
- {
- camw[i] = texture2DProj(weightSampler[7],tc).r;
- sumw += camw[i];
- }
- i = 0;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[0],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 1;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[1],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 2;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[2],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 3;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[3],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 4;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[4],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 5;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[5],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 6;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[6],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- i = 7;
- if (i<numCameras && sumw>0.0)
- {
- vec4 texCoord = gl_TextureMatrix[i] * p;
- vec4 texColour = texture2DProj(texSampler[7],texCoord);
- float w = camw[i] / sumw;
- if (w>1.0) w = 1.0;
- colour += texColour.rgb*w;
- }
- if (sumw==0.0) discard;
- //colour = colour*0.5;
- gl_FragColor = vec4(colour, 0.5);
- //gl_FragData[0] = vec4(colour, 0.5);
- //gl_FragData[1] = vec4(colour, 0.5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement