[HN Gopher] Human Shader
       ___________________________________________________________________
        
       Human Shader
        
       Author : bpierre
       Score  : 230 points
       Date   : 2023-07-18 22:23 UTC (2 days ago)
        
 (HTM) web link (humanshader.com)
 (TXT) w3m dump (humanshader.com)
        
       | whalesalad wrote:
       | this is like amish folding@home
        
       | LectronPusher wrote:
       | This was fun, I forget sometimes how silly all our grade school
       | math worksheets used to be. I always had trouble showing my work
       | for simple additions and multiplication, it's a bit easier when
       | its a self motivated dunking on the GPUs.
       | 
       | It may take 4-5 days and 1000+ people, but it's definitely
       | created a greater sense of community than any faster rendering
       | system. I like looking over the different pixels and knowing that
       | they represent some nerd-sniped engineer like me.
        
         | jabbany wrote:
         | It's really interesting seeing the (what I assume are) error
         | pixels.
        
           | kens wrote:
           | Yes, I find it interesting to note the different types of
           | errors. There are some random errors, but many of the errors
           | seem to be repeated. It looks like a lot of people ended up
           | in the wrong code path, resulting in blue/white pixels in the
           | lower half, while fewer people made the reverse mistake
           | (yellow pixels in the upper half). There are a lot of purple
           | pixels in the upper right; I wonder what led many people to
           | the same mistake.
           | 
           | Another interesting thing is to try to reverse-engineer the
           | worksheet: section B is the sphere, section C is the ground,
           | and section D is the sky. But then there's the lighting
           | model, shadow, etc.
        
           | poly_morphis wrote:
           | All of the pixels were already taken by the time I tried, but
           | I did an "error" pixel (11, 26) just for my own pleasure.
           | 
           | Somehow I got RGB(255, 50, 194), which is different from the
           | value posted on the chart. Actually, I'm not sure how
           | originally they got 0, since G comes from R and B, which are
           | both positive, and the expression is multiplication and
           | addition.
        
           | cvoss wrote:
           | The author should implement an error correction system, where
           | 1) the result is withheld from the display until a second
           | corroborating calculation comes in, and 2) if there is
           | disagreement, request an arbitration from a third user whose
           | job is to pick which of the two is the best answer.
        
             | bee_rider wrote:
             | It is a bit odd; they specifically ask for the picture of
             | the worksheet, and say they'll check it. I wonder if the
             | just haven't gotten around to it yet. Automatic error
             | checking would be nice (IMO just let multiple people do
             | each pixel and take the most popular result).
        
               | kens wrote:
               | They ask for the worksheet to check that you're not
               | cheating. They don't check the pixel values. I think much
               | of the charm of the image is seeing the errors.
               | 
               | By the way, there's more going on in the shader algorithm
               | than you might expect. Here's an explanation of the
               | worksheet:                 u, v are coordinates relative
               | to the center of the image       h is radius from center,
               | squared       Section B generates the ball:       B3-8
               | generates the reflected color on the ball.       B9-11
               | applies the diffuse illumination to the ball.       B12
               | adds the illumination highlight.       Section C creates
               | the ground:       C5 puts a shadow directly under the
               | ball.       C13 is the cast shadow of the ball.
               | Section D creates the sky with a simple gradient
               | Section E converts the image from two-color to three-
               | color
        
               | PicassoCTs wrote:
               | Hello, my name is Inigo Quilez, you skilled my father,
               | prepare to draw half the shader on shadertoy :D
        
               | [deleted]
        
             | bagels wrote:
             | They already know the right answer for each pixel,
             | presumably though?
        
             | gregw134 wrote:
             | The errors (wrong colors) colors is the charming part to
             | me.
        
             | fdsakljvalkj wrote:
             | I don't know, if they were aiming for perfection you'd
             | think they'd just use a computer.
        
         | sb057 wrote:
         | I think something like this would actually make for a really
         | interesting 3rd grade class project, with each student
         | contributing a few pixels.
        
           | jabbany wrote:
           | Ah, I remember seeing some chinese summer math workbook
           | shared online where the answers to each problem could be
           | translated into a bit that could be plotted in a giant grid
           | on the last page.
           | 
           | When completed, it would show a QR code, that upon scanning
           | would mark completion of the workbook and show you the answer
           | key. The implicit idea being you didn't have to be perfect,
           | just good enough so the error-correction algorithm of QR
           | codes was enough to pick up the final image. (Probably extra
           | credit if you could figure out how to do as few problems as
           | needed and then use EC to still figure out the secret link)
        
             | mattsan wrote:
             | This is so genius - if I ever become a teacher I'm doing
             | this.
        
       | Synaesthesia wrote:
       | Quite enjoyed this, and it wasn't too much computation, about 10
       | minutes worth.
        
       | causality0 wrote:
       | If you like this you will enjoy decompressing Pokemon by hand:
       | 
       | https://youtu.be/aF1Yw_wu2cM
       | 
       | https://www.youtube.com/live/OBVwnUH8Eek?feature=share
        
       | starmole wrote:
       | Amazing experiment from the man who brought us shadertoy.
        
       | Kuinox wrote:
       | Now I want to see the results of one done by chatgpt.
        
       | agys wrote:
       | For the lazy: pick a pixel in the sky to skip to section D (less
       | calculations)...
        
         | ygra wrote:
         | You get a random pixel assigned, so you cannot choose.
        
       | FreshStart wrote:
       | And yet another task outsourced to the public, abusing human
       | brains for gfx calculations and hn post as api. Crypto mined the
       | matrix style.
        
       | barelyauser wrote:
       | I claimed a pixel and computed it using a calculator.
        
       | Arch-TK wrote:
       | People were too quick to claim so I wrote a hacky script to try
       | to auto-claim in a loop and then ended up with a PNG in my
       | terminal, beware, save the response to the request if you're
       | going to automate the claiming part.
       | 
       | Well I got another pixel anyway.
        
       | thelastparadise wrote:
       | What a great experiment. Math looked a bit daunting at first
       | (pixel 22,34) glance but it really wasn't bad. Took me about 4
       | minutes in total to do the math.
       | 
       | Highly recommended for anyone who wants a chill afternoon
       | challenge. And the best part is seeing the final image come
       | together.
        
       | fgeahfeaha wrote:
       | Next year the worksheet is just the rendering equation and a list
       | of vertices/lights/transforms
        
       | geon wrote:
       | A bit too much to ask from a user.
       | 
       | It could be split up into easier steps, like adding a pair of
       | 4-digit numbers or multiplying a pair of 1/2 digit numbers.
        
         | jamal-kumar wrote:
         | I mean yeah but it's rendering
         | 
         | Let it cook
        
       | webdevver wrote:
       | It feels like a missed opportunity to not show each pixel's
       | worksheet: It would be cool if you could click on each pixel, and
       | it opens a PDF scan of that persons calculations.
        
         | dahart wrote:
         | Sadly you can't do that on a site without having people post
         | very inappropriate things, so it would require a human
         | moderator, which I speculate makes it unlikely to happen.
        
           | [deleted]
        
           | mirkodrummer wrote:
           | It can be done. To submit a pixel you have to take a photo
           | proof of your calculations on paper, it's already "moderated"
        
             | dahart wrote:
             | Are you certain a human is inspecting the image? Or is this
             | "moderation" currently automated?
             | 
             | Yes obviously it "can" be done, I'm suggesting it won't for
             | long, because there's a big difference between submitting
             | something to the site mods versus submitting something that
             | is anonymously exposed to the public.
             | 
             | I'm saying this as the owner of a site where I made the
             | mistake of allowing crowd-sourced image content to be
             | anonymously served to others. It didn't take long before
             | not only was there NSFW content, but there was also illegal
             | content.
             | 
             | * edit OH BTW I only just noticed this site was created by
             | IQ, who has already dealt with this exact issue on
             | ShaderToy and had to restrict and remove user submitted
             | images due to abuse! The decision to not show people's
             | images is almost certainly intentional and by design.
        
             | quadrature wrote:
             | Interesting, how come there are obviously incorrect pixels
             | ?.
        
               | simplicio wrote:
               | Think they're just people making math mistakes (one of
               | the reasons why we don't usually implement shaders by
               | having people compute values by hand).
               | 
               | If you compare them to nearby "correct" pixels, they
               | usually just have one of the three RGB values that are
               | sharply different.
        
               | eat_veggies wrote:
               | the moderators are checking that the pixel was computed
               | by hand, not that it's correct
        
               | dahart wrote:
               | The page does actually say they want to see intermediate
               | results "so we can validate your work." (Edit that quote
               | has been removed now.)
               | 
               | But there's no promise that they will. The photo feature
               | may be more of an automated speed bump, a way to reduce
               | silly answers and pixel spam, and let people self-select,
               | than an active human moderation tool. Moderating is
               | boring and expensive in time and/or money, why would
               | anyone actually sift through thousands of hand-written
               | pages of arithmetic?
        
               | sb8244 wrote:
               | Validate is slightly vague here. I interpreted it as "so
               | we can validate your work [was done by hand]."
        
               | dahart wrote:
               | Fair enough, I guess it is open to interpretation. The
               | language on the page has changed now, the quote I posted
               | is no longer there.
        
               | [deleted]
        
       | 2023throwawayy wrote:
       | > Error: All pixels are claimed, please wait!
        
       | 3cats-in-a-coat wrote:
       | I see a missed opportunity to remove the math and instead give
       | people a prompt, and one pixel to shade, and then refine with
       | each next pass.
       | 
       | Human generative reverse-diffusion AI.
        
         | mft_ wrote:
         | Not dissimilar to /r/place[0] - which gets messy.
         | 
         | [0] https://new.reddit.com/r/place/?screenmode=preview
        
           | 3cats-in-a-coat wrote:
           | Generative AI would also be messy if:
           | 
           | 1. You have no prompt.
           | 
           | 2. You have 1 iteration.
           | 
           | Hence why I suggested prompt and multiple iterations. It's a
           | very subtle tweak, but in aggregate behavior, everything is
           | subtle and has huge effects.
        
       | vardump wrote:
       | That seems like a... lot of work.
       | 
       | Shouldn't have claimed a pixel.
        
         | M4v3R wrote:
         | It took me 10 minutes to do the whole computation by hand, so I
         | wouldn't say it's a LOT of work. At the same time I believe
         | this is also one the points of this experiment, to show how
         | much work goes into computing a single pixel value for a very
         | simple 3D scene which makes us appreciate more that our GPUs
         | can do this work billions of times per second.
        
           | zellyn wrote:
           | It's double the work if you skim the instructions too fast
           | and pick your own empty pixel and compute it, only to find
           | that you need to be assigned one!
        
           | [deleted]
        
       | chasing wrote:
       | Pretty soon even tasks like this will be done by computers.
        
       | atleastoptimal wrote:
       | Fun, but it would be interesting if on the worksheet there was an
       | explanation for each calculation
        
       | jheriko wrote:
       | [flagged]
        
       | cdelsolar wrote:
       | so someone can just write a script to generate the full image
       | right? since instructions are the same for each pixel. Would make
       | it easier to check your work..
       | 
       | edit: https://imgur.com/a/UO37L1b
        
         | fgeahfeaha wrote:
         | woah woah dude, spoilers!
        
       | ainiriand wrote:
       | How are they planning to get rid of errors?
        
         | LoganDark wrote:
         | by eliminating the pixels where the proof-of-work is incorrect
        
         | adamrezich wrote:
         | the final step in the worksheet provides an error correction
         | heuristic and procedure:
         | 
         | > Thanks a lot for being part of the Human Shader, go find your
         | pixel in the public canvas! Tip: if its color looks wrong to
         | you, feel free to review your calculations and submit again
         | with the same code!
        
           | ygra wrote:
           | By scrubbing through the duration I haven't found a single
           | error pixel that has been corrected, though. Which is a pity,
           | as they do stand out quite glaringly.
        
         | eerikkivistik wrote:
         | I suppose by using a non-human shader and comparing the results
         | :D
        
           | bmacho wrote:
           | I suppose they won't use a non-human shader, since it is the
           | whole point.
        
           | ainiriand wrote:
           | Well then why is showing so many mistakes? It makes the
           | experience worse.
        
         | Sharlin wrote:
         | A stochastic approach would work quite well. Have each pixel
         | computed by _n_ people and take the mode.
        
       | thih9 wrote:
       | 73% in 94h at the moment.
       | 
       | This is 0,000002157210402 FPS so far.
        
         | endominus wrote:
         | I'm sure that'll be fixed by release. You know what they say
         | about premature optimization.
        
       | m00dy wrote:
       | very interesting exercise,,
        
       | jovial_cavalier wrote:
       | I love this. It would be super cool if I could see other people's
       | worksheets, but the image hosting might be a nightmare
        
       | pjs_ wrote:
       | They could just use a computer to do this?
        
         | superb_dev wrote:
         | Sure but that's not the point?
        
         | Verdex wrote:
         | They are. Computer was an occupation filled by humans long
         | before it was mechanized.
        
       | shdon wrote:
       | I had a lot of fun doing this, and while doing the arithmetic,
       | figuring out what the shader algorithm is actually doing. Such a
       | great idea, turning internet users into the world's slowest and
       | most inaccurate GPU
        
       | Sharlin wrote:
       | This is a particularly fun exercise when you recall that the
       | original "computers" were people doing arithmetic, not at all
       | dissimilarly to what's done here, just with less parallelism.
       | Though they did at least have mechanical adders and multipliers!
        
       ___________________________________________________________________
       (page generated 2023-07-20 23:00 UTC)