From 9a578c59624f671418a1f3b046b6b09aa4233909 Mon Sep 17 00:00:00 2001 From: raysan5 Date: Wed, 2 Sep 2015 01:06:55 +0200 Subject: [PATCH] Added shaders examples resources --- examples/makefile | 70 ++++++++++++++++++- examples/resources/shaders/base.vs | 14 ++-- examples/resources/shaders/bloom.fs | 42 +++++++++++ examples/resources/shaders/grayscale.fs | 17 +++-- .../shaders/{custom.vs => shapes_base.vs} | 7 +- .../{custom.fs => shapes_grayscale.fs} | 11 ++- examples/resources/shaders/swirl.fs | 41 +++++++++++ 7 files changed, 179 insertions(+), 23 deletions(-) create mode 100644 examples/resources/shaders/bloom.fs rename examples/resources/shaders/{custom.vs => shapes_base.vs} (74%) rename examples/resources/shaders/{custom.fs => shapes_grayscale.fs} (55%) create mode 100644 examples/resources/shaders/swirl.fs diff --git a/examples/makefile b/examples/makefile index 1f3ddb7f4..15a4bd0ac 100644 --- a/examples/makefile +++ b/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) diff --git a/examples/resources/shaders/base.vs b/examples/resources/shaders/base.vs index 78e543b71..59eae0a00 100644 --- a/examples/resources/shaders/base.vs +++ b/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); } \ No newline at end of file diff --git a/examples/resources/shaders/bloom.fs b/examples/resources/shaders/bloom.fs new file mode 100644 index 000000000..f9cebe18a --- /dev/null +++ b/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; +} \ No newline at end of file diff --git a/examples/resources/shaders/grayscale.fs b/examples/resources/shaders/grayscale.fs index 1b7788717..38337e007 100644 --- a/examples/resources/shaders/grayscale.fs +++ b/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); } \ No newline at end of file diff --git a/examples/resources/shaders/custom.vs b/examples/resources/shaders/shapes_base.vs similarity index 74% rename from examples/resources/shaders/custom.vs rename to examples/resources/shaders/shapes_base.vs index 629c954d4..78e543b71 100644 --- a/examples/resources/shaders/custom.vs +++ b/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); } \ No newline at end of file diff --git a/examples/resources/shaders/custom.fs b/examples/resources/shaders/shapes_grayscale.fs similarity index 55% rename from examples/resources/shaders/custom.fs rename to examples/resources/shaders/shapes_grayscale.fs index 1e53933b8..1b7788717 100644 --- a/examples/resources/shaders/custom.fs +++ b/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); } \ No newline at end of file diff --git a/examples/resources/shaders/swirl.fs b/examples/resources/shaders/swirl.fs new file mode 100644 index 000000000..ba26cc05a --- /dev/null +++ b/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);; +} \ No newline at end of file