- 博客(37)
- 收藏
- 关注
原创 【GAMES202课程小结】:Lecture06 Real-time Enviroment Mapping(Precomputed Radiance Transfer)
本节内容一. 环境光中的阴影二. 前置知识 (1)Frequency and filtering (2)Basis function三. 实时的环境光 (1)Spherical Harmonics(SH : 球面谐波函数) (2)Prefiltered env.lighting (3)Precomputed Radiance Transfer(PRT) 作业二练习
2021-06-28 22:21:28
620
原创 【UE4 Material 101学习笔记】 :Lec08/10/11/12 视差贴图的应用/布料着色/体积冰效果/树叶摇动
视差贴图、布料着色、体积冰效果、树叶摇动效果
2021-04-09 22:03:46
967
原创 【GAMES202课程小结】:Lecture03 实时渲染中的阴影(1)
本节内容介绍Shadow Mapping基本知识使用PCF实现对阴影的抗锯齿PCSS实现软阴影
2021-04-07 22:22:01
665
原创 【UE4 风格化渲染练习】
前言前段时间看了大神关于非真实渲染的文章,《Real-Time Rendering 3rd》 提炼总结 (十) 第十一章 · 非真实感渲染(NPR)相关技术总结刚好最近在熟悉UE4,在官方课程推荐里看到了这门教程。https://learn.unrealengine.com/course/2721017b站上也有视频的搬运。https://www.bilibili.com/video/BV1KK4y177Ya?p=1这里用可莉的模型来做下练习。关于模型资源的获取和导入
2021-03-15 08:30:00
2174
原创 【UE4 Material 101学习笔记】 :Lec02/04/05/06 默认PBR/UV扭曲/序列帧播放/环境混合
默认PBR、UV扭曲、序列帧动画
2021-03-15 08:27:58
755
原创 【GAMES101 课程小结】:Lecture 15/16 RayTracing
引言这两节介绍基于物理的渲染(PBR)相关知识。介绍了辐射度量学,BRDF,渲染方程,路径追踪等有关概念。
2021-02-12 11:02:13
596
原创 【GAMES101 课程小结】:Lecture 21/22 动画与仿真
内容目录动画生成技术介绍单个粒子运动的模拟(1) Explicit Euler method(2) 数值解法的稳定性分析与改进刚体的模拟流体的模拟正文一. 动画中使用到的一些技术1. 动画的生成动画的生成一般是用一组静态的图片快速播放来实现。通常,我们称这些图片为序列帧。类似小时候玩的这种翻页小人书。视频来源https://www.bilibili.com/video/av60057208/通常视频需要达到 30 帧每秒,才不会有特别明显的卡顿。对于一些虚拟现实的场景,需
2021-02-02 00:39:47
684
原创 【GAMES101 课程小结】:Lecture 07/08/09 Shading
1. Z_buffering 深度测试2. 光照模型3. 着色频率4. 使用纹理贴图
2020-11-21 19:35:07
574
原创 《The Book of Shader》笔记 : 第七节 - 噪声与FBM -- 用噪声勾勒碧海蓝天
定义分形布朗运动FBM(Fractal Brown Motion),是1968年Mandelbrot和Ness两人提出的一种数学模型,它常用于描述自然界的山脉、云层、地形地貌以
2020-11-15 17:37:31
2407
4
原创 《Ray Tracing in One Weekend》笔记 - 【Chapter 9】:Dielectrics
Ray Tracing in One Weekend 笔记 - Chapter9:会发生折射的材质该小节中实现了表面会发生折射现象的材质。模型假设:1.文章在实现上做了一些简化,每当光线与该类材质物体表面发生碰撞,便在折射光线和反射光线之间做一次选择,仅生成一种光线。2.折射光线的生成需要满足折射定律。3. 全内反射:“又称全反射(total internal reflection,TIR),是一种光学现象。当光线从较高折射率的介质进入到较低折射率的介质时,如果入射角大于某一临界角θc(光线
2020-11-15 15:50:30
532
原创 《The Book of Shader》笔记 : 第六节 - 噪声入门小结
写在前面之前搜索云雾,火焰,水等效果的时候,噪声一词频繁出现,因而一直想搜索相关概念。现在终于到了这章节。这两节内容从随机数讲起,而后介绍了Value noise, Perlin noise,Simplex noise噪声纹理的生成。(预告:这章之后,理解了噪声与分形的有关概念,大概可以理解这张简单的二维云彩效果是如何生成的了。)
2020-11-15 15:36:29
936
原创 《Ray Tracing in One Weekend》笔记 - 【Chapter 8】镜面材质
本节中尝试将材质抽象为一个抽象类,而后在次基础上新增镜面反射材质,继而在场景中再添加两个不同材质的小球。
2020-11-11 22:20:21
593
原创 《Ray Tracing in One Weekend》笔记 - 【Chapter 7】:漫反射材质
本节介绍了漫反射材质,以及建立该类材质模型的一种简单方法,用于在漫反射材质表面生成反射光线。
2020-11-10 08:28:40
646
原创 《Ray Tracing in One Weekend》笔记 - 【Chapter 6】:反走样处理
在之前的操作中,只对每个像素点的(0,0)的位置做了一次采样,并用这个点的颜色值代表了整个像素的颜色,因而会有较明显的锯齿感。本节中,对一个像素点的不同位置进行多次采样,对这些采样值取平均操作,从而获得最后代表该像素点的颜色值。该方法也就是常说的MSAA方方法,书中采用的采样方法是对一个像素点的不同位置进行随机采样。
2020-11-09 00:36:09
531
原创 【GAMES101 课程小结】:Lecture 05/06 光栅化,反走样
1. Canonical Cube to Screen2. 光栅化一个三角形3. Antialiasing(反走样,抗锯齿)4. Z-Buffering
2020-11-08 23:24:35
569
原创 【GAMES101 课程小结】:Lecture 17/18 材质相关
前言这两节中介绍了与材质相关话题。17节中提到了几种不同材质的效果,以及与光线交互时的处理,并在中间穿插提到了反射定律,折射定律,菲涅耳项,BRDF等概念。18节中对渲染前沿的一些概念,做了一些介绍。
2020-11-08 16:50:52
597
原创 【GAMES101 课程小结】:Lecture 02/03 线代基础与二维空间中的变换
GAMES前几节的内容相对基础,更多的是对大学所学线代知识的一个复习梳理,这里整合为一个章节。
2020-11-07 11:35:04
570
原创 《The Book of Shader》笔记 :第五节 - Pattern 图案
前言本节是算法绘图的最后一节,介绍了是如何运用简单图形,有规律地重复排布生成图案。
2020-11-06 19:16:51
802
原创 《The Book of Shader》笔记 : 第四节 - Shader中实现位移、旋转、缩放
本节介绍了如何让画面中的图形进行位移,旋转缩放的操作。相比前一节,这节的内容似乎容易些,使用了一些大学高等代数中基本的矩阵运算。
2020-11-05 08:42:32
825
原创 《The Book of Shader》笔记 : 第三节 - Shader绘制简单图形
前言本节示例代码中介绍了如何画出一个矩形,圆形。以及利用极坐标的思想画出简单多边形。
2020-11-03 23:46:23
1193
原创 《Ray Tracing in One Weekend》笔记 - 【Chapter 5】:Surface normals and multiple objects
Chapter 5:利用法向量对小球表面进行着色;在场景总中构建多个球本节大致可分为两个模块内容将球体表面的法向量,以着色形式显示到小球表面。定义了球体类,方便在场景中创建多个小球。另外定义了抽象类hitable,帮助检测场景中物体与光线碰撞情况。1.将法向量值映射到小球表面上注: 代码中将hit_sphere 函数的返回值修改为float型float hit_sphere(const vec3& center, float radius, const ray& r) {
2020-11-03 22:24:15
554
原创 《Ray Tracing in One Weekend》笔记 - 【Chapter 4】: Adding a sphere
本节中将在屏幕上画出一个小球。利用球体的表达式与光线表达式,建立方程组,继而求解出光线与小球表面的交点位置。
2020-11-03 08:38:50
510
原创 《Ray Tracing in One Weekend》 笔记 - 【Chapter 3】: Rays,a simple camera,and background
本节中实现了通过光源向背景投射光线的效果,借助光线对画布进行着色。
2020-11-02 22:47:48
519
原创 《Ray Tracing in One Weekend》 笔记 - 【Chapter 2】: The vec3 class
本节里实现了一个基础的3维向量类,包括向量的加减点乘,叉乘等基本运算,以支持后面章节中各种向量运算的需求。
2020-11-02 08:46:45
560
原创 《Ray Tracing in One Weekend》 笔记 - 【Chapter 1】: Output an image
本节中简单介绍了一种方便代码输出的图片格式ppm,为后面查看各种实现的效果打了个基础。(虽然要看这种格式的文图片稍微有些不方便,有时间查查有没有什么方式可以直接将生成的图片转成jpg或其他可以直接查看的格式)
2020-11-02 08:30:50
516
原创 C++:Inline 内联函数小结
为解决代码中频繁调用小函数,消耗大量栈空间的问题,因而引入修饰符inline。运行速度比常规函数稍快,但以代码“膨胀为代价”函数内联,节约的是处理函数调用机制的时长。若函数执行时间短,函数内联的效益较高,反之效益降低使用限制:(1)不可递归使用(2)函数体较大的时候不适合使用(3)必须和函数定义放在一起才能成为内联,仅放在函数声明前不起任何作用适用场景:(1)类似:inline double squre(x) {return x * x;}这样一行就可实现的简短函数(2)类的成员函数
2020-10-30 22:09:18
508
原创 《The Book of Shader》笔记:前言&&VSCode中搭建glsl编写环境
前言了解到这本书,是源于这篇文章。https://zhuanlan.zhihu.com/p/95943444加上最近恰好也想加深下对shader的理解,干脆先挖个坑,记录下后面读这本书的笔记。一.环境搭建首先是练习环境的搭建,先前刚搭建好了 vscode 练习glsl的相关环境。VSCode + shadertoy插件,安装起来很快。具体好像是参考的这篇文章https://panda1234lee.blog.csdn.net/article/details/104456475另外也看到过
2020-10-28 00:59:48
1608
原创 C++笔记:const关键字
C++笔记:const关键字在C++中用来修饰内置类型变量(int,float,char 巴拉巴拉之类),自定义对象,成员函数, 返回值,函数参数。一.修饰普通变量const int a = 7; int b = a; // 正确a = 8; // 错误,不能改变当一个变量被定义为const 类型常量,便不可再次对其赋值。直接赋值,编译器会报错。通过指针类型变量赋值会导致其他意料之外的情况,如下面这段代码。#include<iostream> using na
2020-10-26 23:05:05
583
原创 C++笔记 : 虚函数,纯虚函数,抽象类
C++:虚函数,纯虚函数,抽象类1.虚函数:被virtual 关键字修饰的成员函数。作用是实现成员函数的动态重载。// --------- 示例 -------- //#include <iostream>using namespace std;class A {public: void print() { cout << "this is A" << endl; }};class B :public A {public: void pri
2020-10-25 10:32:38
547
原创 【GAMES101 课程小结】:Lecture 13 Ray Tracing
引言.引入光线追踪的目的1. 光栅化不易实现一些全局的效果(1)阴影(2)漫反射效果(3)场景中的间接光照2. 光栅化速度快,但真实感相对较差光线追踪更符合物理规律,但计算量大。一.基础光线追踪算法1. 模型假设(1)光线沿直线传播(2)光线不会发生碰撞(两道光线交叉后,仍分别沿原方向传播)(3)光路具有可逆性(光线从光源发出,经过一系列反射折射损耗,最终进入人眼)2. 基本思路(1)沿“视点” → “屏幕上的像素” 方向往场景中做射线。(2)若而已eye ray 与场景中的
2020-10-18 11:43:51
874
原创 数据结构笔记: 二叉树的前中后序遍历(C++实现)
中序遍历中序遍历,在遍历过程中先访问二叉树的左节点,而后访问根节点,最后访问右节点。算法实现(C++实现)1. 函数递归方法1.1 代码class Solution {public: void inorder(TreeNode* node, vector<int>& res) { if (node == nullptr) { return; } inorder(node->left, res); res.push_back(node->v
2020-10-18 08:31:36
773
原创 LC 打开转盘锁(C++ 实现)
问题描述你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可
2020-10-10 08:35:26
739
原创 LC 岛屿数量(C++ 实现)
问题描述给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围示例1. 输入[[‘1’,‘1’,‘1’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘0’,‘0’]]输出: 12. 输入[[‘1’,‘1’,‘0’,‘0’,‘0’],[‘1’,
2020-10-08 00:22:08
819
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人