05 2024 档案
摘要:tags: - raytrace dielectric 水、玻璃、钻石等透明材料都是电介质。当光线照射到它们身上时,它会分裂成反射光线和折射(透射)光线。我们将通过在反射和折射之间随机选择来处理这个问题,每次相互作用只产生一个散射射线。 折射程度 : 是根据两个介质折射率的差值决定的。 Refrac
阅读全文
摘要:tags: - games101 Physically Based Rendering: From Theory to Implementation (pbr-book.org) advanced light transport 有/无偏的光线传播方法 双向路径追踪 这里主要的光照为间接光 不是直接
阅读全文
摘要:tags: - games101 实现 rasterize_triangle 发现贴图的理解 https://blog.csdn.net/qq_41835314/article/details/124845177?csdn_share_tail={"type"%3A"blog"%2C"rType"%
阅读全文
摘要:tags: - overview gameplay xxx dosc UI shader gameplay 框架 video 介绍 video
阅读全文
摘要:tags: - games101 wsl 环境配置 必要的库 sudo apt install g++ gdb cmake sudo apt install libopencv-dev libeigen3-dev opencv 头文件 { "configurations": [ { "name":
阅读全文
摘要:tags: - games101 简单介绍和资源列表 https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 线代 vector -- 向量 表示 $\vec{a}$ and $\mathbf{a}$ and $\vec{AB} = B -
阅读全文
摘要:tags: - games101 2D point = $(x,y,1)^T$ 2D vector = $(x,y,0)^T$ 平移不变性 transform translation Affine transformner 逆变换 就是逆矩阵 变换的组合 矩阵的乘法 变换的分解 变换到中心 旋转 变
阅读全文
摘要:tags: - games101 rasterize == drawing onto the screen color = (red, green, blue) pixel indices are from (0,0) to (width-1, height-1) pixel (x,y) is ce
阅读全文
摘要:tags: - games101 shader 对不同物体应用不同的材质 定义: shading != shadow diffuse reflection 漫反射 光照角度不同,则反射程度也不同 于此同时物体离光源越远,反射程度越低 高光项 镜面反射和视线比较接近的时候 使用半程向量计算高光 注:
阅读全文
摘要:tags: - games101 implicit -- 隐式几何 explicit -- 显示几何 implicit 点不需要知道位置,但是可以用点之间的关系表示 (按照类别归类) E.g. all points in 3D, where $x2+y2+z^2=1$ 更通用的表示 $f(x,y,z
阅读全文
摘要:tags: - games101 shadow mapping 思想:光源可以看到点,人也可以看到的点。 不在shadow中的点 只能处理点光源 深度不一致 浮点数的精度问题。 软/硬阴影 ray tracing 直线传播 不会碰撞 从光源出发,到人眼 光线是可以反射的 多次弹射的光纤追踪 ray
阅读全文
摘要:tags: - games101 辐射度量学 basic radiometry 精确的描述光 光线的强度 I is 10。 在屋里层次准确的描述光 New terms: radiant flux intensity irradiance radiance radiant energy and flu
阅读全文
摘要:tags: - games101 漫反射的 prdf glossy material 折射 BTDF 全反射的情况: $n_i$ 远大于 $n_{t}$ 也就是说 入射密度大。 因此水底看空气 会发生全反射情况。 fresnel reflection term 菲涅尔项 绝缘体 见到那说就是 如果
阅读全文
摘要:tags: - git 相对引用的方式 ^ 表示向前移动一个提交记录 ~{num} 向前移动 num 个 移动方式
阅读全文
摘要:tags: - git 主分支 master 正式版本 对于科研 : 可以是最好的指标 开发分支 develop 可以是 预发布,或者 开发的分支 推荐使用 --no-ff 添加合并节点 临时分支 功能 feature 预发布 release 修改bug fixbug 临时添加使用完之后需要删除 部
阅读全文
摘要:tags: - git choose a commit from one branch and apply it to another。 git cherry-pick {commit1} {commit2} 连续的提交 A..B 提交 A 必须早于提交 B 。 使用上面的命令,提交 A 将不会包含
阅读全文
摘要:tags: - git 提交 基础操作 # 添加文件到暂存区 git add {file/*} # 提交 git commit git commit -m {message} git commit --amend 重新提交, 简单来说就是部分文件忘记提交了或者写错了我们可以提交到暂存区,使用这个命令
阅读全文
摘要:tags: - git delete or revert the commit # soft 移动头节点, 同时将删除更改保存到暂存区,同时 工作区不变 non-destructive git reset --soft HEAD~{num}/{hash} git reset --hard HEAD~
阅读全文
摘要:tags: - git Merge types fast-forward (常用) Non fast-forward recursive(常用) /ort octopus ours subtree 快速合并 两个分支一前一后,没有分叉,快速分支不会建立一个合并节点。 合并更改但是不合并分支 使用 -
阅读全文
摘要:tags: - git set proxy git config --global http.proxy 'http://127.0.0.1:10809' git config --global https.proxy 'http://127.0.0.1:10809' unset proxy git
阅读全文
摘要:tags: - git 变基简单来说就是将一个分支的提交记录复制到另一个上,以达到减少分支的目的,创造更加 线性 的提交历史 为了防止远程和本地的主干混乱,我们需要先使用 fetch 进行统一 git fetch {main_branch} git checkout {feature_branch}
阅读全文
摘要:tags: - git 将当前的工作区和暂存区的修改暂存起来,同时将工作区变得干净,方便 从远程进行 fetch,或者 暂存当前想法同时修改一个bug。 注意在使用多个 stash的时候会出现冲突。 常用命令: # 进行 stash git stash git stash -m {name of s
阅读全文
摘要:tags: - git tag 可以分为轻量标签与附注标签 轻量标签很像一个不会改变的分支——它只是某个特定提交的 附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy G
阅读全文
摘要:tags: - git 感叹号 ! 用于将规则变成白名单。它匹配所有目录,但由于它不匹配这些目录中的任何内容,因此 Git 目前还不会仅通过这两行来跟踪任何文件。 * !*/ # track this file !.gitignore # whitelist everything in ./conf
阅读全文
摘要:tags: - git 环境初始化 # 创建git仓库 git init # 环境初始化 git config --global user.name {name} git config --global user.email {email} 设置代理 #http || https git confi
阅读全文
摘要:tags: - git 分支 # 查看 git branch # 创建 git branch {name} git switch {name} #切换分支 git checkout -b {name} #创建并切换到分支 git switch -c {name} #同上 # 删除 git branc
阅读全文
摘要:tags: - git 主分支 master 正式版本 对于科研 : 可以是最好的指标 开发分支 develop 可以是 预发布,或者 开发的分支 推荐使用 --no-ff 添加合并节点 临时分支 功能 feature 预发布 release 修改bug fixbug 临时添加使用完之后需要删除 部
阅读全文
摘要:download sudo apt-add-repository ppa:fish-shell/release-3 sudo apt update sudo apt install fish Tutorial https://www.cnblogs.com/Masquer/p/13920104.ht
阅读全文
摘要:tags: - linux 安装 LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*') cu
阅读全文
摘要:tags: - linux - neovim 资源 https://github.com/neovim/neovim https://github.com/rockerBOO/awesome-neovim install -- the latest sudo apt-get install soft
阅读全文
摘要:#!/bin/sh hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }') wslip=$(hostname -I | awk '{print $1}') port=7890 PROXY_HTTP="http://$
阅读全文
摘要:tags: - linux 安装对应版本的 venv 如我们的python3为 3.10 sudo apt install python3.10-venv python3 -m venv {name} #创建环境
阅读全文
摘要:tags: - matplotlib - python 展示图片 -- imshow 主要参数 : image 可选的image可是 : (M,N) 具有标量数据的图像。使用归一化和颜色映射将值映射到颜色 (M, N, 3):具有RGB值(0-1浮点数或0-255整数)的图像。 (M, N, 4):
阅读全文
摘要:tags: - js 导入js代码 <script type="text/javascript"><!-- ... //--></script> <script src="/path/to/script.js"></script> 使用严格模式 "use strict"; 变量 三种命名方式 let
阅读全文
摘要:tags: - neovim - cmake cmake set(CMAKE_EXPORT_COMPILE_COMMANDS ON) neovim 会自动识别
阅读全文
摘要:tags: - obsidian - plugins settings Admonitions title: setting example 代码块类型 : ad-{type} type 对应表 |Type|Aliases| | | | |note|note, seealso| |abstract|
阅读全文
摘要:tags: - opencv 基本操作 读取 img = cv2.imread({path}) 数据类型 : ![[python常见图片格式-读取方法-相互转换#Opencv]] 展示 cv2.imshow({window_name}, {img}) # 窗口销毁 cv2.waitKey(0) cv
阅读全文
摘要:pstree 阅读材料 POSIX 对命令行参数有一定的约定 https://jyywiki.cn/OS/2024/labs/M1.md pid /proc 的介绍 /proc/cpuinfo:包含有关 CPU 的信息,如型号、速度等。 /proc/meminfo:提供有关系统内存使用情况的信息。
阅读全文
摘要:tags: - OperatingSystemNanjin Book HARLEY HAHN'S GUIDE TO UNIX AND LINUX Operating Systems: Three Easy Pieces webcite learning list https://space.bili
阅读全文
摘要:tags: - OperatingSystemNanjin 介绍 三个主要线索: 硬件 软件 操作系统 管道 将一个程序的输出作为另一个程序的输入 程序角度的操作系统 helloworld c文件 gcc --verbose hello.c -static 可以查看很多信息如 include 在哪里
阅读全文
摘要:how to use gdb https://sourceware.org/gdb/documentation/ https://www-users.cse.umn.edu/~kauffman/tutorials/gdb 计算机系统的状态机模型 状态 内存和寄存器的数值 初始状态 CPU Reset
阅读全文
摘要:tags: - batch - unity - optimization 1. 批处理 将多个 drawCall 操作合并为一个,减少cpu和gpu之间的通信 static batch 概念 static object : 非移动的对象 这些对象可以利用预计算信息减少资源的消耗 只有相同材质的的物体
阅读全文
摘要:tags: - unity GetKey, GetKeyDown, GetKeyUp GetKey 按住 GetKeyDown 按下的第一帧为true ,按住后 为 false GetKeyUp 同理 new input system 为了适配更多输入设备并将逻辑和操作进行分离。 craete/in
阅读全文
摘要:tags: - PIL - pytorch - opencv - image PIL 读取 image = Image.open({path}) 格式 h,w Tensor 读取 image = Image.open(image_name).convert('RGB') image = transf
阅读全文
摘要:tags: - raytrace the basic #include <iostream> int main() { // Image int image_width = 256; int image_height = 256; // Render std::cout << "P3\n" << i
阅读全文
摘要:tags: - raytrace add a sphere 球的公式 x2+y2+z2=r2
$(x,y,z)$ 在求的表面上 inside : $x^2 + y ^2 + z^2 < r^2$ outside : $x^2 + y ^2 + z^2 > r^2$
阅读全文
摘要:tags: - raytrace 8 Antialiasing 如何 采样? 采样以像素为中心的正方形区域,该区域延伸到四个相邻像素中的每个像素的一半。 使用随机数 #include <cstdlib> inline double random_double() { // Returns a ran
阅读全文
摘要:tags: - unity - DrawCall 什么是 Draw Call 简单来说就是 CPU 调用 图形化接口 如 glDrawElement 如何减少 Draw Call 方法1 : 使用Batch unity-batch 将很多小的 DrawCall 合并成一个大的DrawCall。 注意
阅读全文
摘要:tags: - unity 是什么? 一堆我们定义的数据,方便我们之后进行初始化。 [CreateAssetMenu(fileName = "TestObject", menuName = "ScritableObjects/TestObject")] public class TestObject
阅读全文
摘要:tags: - unity - settings 选择 编辑器 visual studio/vscode Edit/preferences/External Tools
阅读全文
摘要:[SerializeField] 表示将原本不会被序列化的私有变量和保护变量变成可以被序列化的,那么它们在下次读取的值就是你上次赋值的值。 [Serializable] 指示可序列化的类或结构 具有 Serializable 属性的自定义结构 如果想要自定义的类显示在inspector中我们就需要
阅读全文
摘要:安装 iwr -useb get.scoop.sh | iex scoop update # 代理 scoop config proxy 127.0.0.1:10809 search——搜索仓库中是否有相应软件。 install——安装软件。 uninstall——卸载软件。 update——更新软
阅读全文
摘要:tags: - unity 两者都可以直接创建 gameobj 两者之间不能相互转换 两者可以通过属性得到对方 transform.gameobj gameobj.transform Insatance 实例化的时候,两者返回对应的属性 如果经常改变transformer , 就用transform
阅读全文
摘要:tags: - windows 常用软件 utools 终端管理 wallpapper fences chrome watt steam 管理 code vscode git c++ 环境 == vsoce 官方教程 MSYS c++ 环境 终端 powershell window terminal
阅读全文
摘要:tags: - wsl 查看 wsl -l -v 卸载 wsl --unregister {Name}
阅读全文
摘要:tags: - vscode - assert 快速移动 meta go
阅读全文
摘要:tags: - vscode - settings { "version": "0.2.0", "configurations": [ { "name": "C/C++ Runner: Debug Session", "type": "cppdbg", "request": "launch", "a
阅读全文
摘要:tags: - vscode 区域测试 // @lcpr case=start // "PAYPALISHIRINGGGG"\n3\n // @lcpr case=end diy 参数 用于调试不同类型的参数和函数 // @lcpr-div-debug-arg-start // funName= a
阅读全文
摘要:tags: - vscode - settings c++ 方法自动添加括号 C_Cpp : autocomplete add Parentheses
阅读全文
摘要:tags: - vscode - settings vscode custom task task 模板 { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.
阅读全文
摘要:tags: - vscode - settings https://code.visualstudio.com/docs/editor/variables-reference
阅读全文
摘要:tags: - vscode - vim easymotion find char : <leader><leader>s find char forward/backwark : <leader><leader> f/F find word start/end <leader><leader> w
阅读全文
摘要:创建基础的配置文件 左下角创建新的配置文件,可以根据现有的配置文件增加 Basic setting 常用插件: chinese git lens IntelliCode JSON Material Icon Theme Path Intellisense One Dark Pro Project M
阅读全文
摘要:tags: - unity - assert assert list unity Tutorial catlike 论坛 bilil code monkry free youtube Charger Games some linke list android udemy 收费 game makder
阅读全文
摘要:二叉树的分类 满二叉树 : 节点数量: $2^k-1$ 完全二叉树 : 应用 : heap 二叉搜索树 规则 : 左不空,则左右节点都小于根节点 右不空,则右变的节点都大于根节点 左右子树都是二叉搜做树 平衡二叉搜索树 AVL(Adelson-Velsky and Landis)树 左右子树的高度差
阅读全文
摘要:tags: - datastruct - algo priority_queue -- 最简单实现 -- 使用连链表 heap 是一个平衡二叉树 规则: 父节点比子节点大/小 insert 在堆的最后一个建立一个节点 并 赋值 比较并和父节点进行交换 重复知道符合规则 poll 移除根节点 将最后的
阅读全文
摘要:btye and bit 4 Bits 比特 = 1 hex digit = 16 things 8 Bits 比特 = 1 Byte 字节 = 2 hex didgit = 256 things C basic types int/unsigned int 16 bits or larger fl
阅读全文
摘要:https://cs61c.org/sp24/
阅读全文
摘要:tags: - games101 利用中心对三角形进行采样 antialiasing 反走样 sampling artifact -- 图形学中一切不好的东西 空间,时间采样问题 信号的速度快导致采样跟不上 如何做:在采样之前进行模糊/滤波,然后进行采样 -- 不能反过来 正弦和余弦滤波 -- 好处
阅读全文
摘要:tags: - cpp - book 初始化的时候避免窄化 double x {2.4}; 如何将一个大任务分割为多个小任务 基本原则 抽象 : 不需要了解程序的具体实现细节,细节隐藏在相应的接口中。 分治 : 将一个大问题分割为多个小问题。 如何进行分割 明确各个子程序之间的关系 -- 按照功能进
阅读全文
摘要:tags: - cpp - tips 1. 使用 {} 初始化可以 自动检查窄化 int x{2.7}; //会报错
阅读全文
摘要:允许自己添加规则。 默认是大根堆 -- < 表示队列后面的元素要小于前面的元素。 template< class T, class Container = std::vector<T>, class Compare = std::less<typename Container::value_type
阅读全文
摘要:tags: - algo - cpp 一般哈希表都是用来快速判断一个元素是否出现集合里 。 比如找到一个学生,在不在队列里,这种查找问题,使用 hash 表,可以快速执行。 hash 函数 :用于将需要填充的值或者索引,映射到hash table 的索引上。 哈希碰撞 : 如果 两个事物的 hash
阅读全文
摘要:step 1 the minal project cmake_minimum_required(VERSION 3.10) project(Tutorial) add_executable(Tutorial tutorial.cxx) specifying c++ standard set(CMAK
阅读全文
摘要:set(varName value... [PARENT_SCOPE]) cmake 中 所有的值都是 string, 如果同时添加多个值,会自动添加 ; set(myVar a b c) # myVar = "a;b;c" set(myVar a;b;c) # myVar = "a;b;c" se
阅读全文
摘要:the stage of cmake Generating Project Files choose a project generator: Ninja, Unix Makefiles, MSYS Makefiles mkdir build cd build cmake -G "Unix Make
阅读全文
摘要:tags: - Csharp - Event - Delegate 基本概念 Delegates : 简单来说就是函数的类型,可以同时添加多个函数,一起运行 如何向 Delegate 添加函数 public delegate void TestDelegate(); private TestDele
阅读全文
摘要:tags: - Csharp 作为参数修饰符,它允许您通过引用而不是通过值将参数传递给方法。 在接口和委托的泛型类型参数声明中,它指定类型参数是协变的。 In:过程不会改写In的内容 Out和out:传入的值不会被过程所读取,但过程可以写 ref:传入的值,过程会读,也会写 -- 必须初始化 常见的
阅读全文
摘要:tags: - algo 对频率进行排序 使用map 经典题目 leetcode 347 前 k 个高频元素。 我们得到了频率,可选择对每个key进行排序,但是我们不需要维护所有元素的次序,只需要维护最大的k个 也就是优先队列的长度。因此节约了事件。
阅读全文
摘要:tags: - algo 性质1: 左子树的深度等于右子树 左为满,右为完全 左子树的深度大于右子树 左为完全,右为满 一个完全二叉树的左右子树都是完全二叉树 不断递归之后 最后都是满二叉树 只剩一个节点 性质2: 可以和位运算进行结合 https://leetcode.cn/problems/co
阅读全文
摘要:tags: - algo 如果回溯是在尾部 可以使用 recrusion(path + xxx) 来实现 无需使用额外的语句。
阅读全文
摘要:tags: - algo 用于一定区间内的维护最大/最小值 单调队列 class Myqueue{ private: deque<int> dq; public: Myqueue(){} void Push(const int &num){ while (!dq.empty() && dq.back
阅读全文
摘要:tags: - cpp - algo 接口网站 cppreference set unorder_set // unorder_set unorder_set<T> u_set; //insert u_set.insert(T t); // find and judge iterator it =
阅读全文
摘要:tags: - cpp 什么是移动 c++ 中 = 的默认操作是拷贝 每次操作内存的时候都会进行拷贝操作。移动操作相当于数据的转移,原来存放数据的地方没有这个值了。 左值引用,右值引用 int val{ 0 }; int&& rRef0{ getTempValue() }; // OK,引用临时对象
阅读全文