-
plot sampling uvs = done
-
transform uvs of sampler_t = done
-
can make an optimized render node for rectangles: interleaved(one upload call) and constant ebo = DONE
-
maybe create a GVA - generic vertex attribute system = DONE
-
shader compositor_t = DONE
-
general texture sampler_t = DONE
-
basic blending = done
-
basic compositing = done
-
test idea with backdrop sampling read = done
-
attach_shaders, update_shaders, ctors - DONE
-
static pool for main programs - DONE
-
murmur hashcode - DONE
-
compositing is a canvas state - DONE
-
circle sampler - DONE
-
rounded rect_i sampler - DONE
-
masking sampler - DONE
-
draw mask - DONE
-
draw arc - DONE
-
draw pie - DONE
-
quadrilateral - DONE
-
line gradient - DONE
-
fast 2 colors gradient - DONE
-
circle gradient - DONE
-
angular gradient - DONE
-
capsule shape sampler - DONE
-
linear classifier sampler - DONE
-
test idea of missing uvs coords for triangle batches - DONE
-
render node for triangle batches - DONE
-
draw polygons - DONE
-
draw paths fills - DONE
-
draw stroke fills - Done
-
bezier patches - done
-
draw text, bitmap fonts - done
-
tint sampler - done
-
draw lines - done
-
test gldrawArrays for non-indexed - done
-
convex/fan dont need to allocate indices buffer - done
-
clean up other_functions from samplers - done
-
const_cast with fake const samplers to catch rval refs without overloading - done
-
add docs for canvas functions - done
-
compatibility with older than 3.0 opengl (attributes in/out, texture/2d etc...) - done
-
debug mode - done
-
glsl versioning - wip
-
create mix sampler
-
filter sampler
-
checkerboard sampler
-
https://stackoverflow.com/questions/327642/opengl-and-monochrome-texture
-
AA with rbos
-
convert refs to pointer template so we can forward besides pointer to multi sampler
-
text measure compute
-
draw text, sdf version
-
explore drawing 3d objects, might need new shader type and pool and render node
tests:
- test canvas with injected texture
optimizations:
- lazy back buffers_type. also, if taregt is requested as premul alpha, normal blending and any of the porter-duff, we can use opengl blending.
NOTES:
- all samplers should be linear space. If one is pre-mul like a texture, then use an unmul sampler
- branch in vertex shader for made-up uvs for traingles if not present
- backdrop uvs should be calculated in place
- We can compute mip-maps at client side and the mip level at client side, because, the mip level is uniform accros because it is 2d and aligned except for quadrilaterals where there is a twist and the sampling rate is varying. https://www.reddit.com/r/opengl/comments/3cdg5r/derivation_of_opengls_mipmap_level_computation/
- all textures should be pre-multiplied alpha
- all other samplers should be un-multiplied
- backdrop texture does not need interpolation and min filter, therefore it can be mul/unmul alpha
- if your texture uses any filter/interpolation and it has transperency, you need it to be alpha-mul
- canvas inherits the alpha-stat of it's texture
- opengl textures are top=1.0, bottom=0.0
OPTIM:
- if normal blend-mode and any porter-duff and canvas is pre-mul stat, then you can skip backdrop texture and do it all in open-gl