fix bunny/outlined framebuffer refresh bug and put some lipstick on it
parent
c3ca5a8191
commit
eb4a6cbe7d
|
@ -1,7 +1,8 @@
|
||||||
USING: arrays bunny.model bunny.cel-shaded continuations
|
USING: arrays bunny.model bunny.cel-shaded continuations
|
||||||
destructors kernel math multiline opengl opengl.shaders
|
destructors kernel math multiline opengl opengl.shaders
|
||||||
opengl.framebuffers opengl.gl opengl.demo-support
|
opengl.framebuffers opengl.gl opengl.demo-support fry
|
||||||
opengl.capabilities sequences ui.gadgets combinators accessors ;
|
opengl.capabilities sequences ui.gadgets combinators accessors
|
||||||
|
macros ;
|
||||||
IN: bunny.outlined
|
IN: bunny.outlined
|
||||||
|
|
||||||
STRING: outlined-pass1-fragment-shader-main-source
|
STRING: outlined-pass1-fragment-shader-main-source
|
||||||
|
@ -176,24 +177,30 @@ TUPLE: bunny-outlined
|
||||||
} cleave
|
} cleave
|
||||||
] [ drop ] if ;
|
] [ drop ] if ;
|
||||||
|
|
||||||
|
MACRO: (framebuffer-texture>>draw) ( iformat xformat setter -- )
|
||||||
|
'[ _ _ (framebuffer-texture) [ @ drop ] keep ] ;
|
||||||
|
|
||||||
|
: (make-framebuffer-textures) ( draw dim -- draw color normal depth )
|
||||||
|
{
|
||||||
|
[ drop ]
|
||||||
|
[ GL_RGBA16F_ARB GL_RGBA [ >>color-texture ] (framebuffer-texture>>draw) ]
|
||||||
|
[ GL_RGBA16F_ARB GL_RGBA [ >>normal-texture ] (framebuffer-texture>>draw) ]
|
||||||
|
[
|
||||||
|
GL_DEPTH_COMPONENT32 GL_DEPTH_COMPONENT
|
||||||
|
[ >>depth-texture ] (framebuffer-texture>>draw)
|
||||||
|
]
|
||||||
|
} 2cleave ;
|
||||||
|
|
||||||
|
: remake-framebuffer ( draw -- )
|
||||||
|
[ dispose-framebuffer ]
|
||||||
|
[ dup gadget>> dim>>
|
||||||
|
[ (make-framebuffer-textures) (make-framebuffer) >>framebuffer ]
|
||||||
|
[ >>framebuffer-dim drop ] bi
|
||||||
|
] bi ;
|
||||||
|
|
||||||
: remake-framebuffer-if-needed ( draw -- )
|
: remake-framebuffer-if-needed ( draw -- )
|
||||||
dup [ gadget>> dim>> ] [ framebuffer-dim>> ] bi =
|
dup [ gadget>> dim>> ] [ framebuffer-dim>> ] bi =
|
||||||
[ drop ] [
|
[ drop ] [ remake-framebuffer ] if ;
|
||||||
[ dispose-framebuffer ] [ dup ] [ gadget>> dim>> ] tri {
|
|
||||||
[
|
|
||||||
GL_RGBA16F_ARB GL_RGBA (framebuffer-texture)
|
|
||||||
[ >>color-texture drop ] keep
|
|
||||||
] [
|
|
||||||
GL_RGBA16F_ARB GL_RGBA (framebuffer-texture)
|
|
||||||
[ >>normal-texture drop ] keep
|
|
||||||
] [
|
|
||||||
GL_DEPTH_COMPONENT32 GL_DEPTH_COMPONENT (framebuffer-texture)
|
|
||||||
[ >>depth-texture drop ] keep
|
|
||||||
]
|
|
||||||
} 2cleave
|
|
||||||
[ (make-framebuffer) >>framebuffer ] [ >>framebuffer-dim ] bi
|
|
||||||
drop
|
|
||||||
] if ;
|
|
||||||
|
|
||||||
: clear-framebuffer ( -- )
|
: clear-framebuffer ( -- )
|
||||||
GL_COLOR_ATTACHMENT0_EXT glDrawBuffer
|
GL_COLOR_ATTACHMENT0_EXT glDrawBuffer
|
||||||
|
|
Loading…
Reference in New Issue