{"id":582,"date":"2024-09-14T18:45:21","date_gmt":"2024-09-14T16:45:21","guid":{"rendered":"https:\/\/heikkili.kapsi.fi\/blog\/?p=582"},"modified":"2024-09-14T18:45:23","modified_gmt":"2024-09-14T16:45:23","slug":"cse168-notes-3-ray-casting-shading-recursive","status":"publish","type":"post","link":"http:\/\/heikkili.kapsi.fi\/blog\/?p=582","title":{"rendered":"CSE168 notes 3, ray  casting, shading, recursive"},"content":{"rendered":"\n<ul class=\"wp-block-list\">\n<li>camera Ray Casting<\/li>\n\n\n\n<li>Ray-object intersections<\/li>\n\n\n\n<li>Ray-tracing transformed objects<\/li>\n\n\n\n<li>Lighting calculations<\/li>\n\n\n\n<li>Recursive ray tracing<\/li>\n<\/ul>\n\n\n\n<p><strong>camera ray casting<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>finding ray direction for given pixel i and j<\/li>\n\n\n\n<li>ray has origin and direction<\/li>\n\n\n\n<li>find direction given camera params and i and j<\/li>\n\n\n\n<li>first construct coordinate frame<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"376\" height=\"401\" data-attachment-id=\"583\" data-permalink=\"http:\/\/heikkili.kapsi.fi\/blog\/?attachment_id=583\" data-orig-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?fit=376%2C401\" data-orig-size=\"376,401\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?fit=281%2C300\" data-large-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?fit=376%2C401\" tabindex=\"0\" role=\"button\" src=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?resize=376%2C401&#038;ssl=1\" alt=\"\" class=\"wp-image-583\" style=\"width:144px;height:auto\" srcset=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?w=376 376w, https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-1.png?resize=281%2C300 281w\" sizes=\"(max-width: 376px) 100vw, 376px\" \/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>a is given by eye &#8211; center<\/li>\n\n\n\n<li>b is the up vector<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>camera direction is w or -w<\/li>\n\n\n\n<li>ray also moves certain direction along the u and v<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"462\" height=\"60\" data-attachment-id=\"584\" data-permalink=\"http:\/\/heikkili.kapsi.fi\/blog\/?attachment_id=584\" data-orig-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?fit=462%2C60\" data-orig-size=\"462,60\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?fit=300%2C39\" data-large-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?fit=462%2C60\" tabindex=\"0\" role=\"button\" src=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?resize=462%2C60&#038;ssl=1\" alt=\"\" class=\"wp-image-584\" srcset=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?w=462 462w, https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-2.png?resize=300%2C39 300w\" sizes=\"(max-width: 462px) 100vw, 462px\" \/><\/a><\/figure>\n\n\n\n<p>from this get the <strong>ray<\/strong> :<\/p>\n\n\n<img decoding=\"async\" src=\"http:\/\/s0.wp.com\/latex.php?latex=%5Cvec%7Br%7D+%3D+%5Cvec%7Beye%7D+%2B+%5Cfrac%7B%5Calpha+%5Cvec%7Bu%7D+%2B+%5Cbeta+%5Cvec%7Bv%7D+-+%5Cvec%7Bw%7D%7D%7B%5Cleft%7C+%5Calpha+%5Cvec%7Bu%7D+%2B+%5Cbeta+%5Cvec%7Bv%7D+-+%5Cvec%7Bw%7D+%5Cright%7C%7D+t&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;vec{r} = &#92;vec{eye} + &#92;frac{&#92;alpha &#92;vec{u} + &#92;beta &#92;vec{v} - &#92;vec{w}}{&#92;left| &#92;alpha &#92;vec{u} + &#92;beta &#92;vec{v} - &#92;vec{w} &#92;right|} t\" class=\"latex\" \/>\n\n\n\n<p><strong>Shading Model<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"520\" height=\"216\" data-attachment-id=\"593\" data-permalink=\"http:\/\/heikkili.kapsi.fi\/blog\/?attachment_id=593\" data-orig-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?fit=520%2C216\" data-orig-size=\"520,216\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?fit=300%2C125\" data-large-file=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?fit=520%2C216\" tabindex=\"0\" role=\"button\" src=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?resize=520%2C216&#038;ssl=1\" alt=\"\" class=\"wp-image-593\" srcset=\"https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?w=520 520w, https:\/\/i0.wp.com\/heikkili.kapsi.fi\/blog\/wp-content\/uploads\/2024\/09\/image-3.png?resize=300%2C125 300w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Recursive Ray Tracing<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">For each pixel <br>  trace primary ray, find intersection<br>  trace secondary shadow ray to all lights<br>    - color = visible ? illmodel : 0<br>  trace reflected ray<br>    - color += reflectivity * color of reflected ray (recursion)<br><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>camera ray casting from this get the ray : Shading Model Recursive Ray Tracing For each pixel trace primary ray, find intersection trace secondary shadow ray to all lights &#8211; color = visible ? illmodel : 0 trace reflected ray &#8211; color += reflectivity * color of reflected ray (recursion)<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6,43,7,1],"tags":[4,10,42,11],"class_list":["post-582","post","type-post","status-publish","format-standard","hentry","category-computer-graphics","category-cse168","category-raytracing","category-uncategorized","tag-c","tag-computer-graphics","tag-cse168","tag-ray-tracing"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7k3DT-9o","_links":{"self":[{"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=\/wp\/v2\/posts\/582"}],"collection":[{"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=582"}],"version-history":[{"count":10,"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=\/wp\/v2\/posts\/582\/revisions"}],"predecessor-version":[{"id":612,"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=\/wp\/v2\/posts\/582\/revisions\/612"}],"wp:attachment":[{"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=582"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/heikkili.kapsi.fi\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}