48k words 44 mins.

# Chapter 6 Type and Member Basics # The Different Kinds of Type Members A type can define zero or more of the following kinds of members: Constants A constant is a symbol that identifies a never-changing data value. These symbols are typically used to make code more readable and maintainable....
25k words 23 mins.

# Ray Tracing(光线追踪) 在开始讲光线追踪之前,我们先来讲讲之前遗漏的一个话题,就是在光栅化里面是如何生成阴影的。 我们之前提到着色的时候,知道了着色是一种局部的现象,我们只需要考虑着色点自己、光源以及摄像机,要想算出它的着色,完全不用考虑其它的物体,甚至不考虑这个物体的其它部分对这个着色点的影响。但是事实上这样做是不对的,如果有物体挡在 Shading point 和光源之间,那么光线就到达不了 Shading...
13k words 12 mins.

# Shading(着色) 当我们把所有的三角形都画在了屏幕上之后,都变成了不同的像素之后,这些像素的颜色都应该是什么呢?这便是着色的内容。 # Shading:Definition(着色的定义) # A Simple Shading Model (Blinn-Phong Reflectance...
27k words 25 mins.

# Chapter 4 Type Fundamentals # 4.1 All Types Are Derived from System.Object The runtime requires every type to ultimately be derived from the System.Object type. This means that the following two type definitions are identical. // Implicitly derived from Objectclass Employee {...
3.2k words 3 mins.

# Rasterization(光栅化) # Triangles - Fundamental Shape Primitives 三角形是最最基础的多边形,任何其他的多边形都可以拆成三角形。三角形还有一些独特的性质。例如,三角形永远都在一个平面内;三角形的内外定义的很清楚,可以用向量的叉积来判断一个点是不是在三角形内;根据重心坐标我们很容易进行插值。 接下来我们要做的就是判断一个像素和三角形之间的位置关系。 # A Simple Approach:...
11k words 10 mins.

# 渲染流水线 渲染流水线的最终目的在于生成或者说是渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果。 # 综述 实际上,Shader 仅仅是渲染流水线中的一个环节,想要让我们的 Shader 发挥出它的作用,我们就需要知道它在渲染流水线中扮演了怎样的角色。 渲染流水线的工作任务在于由一个三维场景出发、生成(或者说渲染)一张二维图像。换句话说,计算机需要从一系列的顶点数据、纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。而这个工作通常是由 CPU 和 GPU 共同完成的。 《Real-Time Rendering,Third Edition》一书中将一个渲染流程分成 3...
2.5k words 2 mins.

# Transformation(变换) # 二维变换 # 缩放矩阵(Scale Matrix) # 反射矩阵(Reflection Matrix) # 切变矩阵(Shear Matrix) # 旋转矩阵(Rotation Matrix) # 线性变换 线性变换的一种描述是如果变换可以写成用一个矩阵乘以输入的坐标得到输出的坐标,那么我们就称这种变换为线性变换。 # 齐次坐标 为什么要提到其次坐标这个东西?首先让我们看看平移变换。 #...