add background to god
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 43 KiB |
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
11
src/gl.cr
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|