How can I detect what face of a part that the player can see?

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!

I’m trying to reduce the amount of surfaceguis that are constantly updating viewportframes by making it stop updating (aka reducing it to 0-1hz if yk what i mean) whenever said surfacegui’s cant be seen by the player or the view for it is obstructed.

  1. What is the issue? Include screenshots / videos if possible!

So im making a reflection system using viewportframes:

then I realized that since all parts that have a reflection above 0.2, will have all sides constantly updating their reflections, basically with 3+ parts there are 18+ surfaceguis each with viewportframes that have a heck ton of parts always rendering. Now , the viewportframes and number of parts arent really the issue , but the issue is that there are too many surfaces being rendered with reflections that arent seen by the player, so its straight up wasting a certain amount cpu/memory usage and plummeting fps to 15.

  1. What solutions have you tried so far? Did you look for solutions on the Developer Hub?

I tried using attachments and magnitude, but realized that isnt very useful.

Maybe you can use https://developer.roblox.com/en-us/api-reference/function/Camera/ViewportPointToRay