{"guid":"2784103f-85b2-57ea-888c-e0aeb88f5772","title":"0x5f3759df - ein WTF für mehr FPS","subtitle":null,"slug":"gpn20-91-0x5f3759df-ein-wtf-fr-mehr-fps","link":"https://cfp.gulas.ch/gpn20/talk/DJHG7X/","description":"Im Source von Quake III Arena von 1999 findet sich ein auf den ersten Blick kurioser Algorithmus \u003ctt\u003eQ_rsqrt\u003c/tt\u003e mit \"\u003ci\u003eevil floating point bit level hacking\u003c/i\u003e\" zur schnellen und genauen Berechnung des Kehrwerts von Quadratwurzeln, der ein Grund für die schnelle Grafik des Spiels ist. Was für Prinzipien stecken hinter der Konstruktion des Verfahrens, und warum ist die Idee des Algorithmus über 20 Jahre später immer noch relevant?\n\nhttps://github.com/id-Software/Quake-III-Arena/blob/master/code/game/q_math.c\n\n\t/* Copyright (C) 1999-2005 Id Software, Inc., GPLv2 */\n\t     \n\tfloat Q_rsqrt( float number )\n\t{\n\t\tlong i;\n\t\tfloat x2, y;\n\t\tconst float threehalfs = 1.5F;\n\n\t\tx2 = number * 0.5F;\n\t\ty  = number;\n\t\ti  = * ( long * ) \u0026y;\t\t\t\t\t\t// evil floating point bit level hacking\n\t\ti  = 0x5f3759df - ( i \u003e\u003e 1 );               // what the fuck?\n\t\ty  = * ( float * ) \u0026i;\n\t\ty  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration\n\t //\ty  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed\n\t\n\t\treturn y;\n\t}","original_language":"deu","persons":["Sebastian Ritterbusch"],"tags":["gpn20","91","2022","Science","gulaschprogrammiernacht","gpn","entropia"],"view_count":467,"promoted":false,"date":"2022-05-20T16:15:00.000+02:00","release_date":"2022-05-20T00:00:00.000+02:00","updated_at":"2026-03-31T15:45:06.610+02:00","length":3297,"duration":3297,"thumb_url":"https://static.media.ccc.de/media/events/gpn/gpn20/91-2784103f-85b2-57ea-888c-e0aeb88f5772.jpg","poster_url":"https://static.media.ccc.de/media/events/gpn/gpn20/91-2784103f-85b2-57ea-888c-e0aeb88f5772_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/gpn/gpn20/91-2784103f-85b2-57ea-888c-e0aeb88f5772.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/gpn/gpn20/91-2784103f-85b2-57ea-888c-e0aeb88f5772.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/gpn20-91-0x5f3759df-ein-wtf-fr-mehr-fps","url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_title":"Gulaschprogrammiernacht 20","conference_url":"https://api.media.ccc.de/public/conferences/gpn20","related":[],"recordings":[{"size":154,"length":3297,"mime_type":"video/webm","language":"deu","filename":"gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-05-21T16:34:26.509+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/webm-sd/gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/59228","event_url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":428,"length":3297,"mime_type":"video/webm","language":"deu","filename":"gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-05-21T08:38:18.738+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/webm-hd/gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/59151","event_url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":32,"length":3289,"mime_type":"audio/opus","language":"deu","filename":"gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2022-05-21T05:32:03.646+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/opus/gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_opus.opus","url":"https://api.media.ccc.de/public/recordings/59146","event_url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":50,"length":3289,"mime_type":"audio/mpeg","language":"deu","filename":"gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2022-05-21T05:31:04.623+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/mp3/gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/59145","event_url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":99,"length":3297,"mime_type":"video/mp4","language":"deu","filename":"gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-05-20T22:53:06.712+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/h264-sd/gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_sd.mp4","url":"https://api.media.ccc.de/public/recordings/59092","event_url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":325,"length":3297,"mime_type":"video/mp4","language":"deu","filename":"gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-05-20T20:34:11.080+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/h264-hd/gpn20-91-deu-0x5f3759df_-_ein_WTF_fuer_mehr_FPS_hd.mp4","url":"https://api.media.ccc.de/public/recordings/59074","event_url":"https://api.media.ccc.de/public/events/2784103f-85b2-57ea-888c-e0aeb88f5772","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"}]}