Browse Source

Added shaders examples resources

raysan5 10 years ago
parent
commit
9a578c5962

+ 68 - 2
examples/makefile

@@ -154,9 +154,14 @@ EXAMPLES = \
     core_input_keys \
     core_input_mouse \
     core_mouse_wheel \
+    core_input_gamepad \
     core_random_values \
     core_color_select \
+    core_drop_files \
     core_3d_mode \
+    core_3d_picking \
+    core_3d_camera_free \
+    core_3d_camera_first_person \
     shapes_logo_raylib \
     shapes_basic_shapes \
     shapes_colors_palette \
@@ -165,16 +170,23 @@ EXAMPLES = \
     textures_image_loading \
     textures_rectangle \
     textures_srcrec_dstrec \
+    textures_to_image \
+    textures_raw_data \
+    textures_formats_loading \
+    textures_particles_trail_blending \
     text_sprite_fonts \
     text_rbmf_fonts \
     text_format_text \
     text_font_select \
     models_geometric_shapes \
-    models_planes \
     models_billboard \
     models_obj_loading \
     models_heightmap \
     models_cubicmap \
+    shaders_model_shader \
+    shaders_shapes_textures \
+    shaders_custom_uniform \
+    shaders_postprocessing \
     audio_sound_loading \
     audio_music_stream \
     fix_dylib \
@@ -201,16 +213,26 @@ core_input_keys: core_input_keys.c
 core_input_mouse: core_input_mouse.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 
-ifeq ($(PLATFORM),PLATFORM_DESKTOP)
 # compile [core] example - gamepad input
 core_input_gamepad: core_input_gamepad.c
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+else
+	@echo core_input_gamepad: Only supported on desktop platform
 endif
 
 # compile [core] example - mouse wheel
 core_mouse_wheel: core_mouse_wheel.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 
+# compile [core] example - drop files
+core_drop_files: core_drop_files.c
+ifeq ($(PLATFORM),PLATFORM_DESKTOP)
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+else
+	@echo core_drop_files: Only supported on desktop platform
+endif
+    
 # compile [core] example - generate random values
 core_random_values: core_random_values.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
@@ -223,6 +245,18 @@ core_color_select: core_color_select.c
 core_3d_mode: core_3d_mode.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 
+# compile [core] example - 3d picking
+core_3d_picking: core_3d_picking.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
+# compile [core] example - 3d camera free
+core_3d_camera_free: core_3d_camera_free.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+
+# compile [core] example - 3d camera first person
+core_3d_camera_first_person: core_3d_camera_first_person.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)    
+    
 # compile [shapes] example - raylib logo (with basic shapes)
 shapes_logo_raylib: shapes_logo_raylib.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
@@ -255,6 +289,22 @@ textures_rectangle: textures_rectangle.c
 textures_srcrec_dstrec: textures_srcrec_dstrec.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 
+# compile [textures] example - texture to image
+textures_to_image: textures_to_image.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
+# compile [textures] example - texture raw data
+textures_raw_data: textures_raw_data.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
+# compile [textures] example - texture formats loading
+textures_formats_loading: textures_formats_loading.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
+# compile [textures] example - texture particles trail blending
+textures_particles_trail_blending: textures_particles_trail_blending.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
 # compile [text] example - sprite fonts loading
 text_sprite_fonts: text_sprite_fonts.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
@@ -295,6 +345,22 @@ models_heightmap: models_heightmap.c
 models_cubicmap: models_cubicmap.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
 
+# compile [shaders] example - model shader
+shaders_model_shader: shaders_model_shader.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
+# compile [shaders] example - shapes texture shader
+shaders_shapes_textures: shaders_shapes_textures.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
+# compile [shaders] example - custom uniform in shader
+shaders_custom_uniform: shaders_custom_uniform.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
+# compile [shaders] example - postprocessing shader
+shaders_postprocessing: shaders_postprocessing.c
+	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
+    
 # compile [audio] example - sound loading and playing (WAV and OGG)
 audio_sound_loading: audio_sound_loading.c
 	$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)

+ 7 - 7
examples/resources/shaders/base.vs

@@ -1,19 +1,19 @@
-#version 110
+#version 330
 
-attribute vec3 vertexPosition;
-attribute vec2 vertexTexCoord;
-attribute vec4 vertexColor;
+in vec3 vertexPosition;
+in vec2 vertexTexCoord;
+in vec3 vertexNormal;
+
+out vec2 fragTexCoord;
 
 uniform mat4 projectionMatrix;
 uniform mat4 modelviewMatrix;
 
-varying vec2 fragTexCoord;
-varying vec4 fragColor;
+// NOTE: Add here your custom variables 
 
 void main()
 {
     fragTexCoord = vertexTexCoord;
-    fragColor = vertexColor;
     
     gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
 }

+ 42 - 0
examples/resources/shaders/bloom.fs

@@ -0,0 +1,42 @@
+#version 330
+
+in vec2 fragTexCoord;
+
+out vec4 fragColor;
+
+uniform sampler2D texture0;
+uniform vec4 tintColor;
+
+// NOTE: Add here your custom variables
+
+void main()
+{
+    vec4 sum = vec4(0);
+    vec4 tc = vec4(0);
+
+    for (int i = -4; i < 4; i++)
+    {
+        for (int j = -3; j < 3; j++)
+        {
+            sum += texture2D(texture0, fragTexCoord + vec2(j, i)*0.004) * 0.25;
+        }
+    }
+    
+    if (texture2D(texture0, fragTexCoord).r < 0.3)
+    {
+        tc = sum*sum*0.012 + texture2D(texture0, fragTexCoord);
+    }
+    else
+    {
+        if (texture2D(texture0, fragTexCoord).r < 0.5)
+        {
+            tc = sum*sum*0.009 + texture2D(texture0, fragTexCoord);
+        }
+        else
+        {
+            tc = sum*sum*0.0075 + texture2D(texture0, fragTexCoord);
+        }
+    }
+    
+    fragColor = tc;
+}

+ 11 - 6
examples/resources/shaders/grayscale.fs

@@ -1,15 +1,20 @@
-#version 110
+#version 330
+
+in vec2 fragTexCoord;
+
+out vec4 fragColor;
 
 uniform sampler2D texture0;
-varying vec2 fragTexCoord;
-varying vec4 fragColor;
+uniform vec4 tintColor;
+
+// NOTE: Add here your custom variables
 
 void main()
 {
-    vec4 base = texture2D(texture0, fragTexCoord)*fragColor;
-
+    vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
+    
     // Convert to grayscale using NTSC conversion weights
     float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
     
-    gl_FragColor = vec4(gray, gray, gray, base.a);
+    fragColor = vec4(gray, gray, gray, tintColor.a);
 }

+ 5 - 2
examples/resources/shaders/custom.vs → examples/resources/shaders/shapes_base.vs

@@ -1,16 +1,19 @@
-#version 330
+#version 110
 
 attribute vec3 vertexPosition;
 attribute vec2 vertexTexCoord;
-attribute vec3 vertexNormal;
+attribute vec4 vertexColor;
 
 uniform mat4 projectionMatrix;
 uniform mat4 modelviewMatrix;
 
 varying vec2 fragTexCoord;
+varying vec4 fragColor;
 
 void main()
 {
     fragTexCoord = vertexTexCoord;
+    fragColor = vertexColor;
+    
     gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
 }

+ 5 - 6
examples/resources/shaders/custom.fs → examples/resources/shaders/shapes_grayscale.fs

@@ -1,16 +1,15 @@
-#version 330
+#version 110
 
 uniform sampler2D texture0;
 varying vec2 fragTexCoord;
-
-uniform vec4 tintColor;
+varying vec4 fragColor;
 
 void main()
 {
-    vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
-    
+    vec4 base = texture2D(texture0, fragTexCoord)*fragColor;
+
     // Convert to grayscale using NTSC conversion weights
     float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
     
-    gl_FragColor = vec4(gray, gray, gray, tintColor.a);
+    gl_FragColor = vec4(gray, gray, gray, base.a);
 }

+ 41 - 0
examples/resources/shaders/swirl.fs

@@ -0,0 +1,41 @@
+#version 330
+
+in vec2 fragTexCoord;
+
+out vec4 fragColor;
+
+uniform sampler2D texture0;
+uniform vec4 tintColor;
+
+// NOTE: Add here your custom variables
+
+const float renderWidth = 800;      // HARDCODED for example!
+const float renderHeight = 480;     // Use uniforms instead...
+
+float radius = 250.0;
+float angle = 0.8;
+
+uniform vec2 center = vec2(200, 200);
+
+void main (void)
+{
+    vec2 texSize = vec2(renderWidth, renderHeight);
+    vec2 tc = fragTexCoord*texSize;
+    tc -= center;
+    float dist = length(tc);
+
+    if (dist < radius) 
+    {
+        float percent = (radius - dist)/radius;
+        float theta = percent*percent*angle*8.0;
+        float s = sin(theta);
+        float c = cos(theta);
+        
+        tc = vec2(dot(tc, vec2(c, -s)), dot(tc, vec2(s, c)));
+    }
+
+    tc += center;
+    vec3 color = texture2D(texture0, tc/texSize).rgb;
+
+    fragColor = vec4(color, 1.0);;
+}