11 ms·
John Carmack: Steps to Avoid Aliasing in VR
- SteveWatson 10y agounclosable popup
- esturk 10y agoCan't you just delete the element node.
- jaytaylor 10y agoI do this a lot of the time, too. And I believe it is ridiculous to have to do it... Yes, I'm grateful that browsers today make it easy to pwn the DOM. And it is disgusting that this is often necessary to avoid spammy website behavior. People who don't understand browser internals are forced to contend with popups and forced registration to unveil content indexed by search engines. Yep I'm looking at you Quora. Thanks for forcing my mother to register to read the text promised by her google query. Long live ExpertSexchange 3.0.
- patmcguire 10y agoYeah, the Google query text is an oft-broken contract. I presume there is some German word that describes the feeling of searching, seeing what you want right there, bolded in the result text, and doing a CMD-F to search for it on the page, only to hear the plaintive beep of 0/0 results.
- abstractbeliefs 10y agoIf this happens, try hitting the google cache of the same page!
- jaytaylor 10y agoYep, that's the next obvious step in the escalation game. It works.. unless sites prevent it from working. For example, check out this link: http://webcache.googleusercontent.com/search?q=cache:nBcUXRz2DJwJ:https://www.facebook.com/hnbot/timeline&num=1&hl=en&gl=us&strip=1&vwsrc=0 http://webcache.googleusercontent.com/search?q=cache:nBcUXRz... Unless you have JavaScript disabled, it will not let you view the cached page!
- tripzilch 10y agoEnglish doesn't have a word for Suchmaschineauswahlempfindungsfehlerschmerz? (disclosure: not actually German)
- natthub 10y agoThere is a "Not now" link to partially hide the popup.
- theoh 10y agoUpvoted you, but the substantive point surely is that Facebook is a bad web citizen for doing this. OTOH every sane person already has a (negative) opinion about Facebook and this is not the forum to air those.
- orsenthil 10y agoNot now, only places that pop-up at the bottom of the screen. You cannot dismiss it.
- arasmussen 10y agoDid you try logging in?
- jimjimjim 10y agoWhenever i find a site with a popup window over the content I just go to firefox's view menu and select No Page Style. If you are mostly reading text this can be amazingly useful: No popups/covers. Text to the width of the page. No low-contrast colors (just stark black white). I wonder, is there a way to configure it automatically for a list of domains?
- plaguuuuuu 10y agoRight click -> Inspect element -> Delete the offending div
- nine_k 10y agoNuke Anything automates this.
- jimjimjim 10y agoThanks i'll also take a look at these
- whamlastxmas 10y agouBlock Origin also has eyedropper tool to select elements to block, works pretty well.
- sp332 10y agoReadability mode works in Firefox and Edge (and probably Safari since they share code).
- deleted 10y ago[deleted]
- nighthawk454 10y agoPost content: In almost all of the public VR critiques I have made, I comment about aliasing. Aliasing is the technical term for when a signal is under sampled, and it shows up in many ways across graphics (and audio), but in VR this is seen most characteristically as "shimmering" imagery when you move your head around, even slightly. This doesn't need to happen! When you do everything right, the world feels rock solid as you look around. The photos in the Oculus 360 Photos app are properly filtered -- everything should ideally feel that solid. In an ideal world, this would be turned into a slick article with before-and-after looping animated GIFs of each point I am making, along with screenshots of which checkboxes you need to hit in Unity to do the various things. Maybe someone in devrel can find the time... All together in one place now, the formula for avoiding aliasing, from the most important: Generate mip maps for every texture being used, and set GL_LINEAR_MIPMAP_LINEAR filtering. This is easy, but missed by so many titles it makes me cringe. If you dynamically generate textures, there is a little more excuse for it, but glGenerateMipmap() is not a crazy thing to do every frame if necessary. Use MSAA for rendering. Not using MSAA should be an immediate fail for any app submission, but I still see some apps with full jaggy edges. We currently default to 4x MSAA on Mali and 2x MSAA on Adreno because there is a modest performance cost going to 4x there. We may want to go 4x everywhere, and it should certainly be the first knob turned to improve quality on a Qualcomm S7, long before considering an increase in eye buffer resolution. In general, using MSAA means you can't use a deferred rendering engine. You don't want to for performance reasons, anyway. On PC, you can get by throwing lots of resources at it, but not on mobile. Even 4x MSAA still leaves you with edges that have a bit of crawl, since it only gives you two bits of blending quality. For characters and the environment you just live with it, but for simple things like a floating UI panel, you can usually arrange to use alpha blending to get eight bits of blending quality, which is essentially perfect. Blending requires sorting, and ensuring a 0 alpha border around your images is a little harder than it first appears, since the size of a border gets halved with each mip level you descend. Depending on how shrunk down a piece of imagery may get, you may want to leave an eight or more pixel cleared alpha border around it. To avoid unexpected fringe colors around the graphics, make sure that the colors stay consistent all the way to the edge, even where the alpha channel is 0. It is very common to see blended graphics with a dark fringe around them because the texture went to 0 0 0 0 right at the outline, rather than just cutting it out in the alpha channel. Adding an alpha border also fixes the common problem of not getting CLAMP_TO_EDGE set properly on UI tiles, since if it fades to invisible at the edges, it doesn't matter if you are wrapping half a texel from the other side. Don't use techniques like alpha testing or anything with a discard in the fragment shader unless you are absolutely sure that the contribution to the frame buffer has reached zero before the pixels are discarded. The best case for the standard cutout uses is to use blending, but if the sorting isn't feasible, using ALPHA_FROM_COVERAGE is a middle ground. Avoid geometry that can alias. The classic case is things like power lines -- you can model a nice drooping catenary of thin little tubes or crossed ribbons, but as it recedes into the distance it will rapidly turn into a scattered, aliasing mess of pixels along the line with only the 1 or 2 bits of blending you get from MSAA. There are techniques for turning such things into blends, but the easiest thing to do is just avoid it in the design phase. Anything very thin should be considered carefully. Don't try to do accurate dynamic shadows on GearVR. Dynamic shadows are rarely aliasing free and high quality even on AAA PC titles, cutting the resolution by a factor of 16 and using a single sample so it runs reasonably performant on GearVR makes it hopeless. Go back to Quake 3 style and just blend a blurry blob underneath moving things, unless you really, really know what you are doing. Don't use specular highlights on bump maps. This is hard to get really right even with significant resources. Specular at the geometry level (still calculated in the fragment shader, not the vertex level!) is usually ok, and also a powerful stereoscopic cue. This applies to any graphics calculation done in shaders beyond just sampling a texture -- if it has any frequency component greater than the pixel rate (a clamp is infinite frequency!), there will be aliasing. Think very carefully before doing anything clever in a shader. Use gamma correct rendering. This is usually talked about in game dev circles as part of "physically based rendering", and it does matter for correct lighting calculations, but it isn't appreciated as widely that it matters for texture sampling and MSAA even when no lighting at all is done. For photos and other continuous tone images this barely matters at all, but for high contrast line art it is still important. The most critical high contrast line art is text. It is hard to ease into this, you need to convert your window, all textures, and any frame buffer objects you use too the correct sRGB formats. Some formats, like 4444, don't have an equivalent sRGB version, so it may involve going to a full 32 bit format. Avoid unshared vertexes. A model edge that abruptly changes between two surfaces has the same aliasing characteristics as a silhouette at the edge of a model; you only get the MSAA bits of blending. If textures are wrapped completely around a model, and all the vertex normals and other attributes are shared, you only get the edge effects along the "pelting lines" where you have no choice but to have unmatched texture coordinates. It costs geometry, so it isn't always advisable, but even seemingly hard edged things like a cube will look better if you have a small bevel with shared vertexes crossing all the edges, rather than a knife-sharp 90 degree angle. If a surface is using baked lighting, the geometry doesn't need normals, and you are fine wrapping around hard angles as long as the texture coordinates are shared. Trilinear filtering on textures is not what you ideally want -- it blends a too-aliased sample together with a too-blurry sample to try to limit the negatives of each. High contrast textures, like, say, the floor grates in Doom 3, or the white shutters in Tuscany, can still visibly alias even with trilinear. Reducing the contrast in the image by "prefiltering" it can fix the problem, or you can programmatically add an LOD bias. Once aliasing is under control, you can start looking at optimizing quality.
- sintaxi 10y agoIn an ideal world this article would not be posted on Facebook.
- asimilator 10y ago> To see more from John Carmack on Facebook, log in or create an account. Yes, it'd be nice if this didn't take up half the page.
- Alupis 10y ago> In an ideal world this article would not be posted on Facebook. I'm certain we can expect a lot more of this as Facebook cozies up closer and closer to Oculus and gang.
- bertil 10y ago> as Facebook cozies up closer and closer to Oculus and gang. My understanding is that Facebook has “geared up” Oculus: added a lot of staff. I would assume that a majority of engineers who are working on VR were originally Facebook hires; it’s certainly the case for things like back-end / scaling. It’s not the most visible part of the company, but when Mark says publicly that a project is a priority, that means that the team can have a lot of engineers if they need to.
- drcross 10y agoOculus job specs are published on the facebook website.
- Alupis 10y agoI was referencing blog posts that ought to be on a blog, not in a Facebook post. Just because someone has worked for Facebook, or currently works for Facebook, doesn't make posting these sorts of articles on Facebook ideal. Even Facebook knows this... which presumably is why they chose to use a traditional blog style site for their... blog posts[1]. [1] https://developers.facebook.com/blog/ https://developers.facebook.com/blog/
- deleted 10y ago[deleted]
- pipio21 10y agoCarmack: Some times you read HN. If you are reading this, please consider writing on a blog or something neutral. It is extremely disgusting for your readers to have to log in or else...half of your screen is occupied with spam. There is people out there that prefer not to report everything they read, when, where, how, how long to a big multinational associated to the US secret services.
- cmelbye 10y agoI think selling his company to Facebook has far wider reaching implications for privacy than where he hosts his blog, unfortunately.
- z3phyr 10y agoHis company? It's not his company.
- adventured 10y agoIt is a funny way to phrase that. If you own a meaningful stake in a business, do you call it your company? I think most people would have referred to it as Palmer's company. However, Carmack did have an ownership stake in Oculus.
- grigory 10y agoFirefox's built-in reading mode was great in this particular case. That page is pretty unusable otherwise :/
- munchbunny 10y ago"Extremely disgusting" sounds like an overreaction. "Not ideal" maybe, or "not helpful to those of us who don't want to read things in Facebook for privacy or security reasons". But "extremely disgusting" is over-exaggerating the importance of the choice of medium for a text post.
- alayne 10y ago
- bitmapbrother 10y agoGood article. Terrible reading experience.
- Raticide 10y agoCould Facebook make the page narrower please?
- pyronite 10y agoThe character count of a random sentence ("Don't try to do accurate dynamic shadows on GearVR. Dynamic shadows") puts it at 68 characters. The Rules of Typographical Style suggests 66 characters is considered ideal: http://webtypography.net/2.1.2 http://webtypography.net/2.1.2. This is possibly why their textual content is narrow. It's designed to make it more readable.
- CamperBob2 10y agoNot everyone agrees with the Rules of Typographical Style.
- Alupis 10y agoThe source you sited as stating 66 characters being "ideal", has an approximate average of 134 characters per line.
- jacobolus 10y agoHere’s roughly what it’s supposed to look like, http://i.imgur.com/yOndq70.png http://i.imgur.com/yOndq70.png Your browser window is just too wide. With such an oversized browser window, a substantial proportion of content on the web, perhaps the majority, is going to have an absurdly wide measure to the point of extreme illegibility. I highly recommend narrowing your window; as a general rule it will dramatically improve web typography. HTML/CSS technology are really bad at giving page authors easy control over precise text layout. If they make the CSS code short and use percentages, then everything will end up too wide in large browser windows, and too narrow in small browser windows. But if they use fixed widths or maximum widths, it’s easy to screw up and break the layout in some browsers. P.S. the author directly addresses your point in the linked page, did you read it? “From a typographical perspective, the most appropriate method is to set box width in ems (elastic layout) as it ensures the measure is always set to the typographer’s specification. Setting box width as a percentage (liquid layout) gives the typographer approximate control over measure but also allows the reader to adjust the layout to suit his or her comfort. This website has been designed with liquid layout to afford readers this control.”
- overcast 10y agoYou'd think with all of that money, Facebook could hire some typography/layout expertise. Horrendous.
- post_break 10y agoI remember reading that the Galaxy phones have trouble with pixel refresh rates. In that blacks can ghost because the nature of amoled.
- sp332 10y agoThe Rift and Vive also use AMOLED screens, so I don't think it's the pixel tech that's the issue. LEDs can turn on and off extremely fast. It's probably that the screen's electronics were made for power-sipping mobile devices running at most 60 FPS and not 90+ FPS gaming.
- cma 10y agoOLED is the issue. Look into the black smear problem on Oculus DK2 and how they had to half-way fix it by overdriving for a frame and then falling back. CV1 of the Rift headset is OLED and has the same issue. They have to run the panels at a notch above minimum brightness to work around it and as a result they lose out on true blacks. https://vrwiki.wikispaces.com/Black+smearing https://vrwiki.wikispaces.com/Black+smearing
- sp332 10y agoNone of those threads mention the Rift CV1, the Vive, or the Samsung Galaxy S6 or S7 (the ones that fit in the current Gear VR headsets). I tried the test image from this thread http://forum.xda-developers.com/showthread.php?t=2765793 http://forum.xda-developers.com/showthread.php?t=2765793 on my S6 and didn't see the issue. That thread and this one https://forums.oculus.com/community/discussion/10924/true-black-smearing-in-dk2 https://forums.oculus.com/community/discussion/10924/true-bl... say it's only an issue around areas where the screen is actually black, so keeping things very dark would seem to be worse?
- cma 10y agoI think I wasn't clear. It isn't a notch above minimum brightness as in running the panel very dim. It is a notch above minimum as in: minimum is pure black, and instead of every allowing pure black they set it to one notch higher, because pure black causes the smearing. It isn't an visible issue in Rift CV1 or Vive because they do that as a workaround.
- qwertyuiop924 10y agoNew project: A script that extracts public posts from Facebook for a given user, and formats them for consumption via RSS, or generates content/markdown to be served by Jekyll/Lektor. I should get on that...
- FlailFast 10y agoMight I humbly suggest a project name? FFSS. For F(acebook|uck)'s Sake Syndication. :)
- 8note 10y agoYou just wrote Facebook Fuck's Sake Syndication with 1 extra character, and with more reading difficulty!
- teach 10y agoLooks like you need to brush up on your regular expressions. > For F(acebook|uck)'s Sake Syndication The pipe (|) means or, so the regex is indicating that FFSS can stand for either: For Facebook's Sake Syndication, or For Fuck's Sake Syndication I thought it was clever, anyway.
- qwertyuiop924 10y agoI don't know about clever, but it's a common idiom on tech forums.
- 8note 10y agowhooooooops
- gnuarch 10y agoOnce upon a time Facebook had RSS/Atom feeds as in https://www.facebook.com/feeds/page.php?id=12183340&format=atom10 https://www.facebook.com/feeds/page.php?id=12183340&format=a...
- jd3 10y agothere is literally nothing wrong with jaggies or aliasing
- deleted 10y ago[deleted]
- Joof 10y agoAnyone here doing HTC vive dev? I'm really interested myself, but as a poor student I'll settle for hearing other's stories.
- kristianp 10y agoI guess you could try google cardboard?
- tgb 10y agoWhat's the problem with specular lighting on bump maps? I think I see what the issue can be, specifically, that when the bump map texture is smaller than 1-1 texels-to-pixels, then the normal chosen will 'shimmer' between the possible texel values. But can't one use mipmaps for bump maps as well to reduce this?
- Ono-Sendai 10y agoI think the problem with mimmapping bump maps is that it effectively smooths the surface, so you loose the bump effect.
- tgb 10y agoCan't the same be said for mipmapping textures? Losing detail at low LOD is expected, though I can't picture if bump maps lose 'more' perceptually.