//Texture2D pos : register(t3); //Texture2D normal : register(t4); Texture1D rand : register(t8); Texture1D sphere : register(t9); float SSAOperPixel( int2 pixel) { float3 rnd = rand[(pixel.x+pixel.y)%rand.Length.x]; float3 nvec = normal[pixel].xyz; float3 tangent = normalize(rnd-nvec * dot(rnd, nvec)); float3 biTangent = cross(nvec,tangent); float3x3 tbn; // = float3x3( nvec, tangent, normal); tbn[0] =nvec; tbn[1] =tangent; tbn[2] =biTangent; float occlusion = 0.0f; for(int i=0;i