Support filter in vecr renderer
This commit is contained in:
parent
f69657c826
commit
47ec94641b
3 changed files with 32 additions and 0 deletions
26
libs/vecr/include/psemek/vecr/full.hpp
Normal file
26
libs/vecr/include/psemek/vecr/full.hpp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#pragma once
|
||||
|
||||
#include <psemek/vecr/sdf.hpp>
|
||||
#include <psemek/geom/point.hpp>
|
||||
#include <psemek/geom/box.hpp>
|
||||
|
||||
namespace psemek::vecr
|
||||
{
|
||||
|
||||
struct full
|
||||
{};
|
||||
|
||||
inline sdf_sample sdf(full const &, geom::point<float, 2> const &)
|
||||
{
|
||||
return {
|
||||
.value = 0.f,
|
||||
.gradient = {0.f, 0.f},
|
||||
};
|
||||
}
|
||||
|
||||
inline geom::box<float, 2> bbox(full const &)
|
||||
{
|
||||
return geom::box<float, 2>::full();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <psemek/vecr/sdf.hpp>
|
||||
#include <psemek/vecr/any.hpp>
|
||||
#include <psemek/vecr/full.hpp>
|
||||
#include <psemek/vecr/colorizer.hpp>
|
||||
#include <psemek/vecr/blend_mode.hpp>
|
||||
#include <psemek/gfx/pixmap.hpp>
|
||||
|
|
@ -12,6 +13,7 @@ namespace psemek::vecr
|
|||
struct primitive
|
||||
{
|
||||
any mask = {};
|
||||
any filter = full{};
|
||||
float blur = 1.f;
|
||||
float alpha = 1.f;
|
||||
any_colorizer colorizer = {};
|
||||
|
|
|
|||
|
|
@ -71,6 +71,10 @@ namespace psemek::vecr
|
|||
{
|
||||
geom::point const center{(x + 0.5f) / samples_, (y + 0.5f) / samples_};
|
||||
|
||||
auto const filter_sample = sdf(primitive.filter, center);
|
||||
|
||||
if (filter_sample.value > aa) continue;
|
||||
|
||||
auto const sample = sdf(primitive.mask, center);
|
||||
|
||||
if (sample.value > aa) continue;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue