add background to god

This commit is contained in:
Jill 2023-06-02 14:57:26 +03:00
parent e558a8531b
commit ebc98715be
Signed by: oat
GPG Key ID: 33489AA58A955108
15 changed files with 47 additions and 20 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
assets/buddies/god_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -17,6 +17,8 @@ module Funfriend
# Returns the textures this buddy uses
abstract def textures : TextureMan::TextureBasket
# Texture to stretch over the whole canvas
abstract def bg_texture : Texture?
# Implements the logic for the talk SFX, similar to corru.observer's `talk: () => ...`
abstract def talk_sound
@ -58,6 +60,10 @@ module Funfriend
)
end
def bg_texture : Texture?
nil
end
def talk_sound
SoundMan.play_sound("assets/sfx/talk#{(1..8).sample}.ogg")
end
@ -95,6 +101,10 @@ module Funfriend
)
end
def bg_texture : Texture?
TextureMan.load_texture("assets/buddies/god_bg.png")[:tex]
end
def talk_sound
SoundMan.play_sound("assets/sfx/talk_god#{(1..8).sample}.ogg")
end

View File

@ -1,15 +1,18 @@
class Funfriend::BuddyRenderer
getter buddy : Buddy
getter shader_program : Program
getter buddy_shader : Program
getter bg_shader : Program
getter vertex_array : VertexArray
getter vertex_buffer : Buffer
getter textures : TextureMan::TextureBasket
getter bg_texture : Texture?
def initialize(@buddy : Buddy)
@shader_program = init_shaders
@buddy_shader, @bg_shader = init_shaders
@vertex_array, @vertex_buffer = init_buffers
@textures = buddy.textures
@bg_texture = buddy.bg_texture
end
def funfriend_size
@ -59,14 +62,7 @@ class Funfriend::BuddyRenderer
end
def init_shaders
vertex_shader_source = FileStorage.get("nop.vert").gets_to_end
fragment_shader_source = FileStorage.get("funfriend.frag").gets_to_end
vertex_shader = VertexShader.create(vertex_shader_source)
fragment_shader = FragmentShader.create(fragment_shader_source)
shaders = {vertex_shader, fragment_shader}
return Program.create(shaders)
{GL.shader("funfriend.frag", "nop.vert"), GL.shader("nop.frag", "nop.vert")}
end
def render(dt : Float64, window_width : Int32, window_height : Int32)
@ -78,9 +74,23 @@ class Funfriend::BuddyRenderer
width, height = frame[:width], frame[:height]
Texture::Unit.activate(0)
LibGL.enable(LibGL::BLEND)
LibGL.blend_func(LibGL::SRC_ALPHA, LibGL::ONE_MINUS_SRC_ALPHA)
if bg_texture
bg_texture.not_nil!.bind(Texture::Target::Texture2D) do
bg_shader.use do |shader|
shader.set_uniform("texture1", 0)
vertex_array.bind do
LibGL.draw_elements(LibGL::TRIANGLES, 6, DataType::UnsignedInt, Pointer(Void).new(0))
end
end
end
end
frame[:tex].bind(Texture::Target::Texture2D) do
shader_program.use do |shader|
buddy_shader.use do |shader|
shader.set_uniform("texture1", 0)
shader.set_uniform("funfriendSize", funfriend_size[:width].to_f32, funfriend_size[:height].to_f32)
shader.set_uniform("resolution", window_width.to_f32, window_height.to_f32)

View File

@ -12,4 +12,15 @@ module Funfriend::GL
offset += size
end
end
def shader(fragment_filename : String, vertex_filename : String) : Program
vertex_shader_source = FileStorage.get(vertex_filename).gets_to_end
fragment_shader_source = FileStorage.get(fragment_filename).gets_to_end
vertex_shader = VertexShader.create(vertex_shader_source)
fragment_shader = FragmentShader.create(fragment_shader_source)
shaders = {vertex_shader, fragment_shader}
Program.create(shaders)
end
end

View File

@ -35,17 +35,13 @@ class Funfriend::TextRenderer
end
def init_shaders
vertex_shader_source = FileStorage.get("nop.vert").gets_to_end
fragment_shader_source = FileStorage.get("bake_alpha.frag").gets_to_end
vertex_shader = VertexShader.create(vertex_shader_source)
fragment_shader = FragmentShader.create(fragment_shader_source)
shaders = {vertex_shader, fragment_shader}
return Program.create(shaders)
GL.shader("nop.frag", "nop.vert")
end
def render(dt : Float64)
LibGL.enable(LibGL::BLEND)
LibGL.blend_func(LibGL::SRC_ALPHA, LibGL::ONE_MINUS_SRC_ALPHA)
font_texture.bind(Texture::Target::Texture2D) do
shader_program.use do |p|
p.set_uniform("texture1", 0)