Ja, du kannst Werte als uniforms übergeben. Ob etwas auf der Sichtlinie liegt, kannst du z.B. erkennen, indem du eine Kollisionsabfrage zwischen dem Sichtvektor und dem zu betrachtenden Objekt machst. Das ist u.U. aber etwas aufwendig, wenn du viele Objekte auf diese Art betrachten willst, vor allem auf Android.
Alternativ musst du dir irgendwas anderes ausdenken. Z.B. könntest du dir ein Gitter mit einer bestimmten Auflösung erstellen. Quasi eine vereinfachte, in der Auflösung reduzierte Bitmap in der, wenn man die Szene von oben betrachtet, die Positionen von Sichtblockern als bestimmte Werte gespeichert sind. Ich mache sowas in der Art eigentlich immer, weil es viele Dinge (unter anderem auch die Wegfindung) sehr erleichtert.