日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Implicit隐式渲染入门 SDF SphereTracing

發布時間:2024/1/16 windows 42 coder
生活随笔 收集整理的這篇文章主要介紹了 Implicit隐式渲染入门 SDF SphereTracing 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Implicit

何為隱式?隱式(Implicit)的是顯式(explicit)的反義詞。

explicit可以簡單理解為用網格等信息描述的幾何形狀,網格信息是離散的,信息量越大描述越精準。Implicit則不需要頂點等顯式信息,用方程,或者說有符號距離場 (Signed Distance Field) 即SDF,表示幾何形狀的數學模型。

SDF

在SDF中,空間中的每一點都有一個值,表示該點到最近表面的距離。這個距離可以是正的(如果點在形狀的外部),也可以是負的(如果點在形狀的內部)。SDF提供了一種簡潔而強大的方式來描述復雜的三維形狀,包括難以用傳統多邊形網格表示的形狀。

SDF的優勢:

  1. 高效的幾何操作:進行布爾運算以及形狀變形和平滑處理變得簡單高效。
  2. 復雜形狀的表示:特別適合描述復雜或有機形狀,如流體、云霧和生物組織。
  3. 動態變化的支持:使實時更新和變形成為可能。

對幾何primitive的sdf描述
Inigo Quilez :: computer graphics, mathematics, shaders, fractals, demoscene and more (iquilezles.org)

Sphere Tracing

why

傳統的光線追蹤算法,通過發送光線并檢測這些光線與場景中物體的交點,進行著色。但是當場景使用SDF來表示時,傳統的交點檢測方法不再適用。原因在于SDF和多邊形網格表示場景的方式截然不同:

  1. 頂點表示:在傳統的多邊形網格表示中,物體由許多小的平面片(通常是三角形)構成的。這些三角形有明確的邊界和頂點,因此當光線與這些三角形相交時,可以通過數學計算找到精確的交點
  2. SDF表示:相比之下,SDF場景被視為一個連續的體。體中每個點都有一個值,表示該點到最近表面的距離。這種表示方法不涉及明確的邊界或頂點,而是提供關于形狀表面的連續信息

由于SDF沒有離散的多邊形或邊界,傳統的光線與多邊形的交點檢測算法(通常涉及線性代數和平面幾何計算)不再適用。在SDF表示的場景中,沒有明確的多邊形表面可以直接與光線進行交點計算。因此需要Sphere Tracing這樣的算法來處理SDF場景。

How

原版的SphereTracing十分討巧,其基本原理非常簡潔,也非常聰明:

  1. 從點 \(p_0\) 開始投射一條 ray,以 SDF 值?\(f(p_0)\) 為步長進行一次 marching。
  2. 以上次 marching 的終點為起點,以?\(f(p_1)\) 為步長繼續下一次 marching。
  3. 重復 marching 直到?\(f(p_n)\) < \(\epsilon\) , \(\epsilon\) 為預設的閾值。此時我們認為 \(f(p_n)\) 即為交點。

Enhanced Sphere Tracing

上述的傳統 Sphere Tracing 算法冗余的步進次數很多,為了進一步提高效率,誕生了很多種優化方案。

binary search 二分查找法,實際效果不理想,并且遇上TPMS這種復雜結構會有更多問題
Inigo Quilez :: computer graphics, mathematics, shaders, fractals, demoscene and more (iquilezles.org)

Segment Tracing 通過假設場景是?\(C^2\)?連續去加長初始 marching 的距離,有效減少 marching 次數的同時,大幅提升了每次 marching 的消耗,效果不理想,并且在有棱角的場景表現更差
https://diglib.eg.org/bitstream/handle/10.1111/cgf13951/v39i2pp545-554.pdf
GitHub - aparis69/Segment-Tracing: Source code for the Computer Graphics Forum paper: Segment Tracing Using Local Lipschitz Bounds. Presented at Eurographics 2020.
【光線追蹤】Segment Tracing:一種可能加速距離場求交的實時光線追蹤方案 - 知乎 (zhihu.com)
Enhanced Sphere Tracing 采用激進的 marching 步長,即設定一個步長倍數\(\alpha\) ,marching 步長改為 \(f(p_n) * \alpha\) 而不是 Sphere Tracing 保守的 \(f(p_n)\) 。只要兩個 sphere 相交,就說明本次 marching 可安全,否則退回到點 \(p_n\) 的位置重新進行保守的 marching。

Accelerating Sphere Tracing 在 enhanced 的基礎上更進一步。假設前兩次 marching 所形成的 sphere 都相切于同一平面,那么下一次可以嘗試 marching 同樣與該平面相切并且也與上一次的 marching sphere 相切的距離。同樣,如果嘗試失敗則回退至保守 marching。

上述兩個方法都是在2023年以前最優秀的 marching 算法之一,直到 Automatic Step Size Relaxation。

Automatic step size relaxation

Automatic step size relaxation 可以根據歷史 marching 的情況,動態調整步長:平面多的地方。可以走相切平面的激進步長,而曲面多的地方則調整為走更保守的步長。

每次 marching 不斷更新近似斜率?m,然后用它來指導下一次 marching。

博主拙劣的C++實現

auto trace_auto_relaxation = [&](glm::vec3 p)
{
	float t = 0.0f;
	float r = sdf(p);
	float m = -1.0f;
	float z = r;
	const float beta = 0.3f;

	for (int i = 0; i < max_steps; i++)
	{
		if (r < eps) {
			return true;
		}
		if (t + r > max_dist) {
			break;
		}

		glm::vec3 next_p = p + ray_dir * z * relaxation_factor;
		float R = sdf(next_p);
		bool doBackStep = z > abs(R) + r;

		if (!doBackStep) {
			float M = (R - r) / (z + 1e-5f);
			m = (1.0f - beta) * m + beta * M;
			t += z * relaxation_factor;
			p = next_p;
			r = R;
		}
		else {
			m = -1.0f;
		}

		float omega = glm::max(1.0f, 2.0f / (1.0f - m));
		z = glm::max(eps, r * omega);
	}
	return false;
};

But

講完了嗎?講完我要開始轉了。
上述的所有方法,對 TPMS(Triply Periodic Minimal Surfaces 三周期極小曲面),都起不到多少作用。目前效果最好的辦法只能是力大磚飛——marching 步長乘以系數 \(\alpha ,\alpha < 1\) ,以非常保守的步長去小心翼翼的找TPMS表面。也是博主目前最頭疼的問題,歡迎討論。

總結

以上是生活随笔為你收集整理的Implicit隐式渲染入门 SDF SphereTracing的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 波多野结衣先锋影音 | 午夜无遮挡 | 91福利一区 | 中文字幕不卡 | 精品女厕偷拍一区二区 | 久久精品视频在线观看 | 欧美性猛交ⅹ乱大交3 | 性一交一黄一片 | 污网在线看 | 91精品国产日韩91久久久久久 | 麻豆网页 | 激情久久网 | 人人干人人做 | 精品国产乱码久久久久久久软件 | 长腿校花无力呻吟娇喘的视频 | 午夜大片网| 少妇大叫太粗太大爽一区二区 | 毛片在线网站 | 国产精品久久久久影院 | 日韩色道| 色盈盈影院 | 婷婷俺来也| 最新国产精品自拍 | 日韩精品一二三区 | av色网站| 香蕉在线播放 | 激情视频在线免费观看 | 国产伦精品一区二区三区视频痴汉 | 国产特黄毛片 | 天堂国产一区二区三区 | 久久视频在线免费观看 | 久久久久久人妻一区二区三区 | 欧美日韩免费在线观看 | 久久sp| 人人舔人人干 | 国产伦精品一区二区三区妓女下载 | 亚洲一区二区精品视频 | 日韩1区| 精品久久免费观看 | 高潮一区二区三区 | 欧美激情片一区二区 | 成人合集 | 免看一级a毛片一片成人不卡 | 国产精品日韩一区二区 | 国产aⅴ片 | 波多野结衣高清视频 | 国产精品一区电影 | 国产精品久久国产精品99 | 成人网av| 国产91精品一区二区 | 中文字幕日本一区 | 极品久久久 | 在线免费观看成人 | 亚洲一区电影 | 国产嫩草在线观看 | 91区国产| 免费看污片网站 | 奇米色婷婷 | 男生和女生靠逼视频 | 综合久久五月 | 日韩一区二区三区不卡视频 | 日本美女日批视频 | 国产不卡高清 | 国产精品九九 | 国产美女作爱视频 | 岛国av在线播放 | jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | 暴力调教一区二区三区 | 久操视频在线播放 | 青青青手机视频 | 国产精品久久久久久久久久久久久久久 | 国产自产21区 | 国产视频四区 | 91久久色| 久草高清 | 精品视频免费播放 | 国产福利在线观看视频 | 女女爱爱视频 | 亚洲黄色av | 午夜影院一区 | 老局长的粗大高h | 日本在线视频免费观看 | 少妇被躁爽到高潮 | 丰满孕妇性春猛交xx大陆 | 日日干日日插 | 欧美女优一区 | 婷婷爱五月天 | 99福利网 | 182tv午夜福利在线观看 | 综合伊人 | 久草电影网站 | 欧美做受xxxxxⅹ性视频 | 进去里在线观看 | 国产va亚洲va在线va | 色欲久久久天天天综合网精品 | 中国女人真人一级毛片 | 曰韩精品 | 一本色道久久综合熟妇 | 成人影视免费观看 |