Пример #1
0
 def test_setting_shaders(self):
     program = Program("A", "B")
     assert program.shaders[0] == "A"
     assert program.shaders[1] == "B"
     
     program.set_shaders('C', 'D')
     assert program.shaders[0] == "C"
     assert program.shaders[1] == "D"
Пример #2
0
    def test_setting_shaders(self):
        program = Program("A", "B")
        assert program.shaders[0] == "A"
        assert program.shaders[1] == "B"

        program.set_shaders('C', 'D')
        assert program.shaders[0] == "C"
        assert program.shaders[1] == "D"
Пример #3
0
    def test_setting_shaders(self):
        from vispy.gloo.program import VertexShader, FragmentShader
        program = Program("A", "B")
        assert isinstance(program.shaders[0], VertexShader)
        assert program.shaders[0].code == 'A'
        assert isinstance(program.shaders[1], FragmentShader)
        assert program.shaders[1].code == 'B'

        program.set_shaders('C', 'D')
        assert program.shaders[0].code == "C"
        assert program.shaders[1].code == "D"
Пример #4
0
 def test_attributes(self):
     program = Program("attribute float A; attribute vec4 B;", "foo")
     assert ('attribute', 'float', 'A') in program.variables
     assert ('attribute', 'vec4', 'B') in program.variables
     assert len(program.variables) == 2
     
     from vispy.gloo import VertexBuffer
     vbo = VertexBuffer()
     
     # Set existing uniforms
     program['A'] = vbo
     assert program['A'] == vbo
     assert 'A' in program._user_variables
     assert program._user_variables['A'] is vbo
     
     # Set data - update existing vbp
     program['A'] = np.zeros((10,), np.float32)
     assert program._user_variables['A'] is vbo
     
     # Set data - create new vbo
     program['B'] = np.zeros((10, 4), np.float32)
     assert isinstance(program._user_variables['B'], VertexBuffer)
     
     # Set non-exisint uniforms
     program['C'] = vbo
     assert program['C'] == vbo
     assert 'C' not in program._user_variables
     assert 'C' in program._pending_variables
     
     # C should be taken up when code comes along that mentions it
     program.set_shaders("attribute float A; attribute vec2 C;", "foo")
     assert program['C'] == vbo
     assert 'C' in program._user_variables
     assert 'C' not in program._pending_variables
     
     # Set wrong values
     self.assertRaises(ValueError, program.__setitem__, 'A', 'asddas')
     
     # Set wrong values beforehand
     program['D'] = ""
     self.assertRaises(ValueError, program.set_shaders, 
                       'attribute vec3 D;', '')
     
     # Set to one value per vertex
     program.set_shaders("attribute float A; attribute vec2 C;", "foo")
     program['A'] = 1.0
     assert program['A'] == 1.0
     program['C'] = 1.0, 2.0 
     assert all(program['C'] == np.array((1.0, 2.0), np.float32))
     #
     self.assertRaises(ValueError, program.__setitem__, 'A', (1.0, 2.0))
     self.assertRaises(ValueError, program.__setitem__, 'C', 1.0)
     self.assertRaises(ValueError, program.bind, 'notavertexbuffer')
Пример #5
0
    def test_attributes(self):
        program = Program("attribute float A; attribute vec4 B;", "foo")
        assert ('attribute', 'float', 'A') in program.variables
        assert ('attribute', 'vec4', 'B') in program.variables
        assert len(program.variables) == 2

        from vispy.gloo import VertexBuffer
        vbo = VertexBuffer()

        # Set existing uniforms
        program['A'] = vbo
        assert program['A'] == vbo
        assert 'A' in program._user_variables
        assert program._user_variables['A'] is vbo

        # Set data - update existing vbp
        program['A'] = np.zeros((10, ), np.float32)
        assert program._user_variables['A'] is vbo

        # Set data - create new vbo
        program['B'] = np.zeros((10, 4), np.float32)
        assert isinstance(program._user_variables['B'], VertexBuffer)

        # Set non-exisint uniforms
        program['C'] = vbo
        assert program['C'] == vbo
        assert 'C' not in program._user_variables
        assert 'C' in program._pending_variables

        # C should be taken up when code comes along that mentions it
        program.set_shaders("attribute float A; attribute vec2 C;", "foo")
        assert program['C'] == vbo
        assert 'C' in program._user_variables
        assert 'C' not in program._pending_variables

        # Set wrong values
        self.assertRaises(ValueError, program.__setitem__, 'A', 'asddas')

        # Set wrong values beforehand
        program['D'] = ""
        self.assertRaises(ValueError, program.set_shaders, 'attribute vec3 D;',
                          '')

        # Set to one value per vertex
        program.set_shaders("attribute float A; attribute vec2 C;", "foo")
        program['A'] = 1.0
        assert program['A'] == 1.0
        program['C'] = 1.0, 2.0
        assert all(program['C'] == np.array((1.0, 2.0), np.float32))
        #
        self.assertRaises(ValueError, program.__setitem__, 'A', (1.0, 2.0))
        self.assertRaises(ValueError, program.__setitem__, 'C', 1.0)
        self.assertRaises(ValueError, program.bind, 'notavertexbuffer')
Пример #6
0
 def test_uniform(self):
     
     # Text array unoforms
     program = Program("uniform float A[10];", "foo")
     assert ('uniform', 'float', 'A[0]') in program.variables
     assert len(program.variables) == 10
     
     # Init program
     program = Program("uniform float A;", 
                       "uniform float A; uniform vec4 B;")
     assert ('uniform', 'float', 'A') in program.variables
     assert ('uniform', 'vec4', 'B') in program.variables
     assert len(program.variables) == 2
     
     # Set existing uniforms
     program['A'] = 3.0
     assert isinstance(program['A'], np.ndarray)
     assert program['A'] == 3.0
     assert 'A' in program._user_variables
     #
     program['B'] = 1.0, 2.0, 3.0, 4.0
     assert isinstance(program['B'], np.ndarray)
     assert all(program['B'] == np.array((1.0, 2.0, 3.0, 4.0), np.float32))
     assert 'B' in program._user_variables
     
     # Set non-exisint uniforms
     program['C'] = 1.0, 2.0
     assert program['C'] == (1.0, 2.0)
     assert 'C' not in program._user_variables
     assert 'C' in program._pending_variables
     
     # Set samplers
     program.set_shaders("uniform sampler2D T2; uniform sampler3D T3;", "f")
     program['T2'] = np.zeros((10, 10), np.float32)
     program['T3'] = np.zeros((10, 10, 10), np.float32)
     assert isinstance(program['T2'], gloo.Texture2D)
     assert isinstance(program['T3'], gloo.Texture3D)
     
     # Set samplers with textures
     tex = gloo.Texture2D((10, 10))
     program['T2'] = tex
     assert program['T2'] is tex
     program['T2'] = np.zeros((10, 10), np.float32)  # Update texture
     assert program['T2'] is tex
     
     # C should be taken up when code comes along that mentions it
     program.set_shaders("uniform float A; uniform vec2 C;", 
                         "uniform float A; uniform vec4 B;")
     assert isinstance(program['C'], np.ndarray)
     assert all(program['C'] == np.array((1.0, 2.0), np.float32))
     assert 'C' in program._user_variables
     assert 'C' not in program._pending_variables
     
     # Set wrong values
     self.assertRaises(ValueError, program.__setitem__, 'A', (1.0, 2.0))
     self.assertRaises(ValueError, program.__setitem__, 'B', (1.0, 2.0))
     self.assertRaises(ValueError, program.__setitem__, 'C', 1.0)
     
     # Set wrong values beforehand
     program['D'] = 1.0, 2.0
     self.assertRaises(ValueError, program.set_shaders, 
                       '', 'uniform vec3 D;')
Пример #7
0
    def test_uniform(self):

        # Text array unoforms
        program = Program("uniform float A[10];", "foo")
        assert ('uniform', 'float', 'A[0]') in program.variables
        assert len(program.variables) == 10

        # Init program
        program = Program("uniform float A;",
                          "uniform float A; uniform vec4 B;")
        assert ('uniform', 'float', 'A') in program.variables
        assert ('uniform', 'vec4', 'B') in program.variables
        assert len(program.variables) == 2

        # Set existing uniforms
        program['A'] = 3.0
        assert isinstance(program['A'], np.ndarray)
        assert program['A'] == 3.0
        assert 'A' in program._user_variables
        #
        program['B'] = 1.0, 2.0, 3.0, 4.0
        assert isinstance(program['B'], np.ndarray)
        assert all(program['B'] == np.array((1.0, 2.0, 3.0, 4.0), np.float32))
        assert 'B' in program._user_variables

        # Set non-exisint uniforms
        program['C'] = 1.0, 2.0
        assert program['C'] == (1.0, 2.0)
        assert 'C' not in program._user_variables
        assert 'C' in program._pending_variables

        # Set samplers
        program.set_shaders("uniform sampler2D T2; uniform sampler3D T3;", "f")
        program['T2'] = np.zeros((10, 10), np.float32)
        program['T3'] = np.zeros((10, 10, 10), np.float32)
        assert isinstance(program['T2'], gloo.Texture2D)
        assert isinstance(program['T3'], gloo.Texture3D)

        # Set samplers with textures
        tex = gloo.Texture2D((10, 10))
        program['T2'] = tex
        assert program['T2'] is tex
        program['T2'] = np.zeros((10, 10), np.float32)  # Update texture
        assert program['T2'] is tex

        # C should be taken up when code comes along that mentions it
        program.set_shaders("uniform float A; uniform vec2 C;",
                            "uniform float A; uniform vec4 B;")
        assert isinstance(program['C'], np.ndarray)
        assert all(program['C'] == np.array((1.0, 2.0), np.float32))
        assert 'C' in program._user_variables
        assert 'C' not in program._pending_variables

        # Set wrong values
        self.assertRaises(ValueError, program.__setitem__, 'A', (1.0, 2.0))
        self.assertRaises(ValueError, program.__setitem__, 'B', (1.0, 2.0))
        self.assertRaises(ValueError, program.__setitem__, 'C', 1.0)

        # Set wrong values beforehand
        program['D'] = 1.0, 2.0
        self.assertRaises(ValueError, program.set_shaders, '',
                          'uniform vec3 D;')