<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Assignments on The Only Problem&#39;s Blog</title>
    <link>https://congyuxiaoyoudao.github.io/posts/assignments/</link>
    <description>Recent content in Assignments on The Only Problem&#39;s Blog</description>
    <generator>Hugo -- 0.157.0</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 16 Jun 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://congyuxiaoyoudao.github.io/posts/assignments/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Assignment 8. GAMES202 Homework 5</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-5/</link>
      <pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-5/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;202 系列完结撒花 ✿✿ヽ(°▽°)ノ✿！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x00-to-begin-with&#34;&gt;0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 部分课程内容回顾&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; GAMES202 作业 5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;👇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📺B 站视频：







  
  &lt;a href=&#34;https://www.bilibili.com/video/BV1YK4y1T7yY/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click&amp;amp;vd_source=b6584cebba3a7a1a34d2f60d63bdc868&#34;&gt;GAMES202-高质量实时渲染&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📦代码仓库：







  
  &lt;a href=&#34;https://github.com/congyuxiaoyoudao/GAMES202_Homework/tree/working&#34;&gt;congyuxiaoyoudao/GAMES202_Homework at working&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;







  
  &lt;a href=&#34;https://games-cn.org/forums/topic/zuoye5fabugonggao/&#34;&gt;作业5发布公告及场景下载&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📖







  
  &lt;a href=&#34;https://zhuanlan.zhihu.com/p/607012514&#34;&gt;GAMES202-作业5：实时光线追踪降噪&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;master 分支上是 202 全部作业汇总，working 分支用于提交代码。需要原始作业可下载 master 分支的包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x01-问题修复-troubleshooting&#34;&gt;0x01 问题修复 TroubleShooting&lt;/h2&gt;
&lt;p&gt;做作业时遇到一些出现问题的地方，这里一并提一下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运行 build.bat 后 build 目录下没有出现可执行文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ReadFloatImage&lt;/code&gt; 方法报错&lt;/li&gt;
&lt;li&gt;mathutil.h 中 &lt;code&gt;uint32_t&lt;/code&gt; was not declared in this scope&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;第一个问题纯属对 Cmake 不熟练，build.bat 提供的命令只是生成工程文件，要运行构建还需要如下命令（或者直接用 VS 等 IDE 运行）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里为了简化运行操作，新增了一个 run.bat：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;Denoise.exe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ..
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二个问题为路径错误，下载完场景后我的根目录文件结构如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 7. GAMES202 Homework 4</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-4/</link>
      <pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-4/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;好久不见！最近在忙别的工作，这几天难得有时间，赶紧把 202 系列作业做个收尾ε٩(๑&amp;gt; ₃ &amp;lt;)۶з！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x00-to-begin-with&#34;&gt;0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 部分课程内容回顾&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; GAMES202 作业 4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;👇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📺B 站视频：







  
  &lt;a href=&#34;https://www.bilibili.com/video/BV1YK4y1T7yY/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click&amp;amp;vd_source=b6584cebba3a7a1a34d2f60d63bdc868&#34;&gt;GAMES202-高质量实时渲染&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📦代码仓库：







  
  &lt;a href=&#34;https://github.com/congyuxiaoyoudao/GAMES202_Homework/tree/working&#34;&gt;congyuxiaoyoudao/GAMES202_Homework at working&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📃 







  
  &lt;a href=&#34;https://blog.selfshadow.com/publications/s2017-shading-course/imageworks/s2017_pbs_imageworks_slides_v2.pdf&#34;&gt;Revisiting Physically Based Shading at Imageworks&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;master 分支上是 202 全部作业汇总，working 分支用于提交代码。需要原始作业可下载 master 分支的包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x01-课程回顾-recap&#34;&gt;0x01 课程回顾 Recap&lt;/h2&gt;
&lt;h3 id=&#34;能量守恒的-bsdf-energy-preserving-bsdfs&#34;&gt;能量守恒的 BSDF Energy-Preserving BSDFs&lt;/h3&gt;
&lt;p&gt;Cook-Torrance 提出的微表面 BRDF 只考虑光线在表面经过一次弹射后出射到观察方向的能量，然而忽略了多次弹射最终出射到观察方向的能量，这就造成了能量损失。尤其是当材质的 roughness 较高时，G 项减小，多次弹射的比例增加，能量损失越严重。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Missing Energy of Microfacet BRDF, Revisiting Physically Based Shading at Imageworks, SIGGRAPH 2017&#34; loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%207.GAMES202HW4/202506151740381.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;2017 年 Kulla 和 Conty 受到 Disney Principle BRDF 的启发，提出了一种改进的方法，即通过引入一个能量补偿项，将多次弹射出射到观察方向的能量补充回来，就能近似地保持能量守恒。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 6. GAMES202 Homework 3</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-3/</link>
      <pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-3/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;HiZ 还在施工中……&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x00-to-begin-with&#34;&gt;0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 部分课程内容回顾&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; GAMES202 作业 3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;👇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📺B 站视频：







  
  &lt;a href=&#34;https://www.bilibili.com/video/BV1YK4y1T7yY/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click&amp;amp;vd_source=b6584cebba3a7a1a34d2f60d63bdc868&#34;&gt;GAMES202-高质量实时渲染&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📦代码仓库：







  
  &lt;a href=&#34;https://github.com/congyuxiaoyoudao/GAMES202_Homework/tree/working&#34;&gt;congyuxiaoyoudao/GAMES202_Homework at working&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;master 分支上是 202 全部作业汇总，working 分支用于提交代码。需要原始作业可下载 master 分支的包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x01-课程回顾-recap&#34;&gt;0x01 课程回顾 Recap&lt;/h2&gt;
&lt;p&gt;SSR（Screen Space Reflection）是一种基于屏幕空间的反射算法，也被应用于模拟全局光照。因为是屏幕空间的算法，不能且无需像传统全局光照算法那样需要获取场景的原始几何信息，而是只在当前相机的视野范围计算反射，所以效率相对较高，但也存在一些屏幕空间的 Artifacts。&lt;/p&gt;
&lt;p&gt;SSR 算法有两个假设：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;屏幕范围内的反射光，其反射源也同样来自屏幕空间的某个像素；&lt;/li&gt;
&lt;li&gt;所有被直接光照亮的物体（在屏幕空间中则表现为像素），都可以作为次级光源参与对反射的贡献；&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;SSR 对反射表面没有要求，即不仅能模拟镜面反射，还可以模拟各种粗糙度的反射&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&#34;重用屏幕空间信息 GAMES202&#34; loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%206.GAMES202HW3/202505192155513.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;SSR 算法的步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对每个需要计算反射的像素沿反射方向发射一条光线；&lt;/li&gt;
&lt;li&gt;沿光线方向步进在屏幕空间中查找深度缓冲并与场景求交；&lt;/li&gt;
&lt;li&gt;若有交点，则将交点颜色作为反射颜色添加到原始像素上；&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中最关键的步骤就是光线求交，最简单的方法就是 Linear RayMarching，光线每次行进一个固定的距离，每次行进后获取该位置的深度值再与场景深度进行比较，如果某次判断光线深度大于场景深度，则认为发生了相交。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;固定步长的光线步进 GAMES202&#34; loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%206.GAMES202HW3/202505192214607.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;当然这种方法的精细度很依赖光线步长，小的步长效果更好但消耗大，反之，更大的步长则可能导致光线“穿过”场景而误判相交，造成错误计算反射的情况。&lt;/p&gt;
&lt;p&gt;为了在提高精度的同时节省开销，研究人员又提出了一种动态步长的方法，即 Hierarchical ray trace。允许光线根据场景信息在行进期间选取不同的步长，例图中光线一开始至少可以以 7 倍的 gap 作为步长，之后再缩减到原始的步长。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;层级光线追踪 GAMES202&#34; loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%206.GAMES202HW3/202505192226586.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;说到实时渲染中的一些动态操作，几乎就离不开预处理。同样的，这种方法运行的前提是，光线需要知道行进的“最大安全距离”，即可以迈多大的步子而不与场景发生相交。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这里最大安全距离是类比 SDF 的说法，或者应该说当前层级规定的步长&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;一种实现它的方法是预先生成深度图的 Mip-Map，这里四个像素的最小值作为 Mip 生成的逻辑，具体原因涉及到比较的保号性：如果光线与上一级 Mip 都不相交（$D_{ray}&lt;D_{M_{i+1}}$），则其一定与下级不相交（$D_{ray}&lt;any_{4}\{D_{M_{i}}\}$ ）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 5. GAMES202 Homework 2</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-2/</link>
      <pubDate>Sat, 19 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-2/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;(∩^o^)⊃━☆ﾟ.*･｡&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x00-to-begin-with&#34;&gt;0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 部分课程内容回顾&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; GAMES202 作业 2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;👇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📺B 站视频：







  
  &lt;a href=&#34;https://www.bilibili.com/video/BV1YK4y1T7yY/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click&amp;amp;vd_source=b6584cebba3a7a1a34d2f60d63bdc868&#34;&gt;GAMES202-高质量实时渲染&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📦代码仓库：







  
  &lt;a href=&#34;https://github.com/congyuxiaoyoudao/GAMES202_Homework/tree/working&#34;&gt;congyuxiaoyoudao/GAMES202_Homework at working&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📃







  
  &lt;a href=&#34;https://dl.acm.org/doi/10.1145/15886.15902&#34;&gt;The rendering equation | ACM SIGGRAPH Computer Graphics&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📃







  
  &lt;a href=&#34;https://dl.acm.org/doi/10.1145/566654.566612&#34;&gt;Precomputed radiance transfer for real-time rendering in dynamic, low-frequency lighting environments | ACM Transactions on Graphics&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;master 分支上是 202 全部作业汇总，working 分支用于提交代码。需要原始作业可下载 master 分支的包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x01-前置准备-warm-up&#34;&gt;0x01 前置准备 Warm Up&lt;/h2&gt;
&lt;h3 id=&#34;渲染方程-render-equation&#34;&gt;渲染方程 Render Equation&lt;/h3&gt;
&lt;p&gt;James T. Kajiya（没错就是那个提出 Kajiya-Kay 头发着色模型的 Kajiya）在 1986 年提出了渲染方程（The Render Equation），原论文里长这样：&lt;/p&gt;
&lt;div&gt;$$
I(x,x&#39;)=g(x,x&#39;)\left[ \epsilon(x,x&#39;)+\int_{S}\rho(x,x&#39;,x&#39;&#39;)I(x&#39;,x&#39;&#39;)dx&#39;&#39; \right]
$$&lt;/div&gt;
&lt;p&gt;当然现在看得更舒服的形式长这样：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 4. GAMES202 Homework 1</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-1/</link>
      <pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-1/</guid>
      <description>&lt;hr&gt;
&lt;h2 id=&#34;-0x00-to-begin-with&#34;&gt;🚩 0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; GAMES202 作业 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;👇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📺 B 站视频：







  
  &lt;a href=&#34;https://www.bilibili.com/video/BV1YK4y1T7yY/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click&amp;amp;vd_source=b6584cebba3a7a1a34d2f60d63bdc868&#34;&gt;GAMES202-高质量实时渲染&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📦 代码仓库：







  
  &lt;a href=&#34;https://github.com/congyuxiaoyoudao/GAMES202_Homework/tree/working&#34;&gt;congyuxiaoyoudao/GAMES202_Homework at working&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;master 分支上是 202 全部作业汇总，working 分支用于提交代码。需要原始作业可下载 master 分支的包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x01-shadow-map&#34;&gt;0x01 Shadow Map&lt;/h2&gt;
&lt;p&gt;完成两个任务点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一个 Pass 以光源作为相机渲染一张 ShadowMap，需要为 Shader 传递正确的 &lt;code&gt;uLightMVP&lt;/code&gt; 矩阵；&lt;/li&gt;
&lt;li&gt;第二个 Pass 获取光源传递的统一变量 FBO （ShadowMap），需要比较当前 ShadingPoint 的深度值与 ShadowMap 上记录的深度值，得出可见性项与 Shading 结果相乘。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DirectionalLight.js 中，完善 &lt;code&gt;CalcLightMVP&lt;/code&gt; 函数：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%204.GAMES202HW1/202504151505787.png#center&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-glsl&#34; data-lang=&#34;glsl&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;c1&#34;&gt;// Model transform&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 2&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;mat4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;translate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;modelMatrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;modelMatrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;translate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 3&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;mat4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;modelMatrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;modelMatrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scale&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 4&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 5&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// View transform&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 6&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;mat4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lookAt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;viewMatrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lightPos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;focalPoint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lightUp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 7&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 8&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Projection transform&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt; 9&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;l&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;13&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.01&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;14&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// caution! Depth of far plane should be a bit more larger&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;400&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;16&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;17&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;mat4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ortho&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;projectionMatrix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;l&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;远平面需设置得稍微大一点，避免光源的视锥范围无法覆盖全部场景&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 3. GAMES202 Homework 0</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-0/</link>
      <pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/games202-homework-0/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;开个新坑，之前囫囵吞枣地过了一遍 202，现在忘得差不多了，该捡起来。正好给枯燥的生活增添一点色彩（？），最近比较忙但还是争取一周做一个作业&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-0x00-to-begin-with&#34;&gt;🚩 0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; GAMES202 作业 0&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;strong&gt;不&lt;/strong&gt;包含作业框架分析&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;👇：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📺 B 站视频：







  
  &lt;a href=&#34;https://www.bilibili.com/video/BV1YK4y1T7yY/?spm_id_from=333.337.top_right_bar_window_custom_collection.content.click&amp;amp;vd_source=b6584cebba3a7a1a34d2f60d63bdc868&#34;&gt;GAMES202-高质量实时渲染&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📦 代码仓库：







  
  &lt;a href=&#34;https://github.com/congyuxiaoyoudao/GAMES202_Homework/tree/working&#34;&gt;congyuxiaoyoudao/GAMES202_Homework at working&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;master 分支上是 202 全部作业汇总，working 分支用于提交代码。需要原始作业可下载 master 分支的包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;-0x01-configuration-环境配置&#34;&gt;⚙️ 0x01 Configuration 环境配置&lt;/h2&gt;
&lt;p&gt;选择使用 VSCode 插件搭建本地服务器，在扩展中搜索 Live Server，安装此插件。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%203.GAMES202HW0/202504072204421.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;在编辑 Html 代码窗口按 F1（或者右键）选择 &lt;strong&gt;Live Server: Open with Live Server&lt;/strong&gt;，随后会自动打开浏览器，导航至本地服务器端口，一切正常的话是下面这个效果：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://raw.gitmirror.com/congyuxiaoyoudao/Picgo-ImageBed/main/Assignments/Assignment%203.GAMES202HW0/202504072210368.png#center&#34;&gt;&lt;/p&gt;
&lt;p&gt;可以使用鼠标和右上角的控制面板进行一些简单的交互。&lt;/p&gt;
&lt;p&gt;如果遇到模型贴图加载不出来（只有 202 字样），可以选择多刷新几次。或者直接在加载脚本前预加载贴图，可以根治这个问题。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;rel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;preload&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;assets/mary/MC003_Kozakura_Mari.png&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;as&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;image/png&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;crossorigin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;-0x02-blinn-phong-shading-model&#34;&gt;🤔 0x02 Blinn-Phong Shading Model&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;没什么好说的，CV 工程师&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;使用-glsl-编写-shader&#34;&gt;&lt;strong&gt;使用 GLSL 编写 Shader&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;如果使用字符串的方式引入 Shader，就在 InternalShader.js 中加上：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 2. A Review of Realistic Water Waveform Simulation</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/a-review-of-realistic-water-waveform-simulation/</link>
      <pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/a-review-of-realistic-water-waveform-simulation/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本着虚心交流与接受批评的态度，把这篇用来“应付”学校作业的综述写作放上来，不吝赐教！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x00-to-begin-with&#34;&gt;0x00 To begin with&lt;/h2&gt;
&lt;p&gt;这篇文章将会包含以下内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 近年来水体波形模拟的主要方法分类介绍&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 现有文献的研究趋势分析及未来方向预测&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For reference&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📖 







  
  &lt;a href=&#34;https://zhuanlan.zhihu.com/p/95917609&#34;&gt;真实感水体渲染技术总结&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📖 







  
  &lt;a href=&#34;https://zhuanlan.zhihu.com/p/672738842&#34;&gt;九、流体模拟简述&lt;/a&gt;

&lt;/li&gt;
&lt;li&gt;📖 







  
  &lt;a href=&#34;https://zhuanlan.zhihu.com/p/21573239&#34;&gt;游戏中的实时水体模拟技术&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0x01-摘要&#34;&gt;0x01 摘要&lt;/h2&gt;
&lt;p&gt;真实感水体模拟因其高度仿真的视觉表现与广泛的应用领域成为计算机图形学的研究热点。本文回顾了近 50 年（1978-2025）来水体模拟的方法，具体而言，包括早期基于经验与统计的方法与参数化波列合成的方法，中期基于物理的数值模拟方法和波粒子方法，以及近年转向数据驱动的深度学习方法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键词&lt;/strong&gt;：流体模拟、波形模拟、深度学习、物理数值方法&lt;/p&gt;
&lt;p&gt;Realistic water simulation has emerged as a prominent research focus in computer graphics due to its highly realistic visual effects and broad application domains. This paper reviews the methods of water simulation over the past 50 years (1978–2025), specifically including early approaches based on empirical and statistical models, parametric wave synthesis methods, mid-term physics-based numerical simulation techniques and wave particle methods, as well as the recent shift toward data-driven deep learning approaches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Assignment 1. Analysis of WizMap Scalable Interactive Visualization</title>
      <link>https://congyuxiaoyoudao.github.io/posts/assignments/analysis-of-wizmap-scalable-interactive-visualization/</link>
      <pubDate>Fri, 21 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://congyuxiaoyoudao.github.io/posts/assignments/analysis-of-wizmap-scalable-interactive-visualization/</guid>
      <description>本文就原论文分析了交互式可视化工具 WizMap，探讨其如何通过创新的多尺度摘要技术解决大规模机器学习嵌入的可视化和解释难题，并介绍了其用户界面、应用场景及未来发展。</description>
    </item>
  </channel>
</rss>
