祭零小白
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 友链

四元数和三维旋转(一)

由于使用欧拉角进行旋转时会存在万向锁的问题,同时,用欧拉角进行插值也不尽方便,而基于四元数的旋转既解决了万向锁的问题,又能非常方便地进行插值。本文将对在学习过程中遇到的四元数的定义、推导、性质、插值等问题进行总结归纳。 复数 我们先来简要讨论一下复数的一些性质以及它与 2D 旋转之间的关系,四元数的很多性质都与复数非常类似,所以理解复数的一些性质对理解四元数非常有帮助。 定义 任意一个复数 $z
2022-07-16
Computer Graphics
#Math

计算机图形学基础-介绍

图形领域(Graphics Areas) 建模(Modeling) 渲染(Rendering) 动画(Animation) 用户交互(User interaction) 虚拟现实(Virtual reality) 可视化(Visualization) 图像处理(Image processing) 三维扫描(Three-dimensional scanning) 计算摄影(Computationa
2022-07-05
Computer Graphics
#Fundamental of Computer Graphics

使用噪声

消融效果 **消融(dissolve)**效果常见于游戏中的角色死亡、地图烧毁等效果。在这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个物体都将消失不见。我们将学习如何在 Unity 中实现这种效果,并得到类似下图中的效果。 要实现上图中的效果,原理非常简单,概括来说就是噪声纹理+透明度测试。我们使用对噪声纹理采样的结果和某个控制消融程度的阈值比较,如果小于阈值,就使用 c
2022-04-23
Unity Shader
#Texture

非真实感渲染

尽管游戏渲染一般都是以**照相写实主义(photorealism)作为主要目标,但也有许多游戏使用了非真实感渲染(Non-Photorealistic Rendering,NPR)**的方法来渲染游戏画面。非真实感渲染的一个主要目标是,使用一些渲染方法使得画面达到和某些特殊的绘画风格相似的效果,例如卡通、水彩风格等。 卡通风格的渲染 卡通风格是游戏中常见的一种渲染风格。使用这种风格的游戏画面通常有
2022-04-16
Unity Shader
#Rendering

深度和法线纹理

获取深度和法线纹理 背后的原理 深度纹理实际上就是一张渲染纹理,只不过它里面存储的像素值不是颜色值,而是一个高精度的深度值。由于被存储在一张纹理中,深度纹理里的深度值范围是[0, 1],而且通常是非线性分布的。这些深度值来自于顶点变换后得到的归一化的设备坐标(Normalized Device Coordinates,NDC)。想要在屏幕上绘制一个模型,需要把模型顶点在顶点着色器中乘以 MVP 变
2022-03-21
Unity Shader
#Texture

屏幕后处理

建立一个基本的屏幕后处理脚本系统 屏幕后处理,通常指的是在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效。使用这种技术,可以为游戏画面添加更多的艺术效果,例如景深(Depth of Field)、运动模糊(Motion Blur)等。 因此,想要实现屏幕后处理的基础在于得到渲染后的屏幕图像,即抓取屏幕,而 Unity 为我们提供了这样一个方便的接口——OnRenderI
2022-03-04
Unity Shader
#Post Processing

动画效果

Unity Shader 中的内置变量(时间篇) 动画效果往往都是把时间添加到一些变量的计算中,以便在时间变化时画面也可以随之变化。Unity Shader 提供了一系列关于时间的内置变量来允许我们方便地在 Shader 中访问运行时间,实现各种动画效果。下表给出了这些内置的时间变量。 名称 类型 描述 _Time float4 t 是自该场景加载开始所经过的时间,4 个分量的值分别
2022-02-24
Unity Shader
#Animation

高级纹理(二)

渲染纹理 在之前的学习中,一个摄像机的渲染结果会输出到颜色缓冲中,并显示到我们的屏幕上。现代的 GPU 允许我们把整个三维场景渲染到一个中间缓冲中,即渲染目标纹理(Render Target Texture,RTT),而不是传统的帧缓冲或后备缓冲(back buffer)。与之相关的是多重渲染目标(Multiple Render Target,MRT),这种技术指的是 GPU 允许我们把场景同时渲
2022-02-23
Unity Shader
#Texture

高级纹理(一)

立方体纹理 在图形学中,**立方体纹理(Cubemap)是环境映射(Environment Mapping)**的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。 立方体纹理一共包含了 6 张图像,这些图像对应了一个立方体的 6 个面,立方体纹理的名称也由此而来。立方体的每个面表示沿着世界空间下的轴向(上、下、左、右、前、后)观察所得
2022-02-23
Unity Shader
#Texture

插值函数

线性插值函数 $$ lerp(y_1, y_2, weight) = y_1 + (y_2 - y_1) \times weight $$ 其中 $weight$ 是一个在 [0, 1] 区间的实数,倒不是因为取更大的值后这个函数就无定义了,而是因为取了更大的值,这个函数就失去了我们构造它的理由,另外,CG 会限制 $weight$ 的值在 [0, 1] 的范围内,超过这个范围会被留在边界 0 或
2022-02-20
Unity Shader
#Math
123

搜索

Hexo Fluid