~ubuntu-branches/ubuntu/natty/mesa/natty-proposed

« back to all changes in this revision

Viewing changes to progs/glsl/noise2.c

  • Committer: Bazaar Package Importer
  • Author(s): Robert Hooker, Robert Hooker, Christopher James Halse Rogers
  • Date: 2010-09-14 08:55:40 UTC
  • mfrom: (1.2.28 upstream)
  • Revision ID: james.westby@ubuntu.com-20100914085540-m4fpl0hdjlfd4jgz
Tags: 7.9~git20100909-0ubuntu1
[ Robert Hooker ]
* New upstream git snapshot up to commit 94118fe2d4b1e5 (LP: #631413)
* New features include ATI HD5xxx series support in r600, and a vastly
  improved glsl compiler.
* Remove pre-generated .pc's, use the ones generated at build time
  instead.
* Remove all references to mesa-utils now that its no longer shipped
  with the mesa source.
* Disable the experimental ARB_fragment_shader option by default on
  i915, it exposes incomplete functionality that breaks KDE compositing
  among other things. It can be enabled via driconf still. (LP: #628930).

[ Christopher James Halse Rogers ]
* debian/patches/04_osmesa_version.diff:
  - Refresh for new upstream
* Bugs fixed in this release:
  - Fixes severe rendering corruption in Unity on radeon (LP: #628727,
    LP: #596292, LP: #599741, LP: #630315, LP: #613694, LP: #599741).
  - Also fixes rendering in gnome-shell (LP: #578619).
  - Flickering in OpenGL apps on radeon (LP: #626943, LP: #610541).
  - Provides preliminary support for new intel chips (LP: #601052).
* debian/rules:
  - Update configure flags to match upstream reshuffling.
  - Explicitly remove gallium DRI drivers that we don't want to ship.
* Update debian/gbp.conf for this Maverick-specific packaging
* libegl1-mesa-dri-x11,kms: There are no longer separate kms or x11 drivers
  for EGL, libegl1-mesa-drivers now contains a single driver that provides
  both backends.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * GLSL noise demo.
3
 
 *
4
 
 * Michal Krol
5
 
 * 20 February 2006
6
 
 *
7
 
 * Based on the original demo by:
8
 
 * Stefan Gustavson (stegu@itn.liu.se) 2004, 2005
9
 
 */
10
 
 
11
 
#ifdef WIN32
12
 
#include <windows.h>
13
 
#endif
14
 
 
15
 
#include <stdio.h>
16
 
#include <stdlib.h>
17
 
#include <GL/gl.h>
18
 
#include <GL/glut.h>
19
 
#include <GL/glext.h>
20
 
 
21
 
#ifdef WIN32
22
 
#define GETPROCADDRESS(F) wglGetProcAddress(F)
23
 
#else
24
 
#define GETPROCADDRESS(F) glutGetProcAddress(F)
25
 
#endif
26
 
 
27
 
static GLhandleARB fragShader;
28
 
static GLhandleARB vertShader;
29
 
static GLhandleARB program;
30
 
 
31
 
static GLint uTime;
32
 
 
33
 
static GLint t0 = 0;
34
 
static GLint frames = 0;
35
 
 
36
 
static GLfloat u_time = 0.0f;
37
 
 
38
 
static PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB = NULL;
39
 
static PFNGLSHADERSOURCEARBPROC glShaderSourceARB = NULL;
40
 
static PFNGLCOMPILESHADERARBPROC glCompileShaderARB = NULL;
41
 
static PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB = NULL;
42
 
static PFNGLATTACHOBJECTARBPROC glAttachObjectARB = NULL;
43
 
static PFNGLLINKPROGRAMARBPROC glLinkProgramARB = NULL;
44
 
static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL;
45
 
static PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB = NULL;
46
 
static PFNGLUNIFORM1FARBPROC glUniform1fARB = NULL;
47
 
 
48
 
static void Redisplay (void)
49
 
{
50
 
   GLint t;
51
 
 
52
 
        glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
53
 
 
54
 
        glUniform1fARB (uTime, 0.5f * u_time);
55
 
 
56
 
        glPushMatrix ();
57
 
        glutSolidSphere (2.0, 20, 10);
58
 
        glPopMatrix ();
59
 
 
60
 
        glutSwapBuffers();
61
 
   frames++;
62
 
 
63
 
   t = glutGet (GLUT_ELAPSED_TIME);
64
 
   if (t - t0 >= 5000) {
65
 
      GLfloat seconds = (GLfloat) (t - t0) / 1000.0f;
66
 
      GLfloat fps = frames / seconds;
67
 
      printf ("%d frames in %6.3f seconds = %6.3f FPS\n", frames, seconds, fps);
68
 
      fflush(stdout);
69
 
      t0 = t;
70
 
      frames = 0;
71
 
   }
72
 
}
73
 
 
74
 
static void Idle (void)
75
 
{
76
 
        u_time += 0.1f;
77
 
        glutPostRedisplay ();
78
 
}
79
 
 
80
 
static void Reshape (int width, int height)
81
 
{
82
 
        glViewport (0, 0, width, height);
83
 
        glMatrixMode (GL_PROJECTION);
84
 
        glLoadIdentity ();
85
 
        glFrustum (-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
86
 
        glMatrixMode (GL_MODELVIEW);
87
 
        glLoadIdentity ();
88
 
        glTranslatef (0.0f, 0.0f, -15.0f);
89
 
}
90
 
 
91
 
static void Key (unsigned char key, int x, int y)
92
 
{
93
 
        (void) x;
94
 
        (void) y;
95
 
 
96
 
        switch (key)
97
 
        {
98
 
        case 27:
99
 
                exit(0);
100
 
                break;
101
 
        }
102
 
        glutPostRedisplay ();
103
 
}
104
 
 
105
 
static void Init (void)
106
 
{
107
 
   static const char *fragShaderText =
108
 
      "uniform float time;\n"
109
 
      "varying vec3 position;\n"
110
 
      "void main () {\n"
111
 
      "   gl_FragColor = vec4 (vec3 (0.5 + 0.5 * noise1 (vec4 (position, time))), 1.0);\n"
112
 
      "}\n"
113
 
   ;
114
 
   static const char *vertShaderText =
115
 
      "varying vec3 position;\n"
116
 
      "void main () {\n"
117
 
      "   gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
118
 
      "   position = 4.0 * gl_Vertex.xyz;\n"
119
 
      "}\n"
120
 
   ;
121
 
 
122
 
        if (!glutExtensionSupported ("GL_ARB_fragment_shader"))
123
 
        {
124
 
                printf ("Sorry, this demo requires GL_ARB_fragment_shader\n");
125
 
                exit(1);
126
 
        }
127
 
        if (!glutExtensionSupported ("GL_ARB_shader_objects"))
128
 
        {
129
 
                printf ("Sorry, this demo requires GL_ARB_shader_objects\n");
130
 
                exit(1);
131
 
        }
132
 
        if (!glutExtensionSupported ("GL_ARB_shading_language_100"))
133
 
        {
134
 
                printf ("Sorry, this demo requires GL_ARB_shading_language_100\n");
135
 
                exit(1);
136
 
        }
137
 
        if (!glutExtensionSupported ("GL_ARB_vertex_shader"))
138
 
        {
139
 
                printf ("Sorry, this demo requires GL_ARB_vertex_shader\n");
140
 
                exit(1);
141
 
        }
142
 
 
143
 
        glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)
144
 
                GETPROCADDRESS("glCreateShaderObjectARB");
145
 
        glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)
146
 
                GETPROCADDRESS("glShaderSourceARB");
147
 
        glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)
148
 
                GETPROCADDRESS("glCompileShaderARB");
149
 
        glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)
150
 
                GETPROCADDRESS("glCreateProgramObjectARB");
151
 
        glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)
152
 
                GETPROCADDRESS("glAttachObjectARB");
153
 
        glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)
154
 
                GETPROCADDRESS ("glLinkProgramARB");
155
 
        glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)
156
 
                GETPROCADDRESS("glUseProgramObjectARB");          
157
 
 
158
 
        glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)
159
 
                GETPROCADDRESS("glGetUniformLocationARB");
160
 
        glUniform1fARB = (PFNGLUNIFORM1FARBPROC)
161
 
                GETPROCADDRESS("glUniform1fARB");
162
 
 
163
 
        fragShader = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB);
164
 
        glShaderSourceARB (fragShader, 1, &fragShaderText, NULL);
165
 
        glCompileShaderARB (fragShader);
166
 
 
167
 
        vertShader = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB);
168
 
        glShaderSourceARB (vertShader, 1, &vertShaderText, NULL);
169
 
        glCompileShaderARB (vertShader);
170
 
 
171
 
        program = glCreateProgramObjectARB ();
172
 
        glAttachObjectARB (program, fragShader);
173
 
        glAttachObjectARB (program, vertShader);
174
 
        glLinkProgramARB (program);
175
 
        glUseProgramObjectARB (program);
176
 
 
177
 
        uTime = glGetUniformLocationARB (program, "time");
178
 
 
179
 
        glClearColor (0.0f, 0.1f, 0.3f, 1.0f);
180
 
        glEnable (GL_CULL_FACE);
181
 
        glEnable (GL_DEPTH_TEST);
182
 
 
183
 
        printf ("GL_RENDERER = %s\n", (const char *) glGetString (GL_RENDERER));
184
 
}
185
 
 
186
 
int main (int argc, char *argv[])
187
 
{
188
 
        glutInit (&argc, argv);
189
 
        glutInitWindowSize (200, 200);
190
 
        glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
191
 
        glutCreateWindow (argv[0]);
192
 
        glutReshapeFunc (Reshape);
193
 
        glutKeyboardFunc (Key);
194
 
        glutDisplayFunc (Redisplay);
195
 
        glutIdleFunc (Idle);
196
 
        Init ();
197
 
        glutMainLoop ();
198
 
        return 0;
199
 
}
200