[{"data":1,"prerenderedAt":427},["ShallowReactive",2],{"project-19862748":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":44,"post_text":45,"what":46,"said":86,"maker_in_thread":162,"shape":173,"grid":178,"attempts":389,"same_week":390,"maker_shows":39,"maker_hidden":419,"reader_version":420,"card":421},"19862748","piet-metal","2D Graphics on Modern GPU","title","Show HN: 2D Graphics on Modern GPU","https:\u002F\u002Fraphlinus.github.io\u002Frust\u002Fgraphics\u002Fgpu\u002F2019\u002F05\u002F08\u002Fmodern-2d.html","raphlinus.github.io","raphlinus",1557348427,2019,306,86,96,2195,5,"legend","languages","graphics rendering library","library",[24,25,26,27,28],"gpu 2d rendering","vector graphics","antialiasing","rust graphics","metal","curious",0.063,{"positive":32,"neutral":33,"mixed":34,"critical":35},4,23,0,2,29,{"idea":38,"performance":40,"execution":41,"docs":43},{"positive":39,"critical":34},3,{"positive":34,"critical":34},{"positive":34,"critical":42},1,{"positive":42,"critical":42},[18,39,39,34,34,34,39,39,34,34,34,39,39,39,18,34,34,39,34,34,39,39,18,39,39,34,39,42,34,39,18,34,34,39,34,34,34,39,39,42],null,{"problem":47,"audience":57,"pricing":45,"motivation":64,"time_to_build":45,"stack":69,"openness":83,"stage":84,"team_size":85},{"value":48,"source":49,"evidence":50},"Rendering 2D vector paths and UI on the GPU with smooth, predictable performance","maker",[51,54],{"id":52,"by":11,"text":53},"19863632","Agree on both fronts! (Also, your username seems familiar somehow - have we had discussions around this before? :) I didn't talk about this in the post because I haven't actually…",{"id":55,"by":11,"text":56},"19864231","What makes you say that 2D graphics has worked well? Scrolling often janks, UI designers constantly have to work around limitations in the imaging model and performance quirks…",{"value":58,"source":49,"evidence":59},"UI designers and developers building 2D interfaces and font editors",[60,61],{"id":55,"by":11,"text":56},{"id":62,"by":11,"text":63},"19864270","Yes. I'll have more to say soon, but I'm basically building what I think is next-gen UI infrastructure in Rust. That's a project with perhaps overly ambitious scope, so I'm…",{"value":65,"source":49,"evidence":66},"Build next-gen UI infrastructure with predictable GPU performance, starting with a font editor",[67,68],{"id":62,"by":11,"text":63},{"id":52,"by":11,"text":53},[70,78],{"value":71,"source":49,"evidence":72},"Rust",[73,74],{"id":62,"by":11,"text":63},{"id":75,"by":76,"text":77},"19864062","Retr0spectrum","Is there a demo\u002Fsource anywhere? I admit I only skimmed the article, for now.",{"value":79,"source":80,"evidence":81},"Metal","commenter",[82],{"id":75,"by":76,"text":77},"open_source","prototype","unknown",{"praise":87,"objections":99,"requests":117,"questions":125,"alternatives":137},[88],{"value":89,"source":80,"evidence":90},"Interesting work on GPU vector rendering and analytic antialiasing",[91,95],{"id":92,"by":93,"text":94},"19863433","Jasper_","Impressive work, Raph! As I'm sure everyone knows by now, the PostScript imaging model is hard to make work on the GPU, and its traditional geometry pipeline isn't suited well…",{"id":96,"by":97,"text":98},"19863560","pcwalton","> its traditional geometry pipeline isn't suited well for curves or analytic coverage-based AA I actually don't agree with this: Pathfinder shows that analytic AA works quite…",[100,110],{"value":101,"source":80,"evidence":102},"Rendering without oversampling can give wrong antialiasing at overlapping edges",[103,107],{"id":104,"by":105,"text":106},"19863553","amelius","> I’m particularly interested in the rendering quality. Shouldn't the rendering be done using oversampling? E.g. instead of 100x100, you render on 400x400, then scale back down…",{"id":108,"by":11,"text":109},"19863566","It is true that is more correct (see https:\u002F\u002Fgithub.com\u002Fpcwalton\u002Fpathfinder\u002Fissues\u002F142). But my motivation is much more user interface than document rendering, so it's quite…",{"value":111,"source":80,"evidence":112},"Layer-based compositing as in Flutter hurts performance",[113],{"id":114,"by":115,"text":116},"19863601","kllrnohj","> and many people believe that damage regions are obsolete Old-style damage regions are obsolete. But new-style ones leveraging buffer age & swap-with-damage are not. Vulkan…",[118],{"value":119,"source":80,"evidence":120},"Include video or visual demos",[121],{"id":122,"by":123,"text":124},"19867795","malms","\"graphics\" and then no video :(",[126],{"value":127,"source":80,"evidence":128},"Could ray tracing hardware or SDF approaches help 2D rendering",[129,133],{"id":130,"by":131,"text":132},"19865273","dahart","> Well known to game developers, what is efficient on GPU is a structure-of-arrays approach. In particular, the tiling phase spends a lot of time looking at bounding boxes, to…",{"id":134,"by":135,"text":136},"19864119","DonHopkins","Distance fields are great! What do you think an alternative to PostScript's imaging model (Porter\u002FDuff) formulated in terms of signed distance fields would be like? Much of…",[138,145,151,155],{"value":139,"source":80,"evidence":140},"Pathfinder",[141,142],{"id":96,"by":97,"text":98},{"id":143,"by":97,"text":144},"19868962","That's tessellation, and it is one approach to vector graphics on GPU. Unfortunately, it's difficult to implement (floating point\u002Ffixed point error will frequently ruin your day)…",{"value":146,"source":49,"evidence":147},"WebRender",[148],{"id":149,"by":11,"text":150},"19864483","Patrick is of course right here, macOS isn't quite like Flutter because it basically always texturizes, although ultimately this is under control of the programmers. And perhaps…",{"value":152,"source":80,"evidence":153},"Flutter",[154],{"id":114,"by":115,"text":116},{"value":156,"source":80,"evidence":157},"Defold",[158],{"id":159,"by":160,"text":161},"19863685","jra101","Defold might be an option. https:\u002F\u002Fwww.defold.com\u002F",{"comments":163,"answered":164,"key":165},12,8,[166,169,170],{"id":167,"text":168},"19863535","These are all interesting questions. I've been following some of the stuff on Shadertoy, and I think that points the way. Most is 3d, but not all, and in particular there's a lot…",{"id":52,"text":53},{"id":171,"text":172},"19864416","Yes, macOS relies very heavily on CALayer to accomplish smooth scrolling, largely because much of the content of those layers is software-rendered. One thing that I find…",{"commenters":174,"max_depth":175,"maker_replies":163,"first_comment_mins":176,"lifespan_hours":177},43,7,65,176,[179,181,183,184,187,189,193,194,196,198,201,202,204,207,210,213,214,215,216,218,221,222,224,225,228,231,233,235,237,240,243,246,247,250,252,255,257,259,262,265,267,270,273,276,279,282,285,288,292,295,298,299,300,302,305,307,309,311,313,316,319,322,325,328,329,331,332,334,336,339,343,347,350,353,357,361,363,366,368,370,373,377,379,381,384,387],[92,34,18,180,93,34],"maker\u002Fpositive\u002Fidea",[167,34,34,182,11,42],"project\u002Fneutral\u002Fidea",[134,34,39,182,135,34],[185,34,34,186,97,34],"19864412","commenter\u002Fneutral\u002Fnone",[188,34,39,182,135,34],"19866297",[190,34,34,191,192,34],"19865841","other\u002Fneutral\u002Fidea","gardaani",[96,34,34,186,97,34],[195,34,34,186,93,34],"19863793",[197,34,34,186,97,34],"19864001",[199,34,34,186,200,34],"19865716","kibibu",[143,34,34,186,97,34],[203,34,34,186,200,34],"19926301",[205,34,34,186,206,34],"19868254","fluffything",[208,34,39,209,97,34],"19869019","project\u002Fneutral\u002Fperformance",[211,34,34,212,206,34],"19875553","other\u002Fneutral\u002Fnone",[130,42,39,182,131,34],[114,35,34,212,115,34],[52,35,34,209,11,42],[217,35,34,212,115,34],"19863681",[219,35,34,212,220,34],"19864397","nine_k",[171,35,34,212,11,42],[223,35,34,212,97,34],"19864453",[149,35,34,212,11,42],[226,35,34,212,227,34],"19874250","kvark",[229,35,39,230,93,34],"19863756","project\u002Fneutral\u002Fexecution",[232,35,34,230,11,42],"19864218",[234,35,39,209,115,34],"19864382",[236,35,39,230,115,34],"19864288",[238,39,34,212,239,34],"19863413","Waterluvian",[241,39,34,212,242,34],"19863487","paulryanrogers",[244,39,18,245,97,34],"19863508","project\u002Fpositive\u002Fidea",[159,39,34,212,160,34],[248,39,34,212,249,34],"19866338","speps",[251,39,34,212,135,34],"19864330",[253,39,34,212,254,34],"19864614","bufferoverflow",[256,39,34,212,135,34],"19866236",[258,39,39,182,97,34],"19869060",[260,39,34,212,261,34],"19866620","maeln",[263,39,34,212,264,34],"19866785","Crinus",[266,39,34,212,135,34],"19875509",[268,39,34,212,269,34],"19864774","m463",[271,39,34,212,272,34],"19865248","Impossible",[274,39,34,212,275,34],"19866004","newnewpdro",[277,32,39,230,278,34],"19865511","rock_artist",[280,32,39,230,281,34],"19865735","Const-me",[283,32,39,230,284,34],"19866154","enqk",[286,32,34,212,287,34],"19871457","zackmorris",[289,18,18,290,291,34],"19863574","project\u002Fpositive\u002Fdocs","pavlov",[293,294,34,212,135,34],"19864196",6,[296,294,34,212,297,34],"19864373","strmpnk",[104,175,39,230,105,34],[108,175,34,209,11,42],[301,175,39,230,105,34],"19863584",[303,175,34,304,97,34],"19863608","commenter\u002Fneutral\u002Fexecution",[306,175,34,230,11,42],"19863614",[308,175,39,230,97,34],"19863596",[310,175,39,230,105,34],"19863620",[312,175,39,230,97,34],"19863644",[314,175,42,315,105,34],"19863827","project\u002Fcritical\u002Fexecution",[317,175,39,230,318,34],"19863604","Rusky",[320,164,34,212,321,34],"19864066","tenaciousDaniel",[323,164,34,324,11,42],"19864101","maker\u002Fneutral\u002Fidea",[326,164,39,182,327,34],"19864134","incompatible",[55,164,34,182,11,42],[330,164,18,180,321,34],"19864250",[62,164,34,245,11,42],[333,164,34,212,115,34],"19864354",[335,164,34,212,93,34],"19864117",[337,164,34,212,338,34],"19864124","bmer",[340,341,34,212,342,34],"19863349",9,"adamnemecek",[344,341,39,345,346,34],"19864300","maker\u002Fneutral\u002Fdocs","dman",[348,341,34,212,349,34],"19864807","irascible",[351,341,39,345,352,34],"19865739","mpfundstein",[354,355,34,212,356,34],"19864088",10,"dragontamer",[358,359,34,212,360,34],"19865069",11,"aasasd",[362,359,34,212,93,34],"19865582",[364,359,34,212,365,34],"19866897","roel_v",[367,359,34,186,93,34],"19867069",[369,359,34,186,365,34],"19868599",[371,163,39,324,372,34],"19864978","iamleppert",[374,375,39,182,376,34],"19866330",13,"vbuwivbiu",[378,375,34,186,291,34],"19866525",[75,380,39,345,76,34],14,[382,380,34,383,11,42],"19864071","project\u002Fneutral\u002Fdocs",[122,385,42,386,123,34],15,"project\u002Fcritical\u002Fdocs",[388,385,34,345,11,42],"19868508",[],[391,396,401,405,409,414],{"id":392,"name":393,"points":394,"category":395},"19858015","CSSFX",595,"dev_tools",{"id":397,"name":398,"points":399,"category":400},"19827336","zfsp",411,"infrastructure",{"id":402,"name":403,"points":404,"category":20},"19810504","Risp",314,{"id":406,"name":407,"points":408,"category":400},"19811093","Faast.js",202,{"id":410,"name":411,"points":412,"category":413},"19847258","Full Help",197,"web_saas",{"id":415,"name":416,"points":417,"category":418},"19856799","RSS Search Engine",192,"data",false,"v2",{"id":422,"name":5,"line":6,"ai":419,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":423,"top":18,"kw":424,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":425,"url":9,"mix":426,"praise":89,"objection":101,"sub":21},19862748,0.06,[24,25,26,27,28],"5330003300033350030033533031035003000331",[32,33,34,35],1794036577399]