This file is indexed.

/usr/share/pyshared/glitch/shader.py is in python-glitch 0.6-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"Shader support."

from __future__ import with_statement

import OpenGL.GL as gl
import OpenGL.GL.shaders as shaders

import glitch
from glitch.multicontext import MultiContext

class Shader(glitch.Node, MultiContext):
    "An OpenGL vertex and fragment shader."

    _context_key = 'shader'

    vertex = """
        varying vec4 vertex_color;
        void main() {
            gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
            vertex_color = gl_Color;
        }
        """

    fragment = """
        varying vec4 vertex_color;
        void main() {
            gl_FragColor = vertex_color;
        }
        """

    def __init__(self, vertex=None, fragment=None, **kw):
        if vertex:
            self.vertex = vertex
        if fragment:
            self.fragment = fragment
        glitch.Node.__init__(self, **kw)
        MultiContext.__init__(self)

    def compile(self, ctx):
        "Compile this shader."

        try:
            return shaders.compileProgram(
                shaders.compileShader(self.vertex, gl.GL_VERTEX_SHADER),
                shaders.compileShader(self.fragment, gl.GL_FRAGMENT_SHADER))
        except RuntimeError, e:
            print e
            return None

    def set_uniforms(self, ctx, shader):
        "Set any uniform variables the shader uses."

    def _context_create(self, ctx):
        return self.compile(ctx)

    def _context_update(self, ctx, _old_shader):
        return self.compile(ctx)

    def render(self, ctx):
        shader = self.context_get(ctx)

        if shader is not None:
            with shader:
                self.set_uniforms(ctx, shader)
                glitch.Node.render(self, ctx)