diff --git a/examples/triangleGLES/build.sh b/examples/triangleGLES/build.sh index b697813..b4eb7c8 100755 --- a/examples/triangleGLES/build.sh +++ b/examples/triangleGLES/build.sh @@ -5,11 +5,11 @@ RESDIR=../../resources SRCDIR=../../src INCLUDES="-I$SRCDIR -I$SRCDIR/util -I$SRCDIR/platform -I$SRCDIR/app -I$SRCDIR/../ext/angle_headers" -LIBS="-L$BINDIR -lmilepost -framework Carbon -framework Cocoa -framework Metal -framework QuartzCore -L$RESDIR -lGLESv2 -lEGL" +LIBS="-L$BINDIR -lmilepost -framework Carbon -framework Cocoa -framework Metal -framework QuartzCore -lGLESv2 -lEGL" FLAGS="-mmacos-version-min=10.15.4 -DDEBUG -DLOG_COMPILE_DEBUG" clang -g $FLAGS $LIBS $INCLUDES -o $BINDIR/example_gles_triangle main.c # change dynamic libraries install name -install_name_tool -change "./libEGL.dylib" "@loader_path/../resources/libEGL.dylib" $BINDIR/example_gles_triangle -install_name_tool -change "./libGLESv2.dylib" "@loader_path/../resources/libGLESv2.dylib" $BINDIR/example_gles_triangle +install_name_tool -change "./libEGL.dylib" "@loader_path/libEGL.dylib" $BINDIR/example_gles_triangle +install_name_tool -change "./libGLESv2.dylib" "@loader_path/libGLESv2.dylib" $BINDIR/example_gles_triangle diff --git a/rasterization_notes.txt b/rasterization_notes.txt deleted file mode 100644 index fecf924..0000000 --- a/rasterization_notes.txt +++ /dev/null @@ -1,9 +0,0 @@ -https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/ - -https://github.com/rygorous/trirast/blob/master/main.cpp - -https://joshbeam.com/articles/triangle_rasterization/ - -https://nlguillemot.wordpress.com/2016/07/10/rasterizer-notes/ - -https://web.archive.org/web/20120625103536/http://devmaster.net/forums/topic/1145-advanced-rasterization/ diff --git a/src/win32_gles_surface.c b/src/win32_gles_surface.c index 8fe4085..a183286 100644 --- a/src/win32_gles_surface.c +++ b/src/win32_gles_surface.c @@ -108,7 +108,7 @@ mg_surface mg_gles_surface_create_for_window(mp_window window) eglBindAPI(EGL_OPENGL_ES_API); EGLint contextAttributes[] = { EGL_CONTEXT_MAJOR_VERSION_KHR, 3, - EGL_CONTEXT_MINOR_VERSION_KHR, 1, //NOTE: Angle can't create a GLES 3.1 context on macOS + EGL_CONTEXT_MINOR_VERSION_KHR, 1, EGL_CONTEXT_BIND_GENERATES_RESOURCE_CHROMIUM, EGL_TRUE, EGL_CONTEXT_CLIENT_ARRAYS_ENABLED_ANGLE, EGL_TRUE, EGL_CONTEXT_OPENGL_BACKWARDS_COMPATIBLE_ANGLE, EGL_FALSE, diff --git a/vector_renderer_notes.txt b/vector_renderer_notes.txt new file mode 100644 index 0000000..766e012 --- /dev/null +++ b/vector_renderer_notes.txt @@ -0,0 +1,32 @@ +Various notes/thoughts about the 2D vector graphics renderer + +Triangle Rasterization +---------------------- +https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/ + +https://github.com/rygorous/trirast/blob/master/main.cpp + +https://joshbeam.com/articles/triangle_rasterization/ + +https://nlguillemot.wordpress.com/2016/07/10/rasterizer-notes/ + +https://web.archive.org/web/20120625103536/http://devmaster.net/forums/topic/1145-advanced-rasterization/ + +Bindless textures +----------------- +It's tempting to use bindless textures to be able to draw individual images using only one draw call. This would avoid much of the complexity of either managing a texture atlas under the hood or breaking the draw list into batches... +But, it's only an extension and seem to not be supported everywhere. Moreover, there might be a problem where the texture handle used by the shader can not differ between batches (must be "dynamic uniforms"), which defeats the purpose in our case -> it requires OES_gpu_shader5 or GLES 3.2 + +ideally, the atlas should be built on top of lower level image features of the renderer, eg mg_image_upload_sub_region(), mg_image_render_sub_region() etc... + +This would mean individual textures can be set and used in a frame. So without bindless textures, we would need to break down the draw list in batches, each time the texture attribute changes. This also mean we need to blend each batch result to the previous one. + + - It seems possible to implement bindless texture in metal using argument buffers + - We could investigate if angle/our targets likely support OES_gpu_shader5 + - But, this means the canvas renderer relies on the backend to provide this kind of feature + - It also assume the upper bound for indexable bindless textures is enough on every backend + - We'll likely need a batching fallback anyway? + + + +