[{"data":1,"prerenderedAt":460},["ShallowReactive",2],{"project-10824064":3},{"id":4,"name":5,"line":5,"line_source":6,"title":7,"url":8,"domain":9,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":46,"post_text":48,"what":49,"said":76,"maker_in_thread":192,"shape":198,"grid":203,"attempts":423,"same_week":424,"maker_shows":40,"maker_hidden":452,"reader_version":453,"card":454},"10824064","GPU text rendering with vector textures","title","Show HN: GPU text rendering with vector textures","http:\u002F\u002Fwdobbie.com\u002Fpost\u002Fgpu-text-rendering-with-vector-textures\u002F","wdobbie.com","wjd",1451690802,2016,334,87,50,2264,3,"legend","languages","text rendering library","web_app",[23,24,25,26,27],"gpu text rendering","vector textures","webgl text","glyph rendering","resolution independent text","debated",0.104,{"positive":31,"neutral":32,"mixed":17,"critical":33},20,11,12,46,{"performance":36,"idea":39,"docs":41,"execution":44,"design":45},{"positive":37,"critical":38},16,8,{"positive":40,"critical":40},2,{"positive":42,"critical":43},1,0,{"positive":43,"critical":40},{"positive":42,"critical":43},[47,43,47,42,17,17,43,43,42,47,17,47,43,42,42,42,47,47,17,43,43,43,43,43,17,43,47,42,17,17,17,47,47,47,17,47,47,43,42,43],5,null,{"problem":50,"audience":48,"pricing":48,"motivation":48,"time_to_build":48,"stack":61,"openness":74,"stage":75,"team_size":74},{"value":51,"source":52,"evidence":53},"Rendering scalable vector text on the GPU without distance-field or atlas artifacts","inferred",[54,58],{"id":55,"by":56,"text":57},"10825008","pcwalton","This is really neat. Though in practice if you are using this kind of thing I'm pretty sure you will want to combine it with atlasing (i.e. construct an atlas of glyphs via…",{"id":59,"by":10,"text":60},"10828870","Consider that each \"e\" may be slightly differently aligned to the pixel grid though. So using an atlas is lower quality than drawing each \"e\" from scratch exactly as it aligns to…",[62],{"value":63,"source":64,"evidence":65},"WebGL","commenter",[66,70],{"id":67,"by":68,"text":69},"10825043","mattdesl","Great work! Is there any WebGL source available? The demo runs very poorly on my 15\" MBP (late 2013, Intel Iris Pro). I'm not sure if it's just the sheer number of glyphs being…",{"id":71,"by":72,"text":73},"10824753","watmough","Here's my experience on my local devices: ``` * Quad i7 16 GBytes GTX 970 OSX FFox - perfectly smooth * iPhone 6s+ - very smooth * Nexus 6p - slightly jumpy \u002F laggy but still…","unknown","prototype",{"praise":77,"objections":101,"requests":135,"questions":147,"alternatives":162},[78,90],{"value":79,"source":64,"evidence":80},"Smooth and sharp text rendering in the demo on many devices",[81,82,86],{"id":71,"by":72,"text":73},{"id":83,"by":84,"text":85},"10825013","bhauer","It's amazingly smooth, I'd say 60+ fps, on my i7-3770K desktop (Geforce GTX970) with Firefox Developer Edition.",{"id":87,"by":88,"text":89},"10826181","CyberDildonics","I don't know why you are being downvoted, that is what is happening and I am not convinced that straight textures would be better. We already know that SDF textures are better…",{"value":91,"source":64,"evidence":92},"Clever technique, more faithful to letterforms than SDF",[93,97],{"id":94,"by":95,"text":96},"10824651","pshc","Very clever technique! It seems more true to letterforms than SDF. Seems like it might need more texture bandwidth\u002Fdependent reads than SDF, but less texture memory as a whole?…",{"id":98,"by":99,"text":100},"10824903","kevingadd","This is a cool technique. The WebGL demonstration is pretty compelling! It's a little odd to me that they describe distance fields as having an unavoidable problem with sharp…",[102,116,124],{"value":103,"source":64,"evidence":104},"Demo performs poorly on some hardware, e.g. Intel integrated graphics on macOS",[105,109,113],{"id":106,"by":107,"text":108},"10824833","davej","Yeah my rMBP uses an embedded Intel graphics card. The performance is horrible, ~2 fps, tried FF and Chrome.",{"id":110,"by":111,"text":112},"10824871","smskelley","Even with a discrete card (M370x), the performance is poor on my rMBP. I only tried Chrome, though.",{"id":114,"by":107,"text":115},"10824729","It's very laggy and slow on a quad i7 16GB Macbook Pro. Presumably this is because of the retina display.",{"value":117,"source":64,"evidence":118},"Per-frame glyph rasterization is wasteful without atlasing",[119,120],{"id":55,"by":56,"text":57},{"id":121,"by":122,"text":123},"10825125","baldajan","That was my first thought. This is brilliant, but the FS is way overworked, making this less practical and going back to the original solution (because it's fast). It's a trade…",{"value":125,"source":64,"evidence":126},"Demo fails or shows artifacts on some browsers and devices",[127,131],{"id":128,"by":129,"text":130},"10824827","_ZeD_","strange, I only see white rectangles on the demo (using ff 43.0.3)",{"id":132,"by":133,"text":134},"10825722","e98cuenc","It doesn't work here, Nexus 5. That's what I see when I zoom in: https:\u002F\u002Fgoo.gl\u002Fphotos\u002F3EXv2t4YZRxmyNPe8",[136,140],{"value":137,"source":64,"evidence":138},"Publish the WebGL source code",[139],{"id":67,"by":68,"text":69},{"value":141,"source":64,"evidence":142},"Add subpixel rendering",[143],{"id":144,"by":145,"text":146},"10824996","rasz_pl","no subpixel rendering or hinting. Im confused - is there a problem with cpu rendered fonts that needs fixing? I didnt notice anything wrong last time I was reading schematics and…",[148,155],{"value":149,"source":64,"evidence":150},"How to get started rendering text with this",[151],{"id":152,"by":153,"text":154},"10825051","voltagex_","This looks great, but I don't understand much of the article. As a half-decent dev, what do I need to do to write \"Hello World\" on the screen?",{"value":156,"source":64,"evidence":157},"Whether it works for CJK glyphs with complex geometry",[158],{"id":159,"by":160,"text":161},"10826727","jepler","The method seems to assume the geometric complexity of a glyph is relatively small. I wonder if it will work with CJK glyphs. Possibly the number of tiles per glyph would need to…",[163,178,185],{"value":164,"source":64,"evidence":165},"Signed distance field text rendering",[166,170,174],{"id":167,"by":168,"text":169},"10825196","jacobolus","This paper from 2014 is the best recent work I’ve seen about rendering vector graphics on the GPU: http:\u002F\u002Fw3.impa.br\u002F~diego\u002Fprojects\u002FGanEtAl14\u002F",{"id":171,"by":172,"text":173},"10824989","DonHopkins","Signed Distance Field fonts are wonderful! I've been using a Unity extension called TextMesh Pro, which works very efficiently, and renders beautiful text that you can configure…",{"id":175,"by":176,"text":177},"10824825","dvt","Although cool, this is not a particularly novel idea. I remember reading a 2007 SIGGRAPH paper about something similar Valve did in HL2 (or maybe it was Orange Box). Either way,…",{"value":179,"source":64,"evidence":180},"Glyphy",[181],{"id":182,"by":183,"text":184},"10824717","sho_hn","Another one: https:\u002F\u002Fgithub.com\u002Fbehdad\u002Fglyphy (SDF, but full vector outlines, not texture sampling)",{"value":186,"source":64,"evidence":187},"Direct2D and NV path rendering",[188],{"id":189,"by":190,"text":191},"10826881","corysama","Microsoft has Direct2D https:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Flibrary\u002Fwindows\u002Fdesktop\u002Fdd370987(v=vs.85).aspx Nvidia has it's nvPathRendering extension to OpenGL…",{"comments":40,"answered":42,"key":193},[194,195],{"id":59,"text":60},{"id":196,"text":197},"10828926","Subpixel rendering isn't implemented in the demo but just requires running the calculations three times with 1\u002F3 pixel offsets. It still would only need to read the texture data…",{"commenters":199,"max_depth":200,"maker_replies":40,"first_comment_mins":201,"lifespan_hours":202},56,6,28,44,[204,206,208,212,215,216,219,221,224,227,230,232,235,238,239,241,243,245,249,250,254,257,260,263,266,269,271,273,275,278,281,282,284,285,286,288,289,292,295,298,301,304,307,310,313,314,317,320,322,324,326,328,331,333,335,338,341,345,348,350,354,355,357,359,362,365,367,369,373,375,378,380,383,385,387,391,395,397,400,403,405,408,411,413,414,418,421],[55,43,17,205,56,43],"project\u002Fneutral\u002Fperformance",[121,43,47,207,122,43],"project\u002Fpositive\u002Fperformance",[209,43,43,210,211,43],"10825155","commenter\u002Fneutral\u002Fidea","carterehsmith",[213,43,43,214,56,43],"10825206","commenter\u002Fneutral\u002Fnone",[87,43,47,207,88,43],[217,43,43,214,218,43],"10826208","armitron",[220,43,43,214,88,43],"10831144",[222,43,42,223,56,43],"10826212","project\u002Fcritical\u002Fperformance",[225,43,17,205,226,43],"10825556","derefr",[228,43,17,205,229,43],"10825804","panic",[231,43,17,205,226,43],"10828245",[233,43,43,234,229,43],"10828277","commenter\u002Fneutral\u002Fperformance",[236,43,17,237,226,43],"10828294","project\u002Fneutral\u002Fidea",[59,43,43,205,10,42],[240,43,43,234,56,43],"10826204",[242,43,43,210,226,43],"10828342",[244,43,43,234,56,43],"10828565",[246,43,43,247,248,43],"10831986","other\u002Fneutral\u002Fnone","crzwdjk",[67,42,42,223,68,43],[251,42,47,252,253,43],"10825193","project\u002Fpositive\u002Fdocs","chii",[255,42,47,207,256,43],"10825292","microcolonel",[258,42,42,223,259,43],"10825569","spoiler",[261,42,47,207,262,43],"10825913","monk_e_boy",[264,42,47,207,265,43],"10826475","rcarmo",[267,40,43,210,268,43],"10826257","jvuletich",[182,17,43,270,183,43],"other\u002Fneutral\u002Fidea",[272,17,43,214,256,43],"10825272",[167,274,43,270,168,43],4,[276,47,42,223,277,43],"10826006","orangeduck",[279,200,17,280,72,43],"10824197","project\u002Fmixed\u002Fdocs",[114,200,42,223,107,43],[71,200,17,283,72,43],"project\u002Fmixed\u002Fperformance",[106,200,42,223,107,43],[110,200,42,223,111,43],[287,200,47,207,256,43],"10825288",[83,200,47,207,84,43],[290,200,47,207,291,43],"10825715","mangecoeur",[293,200,47,207,294,43],"10826555","green7ea",[296,200,47,207,297,43],"10824732","rayiner",[299,200,42,223,300,43],"10824776","skybrian",[302,200,47,207,303,43],"10824791","plg",[305,200,43,306,172,43],"10824998","other\u002Fneutral\u002Fdocs",[308,200,43,247,309,43],"10825529","jon-wood",[311,200,43,234,312,43],"10825602","Qantourisc",[189,200,43,270,190,43],[315,200,43,234,316,43],"10825704","vidarh",[318,200,43,234,319,43],"10825734","joosters",[321,200,43,234,72,43],"10826042",[323,200,43,234,319,43],"10827883",[325,200,43,234,316,43],"10831079",[327,200,43,234,319,43],"10831326",[329,330,43,270,297,43],"10824741",7,[332,330,17,237,72,43],"10824829",[334,330,43,214,297,43],"10824881",[336,330,43,247,337,43],"10824868","dman",[339,330,43,247,340,43],"10824972","geofft",[342,38,47,343,344,43],"10825537","project\u002Fpositive\u002Fidea","a_e_k",[152,346,17,347,153,43],9,"project\u002Fneutral\u002Fdocs",[171,349,43,247,172,43],10,[351,349,42,352,353,43],"10825120","project\u002Fcritical\u002Fidea","thorp5555",[94,32,47,343,95,43],[356,32,43,247,172,43],"10825005",[132,33,42,358,133,43],"project\u002Fcritical\u002Fexecution",[360,361,17,237,353,43],"10825002",13,[98,363,17,364,99,43],14,"project\u002Fmixed\u002Fidea",[366,363,43,210,353,43],"10825011",[159,368,17,205,160,43],15,[370,37,47,371,372,43],"10825656","project\u002Fpositive\u002Fdesign","Apanatshka",[144,374,17,205,145,43],17,[376,374,47,207,377,43],"10825102","ssalazar",[379,374,47,207,56,43],"10825335",[381,374,43,234,382,43],"10826815","barrkel",[384,374,47,207,190,43],"10826926",[386,374,43,234,56,43],"10827947",[388,374,17,389,390,43],"10825395","project\u002Fneutral\u002Fdesign","piotrkaminski",[392,374,43,393,394,43],"10825720","commenter\u002Fneutral\u002Fdesign","anon4",[396,374,43,393,56,43],"10826423",[398,374,47,207,399,43],"10827147","hammerandtongs",[401,374,47,207,402,43],"10825469","oofabz",[196,374,43,404,10,42],"maker\u002Fneutral\u002Fdesign",[406,407,43,247,262,43],"10825917",18,[409,407,43,247,410,43],"10825931","ris",[128,412,42,358,129,43],19,[175,31,42,352,176,43],[415,31,43,416,417,43],"10824839","commenter\u002Fcritical\u002Fdocs","nanodeath",[419,31,43,416,420,43],"10824843","mattzito",[422,31,43,210,68,43],"10825058",[],[425,429,434,439,443,447],{"id":426,"name":427,"points":428,"category":19},"10849460","Nodal",288,{"id":430,"name":431,"points":432,"category":433},"10830587","Saola",151,"dev_tools",{"id":435,"name":436,"points":437,"category":438},"10830799","friends",96,"productivity",{"id":440,"name":441,"points":442,"category":438},"10850811","GitBook Editor Beta",92,{"id":444,"name":445,"points":446,"category":19},"10832207","Searchkit",74,{"id":448,"name":449,"points":450,"category":451},"10849544","dataviztalk.blogspot.com",70,"data",false,"v2",{"id":455,"name":5,"line":5,"ai":452,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":456,"top":17,"kw":457,"maker":10,"domain":9,"tier":18,"attempts":43,"strip":458,"url":8,"mix":459,"praise":79,"objection":103,"sub":20},10824064,0.1,[23,24,25,26,27],"5051330015350111553000003051333555355010",[31,32,17,33],1794036539036]