シェーダーでカメラ位置を利用するならビルトインシェーダー関数から引っ張って来たほうが良いんでは?
C#側のカメラとシェーダー側カメラは座標が同じではないかもしれん