This commit is contained in:
Nathan Sobo
2021-04-27 18:35:24 -06:00
parent 58e336354e
commit 69cc2b0483
7 changed files with 70 additions and 19 deletions
+1 -1
View File
@@ -510,7 +510,7 @@ impl Renderer {
);
// Snap sprite to pixel grid.
let origin = (icon.bounds.origin() * scene.scale_factor()).floor();
let origin = (icon.bounds.origin() * scene.scale_factor()); //.floor();
sprites_by_atlas
.entry(sprite.atlas_id)
.or_insert_with(Vec::new)
+2 -1
View File
@@ -49,7 +49,8 @@ typedef enum {
typedef struct {
vector_float2 origin;
vector_float2 size;
vector_float2 target_size;
vector_float2 source_size;
vector_float2 atlas_origin;
vector_uchar4 color;
uint8_t compute_winding;
+2 -2
View File
@@ -186,9 +186,9 @@ vertex SpriteFragmentInput sprite_vertex(
) {
float2 unit_vertex = unit_vertices[unit_vertex_id];
GPUISprite sprite = sprites[sprite_id];
float2 position = unit_vertex * sprite.size + sprite.origin;
float2 position = unit_vertex * sprite.target_size + sprite.origin;
float4 device_position = to_device_position(position, *viewport_size);
float2 atlas_position = (unit_vertex * sprite.size + sprite.atlas_origin) / *atlas_size;
float2 atlas_position = (unit_vertex * sprite.source_size + sprite.atlas_origin) / *atlas_size;
return SpriteFragmentInput {
device_position,
+15
View File
@@ -140,8 +140,23 @@ impl SpriteCache {
size: Vector2F,
path: Cow<'static, str>,
svg: usvg::Tree,
target_position: Vector2F,
scale_factor: f32,
) -> IconSprite {
const SUBPIXEL_VARIANTS: u8 = 4;
let target_position = target_position * scale_factor;
let subpixel_variant = (
(target_position.x().fract() * SUBPIXEL_VARIANTS as f32).round() as u8
% SUBPIXEL_VARIANTS,
(target_position.y().fract() * SUBPIXEL_VARIANTS as f32).round() as u8
% SUBPIXEL_VARIANTS,
);
let subpixel_shift = vec2f(
subpixel_variant.0 as f32 / SUBPIXEL_VARIANTS as f32,
subpixel_variant.1 as f32 / SUBPIXEL_VARIANTS as f32,
);
let atlases = &mut self.atlases;
let atlas_size = self.atlas_size;
let device = &self.device;