Repository: ManimCommunity/manim

Issue:
Debug Reveals Missing .glsl files in Opengl
## Description of bug / unexpected behavior
<!-- Add a clear and concise description of the problem you encountered. -->
When you run debug on any opengl program it shows that .glsl files the code tries to access does not exist. For instance in #2155. vert.glsl, geom.glsl, and frag.glsl are said not to exist.The code trying to access these files is at: https://github.com/ManimCommunity/manim/blob/main/manim/renderer/shader_wrapper.py.

## Expected behavior
<!-- Add a clear and concise description of what you expected to happen. -->


## How to reproduce the issue
<!-- Provide a piece of code illustrating the undesired behavior. -->

<details><summary>Code for reproducing the problem</summary>

```py
Paste your code here.
```

</details>


## Additional media files
<!-- Paste in the files manim produced on rendering the code above. -->

<details><summary>Images/GIFs</summary>

<!-- PASTE MEDIA HERE -->

</details>


## Logs
<details><summary>Terminal output</summary>
<!-- Add "-v DEBUG" when calling manim to generate more detailed logs -->

```
PASTE HERE OR PROVIDE LINK TO https://pastebin.com/ OR SIMILAR
```

<!-- Insert screenshots here (only when absolutely necessary, we prefer copy/pasted output!) -->

</details>


## System specifications

<details><summary>System Details</summary>

- OS (with version, e.g Windows 10 v2004 or macOS 10.15 (Catalina)):
- RAM:
- Python version (`python/py/python3 --version`):
- Installed modules (provide output from `pip list`):
```
PASTE HERE
```
</details>

<details><summary>LaTeX details</summary>

+ LaTeX distribution (e.g. TeX Live 2020):
+ Installed LaTeX packages:
<!-- output of `tlmgr list --only-installed` for TeX Live or a screenshot of the Packages page for MikTeX -->
</details>

<details><summary>FFMPEG</summary>

Output of `ffmpeg -version`:

```
PASTE HERE
```
</details>

## Additional comments
<!-- Add further context that you think might be relevant for this issue here. -->



Discussion:
It seems to be related to OpenGLCamera as it has no shader folder set, I might be wrong but from my understanding the camera shouldn't actually be rendered like other objects, we just get the view matrix from it right? If that is the case I assume we need an exception for the camera to not try and load any shaders for it. 

This debug issue will also happen for cases like the below:

```py
class SurfaceTest(Scene):
    def construct(self):
        s = OpenGLSurface()
        self.add(s)
        self.interactive_embed()
```

Reason is that it uses a shader folder that doesn't have a geometry shader, as geo shaders are not always needed maybe we shouldn't log if they are missing?

Resolving patch:
diff --git a/manim/mobject/opengl_mobject.py b/manim/mobject/opengl_mobject.py
--- a/manim/mobject/opengl_mobject.py
+++ b/manim/mobject/opengl_mobject.py
@@ -75,6 +75,7 @@ def __init__(
         # Event listener
         listen_to_events=False,
         model_matrix=None,
+        should_render=True,
         **kwargs,
     ):
         # getattr in case data/uniforms are already defined in parent classes.
@@ -121,6 +122,8 @@ def __init__(
         if self.depth_test:
             self.apply_depth_test()
 
+        self.should_render = should_render
+
     @classmethod
     def __init_subclass__(cls, **kwargs):
         super().__init_subclass__(**kwargs)
diff --git a/manim/renderer/opengl_renderer.py b/manim/renderer/opengl_renderer.py
--- a/manim/renderer/opengl_renderer.py
+++ b/manim/renderer/opengl_renderer.py
@@ -87,7 +87,7 @@ def __init__(
         self.light_source = OpenGLPoint(self.light_source_position)
 
         self.default_model_matrix = model_matrix
-        super().__init__(model_matrix=model_matrix, **kwargs)
+        super().__init__(model_matrix=model_matrix, should_render=False, **kwargs)
 
         if euler_angles is None:
             euler_angles = [0, 0, 0]
@@ -429,6 +429,8 @@ def update_frame(self, scene):
         self.refresh_perspective_uniforms(scene.camera)
 
         for mobject in scene.mobjects:
+            if not mobject.should_render:
+                continue
             self.render_mobject(mobject)
 
         for obj in scene.meshes:


Test patch: