cinera_handmade.network/cmuratori/hero/code/code550.hmml

70 lines
5.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[video output=day550 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="SIMD Raycast Point and Normal Computations" vod_platform=youtube id=BzrMiEVa3gs annotator=Miblo]
[0:00][Recap and set the stage for the day][:speech]
[2:14][Putting six-rayed light probes into the :lighting system][:speech]
[3:16][Our old box-intersection testing in RayCast()][:lighting :speech]
[4:54][Our box :lighting primitives][:run]
[7:00][Our old box-intersection testing and reporting in RayCast(), continued][:lighting :speech]
[10:31][Ways of Getting Intersection Normals for AABB][:blackboard :lighting]
[14:31][Consider storing the BoxMin and BoxMax in lighting_box][:lighting]
[15:39][Getting an Approximate Normal from an Ellipsoid-like AABB][:blackboard :lighting]
[18:50][Getting Accurate AABB Intersection Normals][:blackboard :lighting]
[24:52][Set up RayCast() to compute the intersection normal for a unit cube lighting_box][:lighting]
[29:39][Could we compute our intersection normal more efficiently?][:blackboard :lighting]
[32:26][Consider the cost of our intersection normal computation in RayCast()][:lighting :performance :research]
[34:31][Computing the intersection normal only of box hits, saving the box scale and centre][:blackboard :lighting]
[37:33][Let RayCast() only set the box centre and scale, making ComputeLightPropagation() compute the intersection normal][:lighting]
[40:17][The cost and availability of _mm_blend_ps[ref
site=Intel
page="Intel Intrinsics Guide"
url=https://software.intel.com/sites/landingpage/IntrinsicsGuide/][ref
site=Valve
page="Steam Hardware & Software Survey"
url=https://store.steampowered.com/hwsurvey][ref
site=uops.info
url=https://uops.info/table.html]][:performance :research]
[44:25][Make RayCast() select the RefColor and at the end compute the Result, augmenting raycast_result with P, Normal and RefColor[ref
site=Intel
page="Intel Intrinsics Guide"
url=https://software.intel.com/sites/landingpage/IntrinsicsGuide/]][:lighting]
[57:37][Introduce SignBitFrom()][:mathematics]
[59:37][Finish making RayCast() set the HitNormal from Masks][:lighting]
[1:07:49][Clean up compile errors, making RayCast() compute BoxRadius and its approximate inverse, introducing ApproxOneOver()[ref
site=Intel
page="Intel Intrinsics Guide"
url=https://software.intel.com/sites/landingpage/IntrinsicsGuide/]][:lighting :mathematics :performance]
[1:22:33][Consider the potential speed improvement of RayCast()][:lighting :performance :speech]
[1:23:39][Determine to make ComputeLightPropagation() operate wide][:lighting :speech]
[1:24:52][Lament SIMD's lack of fetching instructions][:speech]
[1:26:09][Consider how to make our :lighting operate wide][:speech]
[1:30:08][Q&A][:speech]
[1:31:12][@ellesar1][Q: Origin, BoxCenter, and HitP are on the same line. Why do we use HitP Center for the normal computation, and not Origin Center? The direction should be the same. Problems could arise if origin is within the box (esp if origin = center), but I don't think that's a use case. I understand the HitP is useful for other purposes, just wondering if it's actually necessary for the normals computation][:lighting]
[1:32:37][@uplinkcoder][Q: I've just added the C++ standard reference to the issue type-name member-name, issue.[ref
site=GitHub
page="HandmadeHero / cpp / Linux Problems"
url=https://github.com/HandmadeHero/cpp/issues/109] I agree it's a stupid warning, but there seems to be no way to disable it in GCC][:language]
[1:33:06][@ellesar1][Ahh, thanks for explaining it once more. I get it now][:lighting]
[1:35:22][@rooctag][Q: Why are the light probes cubes and not spheres?][:lighting]
[1:36:29][@uplinkcoder][Q: GCC is following the standard. It's just that the standard is stupid[ref
site=GitHub
page="HandmadeHero / cpp / Linux Problems"
url=https://github.com/HandmadeHero/cpp/issues/109]][:language]
[1:45:33][@mr4thdimention][The good idea in C++ was "Let's start with C"][:language]
[1:46:12][@maliusarth][Q: Should I work on a game engine in C / C++ or just put out games in Unity / Unreal until Jai comes out?][:language]
[1:49:14][@bulmanator][Q: Is there any reading material you recommend for more serious real-time :lighting like this (Papers, books, even blog posts etc.)? I've done simple diffuse lighting before but nothing beyond that[ref
site=SIGGRAPH
url=https://www.siggraph.org/]]
[1:51:00][@saidwho12][The PBR book is good book[ref
site="Matt Pharr and Greg Humphreys"
page="Physically Based Rendering / 8.4 Microfacet Models"
url=http://www.pbr-book.org/3ed-2018/Reflection_Models/Microfacet_Models.html]]
[1:53:23][@oliverthebestcat][What do you think is a good idea in games? I feel like I tune into so many programmer streams telling me this and that is terrible, but not really giving me another option. I don't want the answer to be "wait for Jai"! What is good today?][:language]
[1:55:21][@sapper123][Jai demo on Macros is in an hour and a half. Just a reminder for chat][:language]
[1:56:53][@oliverthebestcat][But it's pretty difficult to listen to you or [@naysayer88 Jon]'s stream when it's all just "this is bad, that is bad". But hey, maybe it's true?][:language]
[1:58:02][Shut down, with a plug of [@naysayer88 Jon]'s stream[ref
site=Twitch
page=Naysayer88
url=https://twitch.tv/naysayer88] and Handmade Seattle[ref
site="Handmade Seattle"
url=https://www.handmade-seattle.com/]][:speech]
[/video]