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/sdf.hpp>
|
||||||
#include <psemek/vecr/any.hpp>
|
#include <psemek/vecr/any.hpp>
|
||||||
|
#include <psemek/vecr/full.hpp>
|
||||||
#include <psemek/vecr/colorizer.hpp>
|
#include <psemek/vecr/colorizer.hpp>
|
||||||
#include <psemek/vecr/blend_mode.hpp>
|
#include <psemek/vecr/blend_mode.hpp>
|
||||||
#include <psemek/gfx/pixmap.hpp>
|
#include <psemek/gfx/pixmap.hpp>
|
||||||
|
|
@ -12,6 +13,7 @@ namespace psemek::vecr
|
||||||
struct primitive
|
struct primitive
|
||||||
{
|
{
|
||||||
any mask = {};
|
any mask = {};
|
||||||
|
any filter = full{};
|
||||||
float blur = 1.f;
|
float blur = 1.f;
|
||||||
float alpha = 1.f;
|
float alpha = 1.f;
|
||||||
any_colorizer colorizer = {};
|
any_colorizer colorizer = {};
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,10 @@ namespace psemek::vecr
|
||||||
{
|
{
|
||||||
geom::point const center{(x + 0.5f) / samples_, (y + 0.5f) / samples_};
|
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);
|
auto const sample = sdf(primitive.mask, center);
|
||||||
|
|
||||||
if (sample.value > aa) continue;
|
if (sample.value > aa) continue;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue