# title: 图形学笔记杂项
date: 2022-04-07 12:00
tags: 图形学笔记
category: 图形学笔记
count: true

# 杂项

# 求曲率

""
float curvature(float3 VertexNormal,float3 WorldPositon)
{
		float DeltaN = length(abs(DDX(VertexNormal)+DDY(VertexNormal)));
		float DeltaP = length(abs(DDX(WorldPositon)+DDY(WorldPositon)));
		float curvature = DeltaN / DeltaP ;
		reture curvature ;
}

# Fog 公式

瑞丽散射和米氏散射

Untitled

# 折射

A dot b = |a|*|b|cos 弧度

|a | 是 a 向量的长度 sqrt (x2*y2*z^2)

角度乘以 π/180 等于弧度,弧度乘 180/π 等于角度

折射后法线

T = Ñ i+(Ñ COS(Θ 1) - SQRT [1 - Ñ 2(1 - (cos(Θ 1))2)])N

Untitled

其中 n = n 1 /n 2 n1 是起源物体的折射率 n2 是进入物体的折射率,i 是射线的向量

# 曲线

# Catmull-Rom

Untitled

Untitled

# 二次 Bezier 曲线

Untitled

float ontT = 1-t;
RealVelocity = ontT*ontT*P0+2*t*ontT*P0+t*t*P1;

# 动态灯光优化

P0{LVW5ACC594DI$)Y3D12M.png

# 光照渲染

Untitled

Untitled

灯光是最后算的,点光源所覆盖的像素通过 Gbuffer 获取信息,求得着色,这样的话离相机越近的地方,所覆盖的像素也就越大,消耗更高

OS2BMSUAK$U%KJUC17A8W.png

# 求点是否在三角形里面

Untitled

Untitled

# 线性深度与非线性

在 view space 下,depth 的变化是线性的,但在 clip space 下,就要分情况讨论了。

在 unity 中通过纹理采样 SAMPLE_DEPTH_TEXTURE 之后,得到的深度值往往是非线性的。然而,我们的计算过程中通常是需要线性的深度值

Unity

# 从非线性转化为线性

float z = depth * 2.0 - 1.0;
float linearDepth = (2.0 * near) / (far + near - z * (far - near));