博客 RSS 訂閱

Imageshop - [快速閲讀十] 浮點數據的中值模糊及其優化方法。

  昨天實現了16位unsigned short數據的高效中值模糊算法,後面就在想其實我還有一箇中值算法一直沒有想到好的解決方案,那就是浮點數的中值,這個在某些場合還是有較高的應用價值的。   同樣,3*3或者5*5的浮點中值可以直接實現,而且效率一樣非常高。   其他半徑的了,怎麼辦,浮點數嘛,不能使用直方圖,而且數據範圍也很廣,不像8位或者16位數據範圍都是有限的。這兩個問題我一直沒有想到解決

計算機圖形學

收藏 評論

Milton - 3D Gaussian splatting 08: 部署模型網頁展示

目錄 3D Gaussian splatting 01: 環境搭建 3D Gaussian splatting 02: 快速評估 3D Gaussian splatting 03: 用户數據訓練 3D Gaussian splatting 04: 代碼閲讀-提取相機位姿和稀疏點雲 3D Gaussian splatting 05: 代碼閲讀-訓練整體流程 3D Gaussian sp

計算機圖形學

收藏 評論

Imageshop - 傳統算法之Canny亞像素邊緣檢測及將離散邊緣點鏈接成線條的優化和探討。

  邊緣檢測方面傳統的算法中最為經典的就是Canny算法,但是標準的Canny是不具有亞像素精度的,而且得到的結果是一堆離散的邊緣點,提取亞像素的方式有很多種,這個在網絡上還有一些資料,而如何將離散點鏈接成一根一根的線條,我一直沒有什麼思路,最近偶然又有朋友給我推薦了一片文章:A Sub-Pixel Edge Detector an Implementation of the Canny /Dev

計算機圖形學

收藏 評論

單身喵 - DirectX RayTracing (3) 程序圖元及複雜光照

DirectX RayTracing (3) 程序圖元及複雜光照 ​ 離上一篇文章隔的有點久了,在國慶前其實就看完了微軟官方的案例並復刻了出來,但是一直懶得寫,國慶也全拿去玩了,拖到過完了國慶才動筆。 ​ 在前面兩篇中基本把 DXR 的大部分流程都介紹完了,這次把使用 Intersection Shader 實現程序圖元介紹完後基本足夠實現大部分需求了。在實現程序圖元之前,這裏先實現複雜場景的渲染

計算機圖形學

收藏 評論

Imageshop - Impulse Noise(圖像脈衝噪音)的抑制和處理方法(提取自《現代圖像處理算法教程》一書並做解釋)。

  相關參考文章:現代圖像處理算法教程(全)   參考書籍:modern-algorithms-for-image-processing-computer-imagery-by-example-using-C#   在上面的英文版書籍中,提出了一種去除脈衝噪音的方法,所謂的脈衝噪聲是影響單個的、隨機選擇的像素或相鄰像素的組合,而不是影響圖像的所有像素(這個是高斯噪聲的特徵)。我們傳統概念中提到的

計算機圖形學

收藏 評論

SmalBox - 【光照】Unity中的[光照模型]概念辨析

【從UnityURP開始探索遊戲渲染】專欄-直達 基礎光照模型‌ ‌標準光照模型(Standard Lighting Model)‌ ‌定義‌:傳統光照計算的框架,通常包含漫反射、鏡面反射和環境光三部分。 ‌特點‌:非物理經驗模型,計算簡單但缺乏真實感。 ‌從屬關係‌: 包含 ‌漫反射‌ 和 ‌高光反射‌ 是 ‌Phong模型‌ 和 ‌Blinn-Phong模型‌

遊戲開發

收藏 評論

SmalBox - 【光照】Unity中的[經驗模型]

【從UnityURP開始探索遊戲渲染】專欄-直達 圖形學第一定律:“看起來對就對” URP光照模型發展史 ‌2018年‌:URP首次發佈(原LWRP),繼承傳統前向渲染的Blinn-Phong簡化版 ‌2019年‌:URP 7.x引入Basic Shader的簡化光照模型 ‌2020年‌:URP 10.x整合PBR核心(GGX+Smith) ‌2022年‌:URP 14.x新

遊戲開發

收藏 評論

落幕夜未央 - H5遊戲性能優化系列-----cpu相關優化

cpu優化主要是優化cpu使用率,幀率平穩性(卡幀,長耗時任務),主要從以下幾個方面優化 設置合適的幀率。根據遊戲類型設置合適的幀率,比如slg,回合制這種類型遊戲一般開30幀,mmo等即時戰鬥的或者對流暢度有很高要求的可以開60幀。 幀同步與狀態同步的抉擇。一般來説狀態同步會比幀同步的前後端消息量大,也就説消息同步壓力更大。但是狀態同步前端實現起來比較簡單,只用根據對應消息更新狀態即可。

遊戲開發

收藏 評論

SmalBox - 【光照】[自發光Emission]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 自發光的基本原理 $Cemissive=Memissive$ 自發光是物體表面主動發射光線的現象,在光照模型中通常作為獨立於外部光源的附加項。其核心特點是不受其他光照影響,但可以影響周圍環境。 實現流程 ‌定義發射顏色和強度‌:確定基礎發光顏色和亮度 ‌紋理採樣 可選‌:使用紋理控制發射圖案 ‌HDR處理‌:支持高於1.0的亮度值

遊戲開發

收藏 評論

SmalBox - 【光照】[漫反射diffuse]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 漫反射基本流程 漫反射遵循蘭伯特定律(Lambert's Cosine Law),其核心流程如下: ‌法線準備‌:獲取表面法線向量(通常來自頂點法線或法線貼圖) ‌光源方向計算‌:確定光源到表面點的單位方向向量 ‌點積運算‌:計算法線向量與光源方向的點積(N·L) ‌能量約束‌:使用saturate函數將結果限制在[0,1]範圍

遊戲開發

收藏 評論

SmalBox - 【光照】[漫反射]UnityURP蘭伯特能量守恆嗎?

【從UnityURP開始探索遊戲渲染】專欄-直達 蘭伯特漫反射的能量守恆性 ‌能量守恆基本原理‌ 在物理正確的渲染中,能量守恆要求: 表面反射的光能總量 ≤ 入射光能 漫反射+高光反射 ≤ 1.0 沒有能量憑空產生或消失 ‌經典蘭伯特模型的能量守恆問題‌ 傳統蘭伯特漫反射公式: $漫反射 = 表面反照率 × max(0, N·L)$ ‌不守恆的原因‌: ‌缺乏歸一化因子‌:

遊戲開發

收藏 評論

Lin*Mu - Unity 同一場景不同攝像機 設置不同天空盒背景

如何在Unity中的一個場景進行分屏,並將分屏的兩個攝像機設置不同的天空盒 問題分為兩個:1.分屏,2.設置不同天空盒 1.分屏 在Unity中創建兩個攝像機 或者將主攝像機賦值一份 保持場景的所有攝像機有且僅有一個Audio Listener 修改ViewPortRect 以及depth 參數如圖 其中 x,y為顯示畫面左下角比例位置,x中0為最左,0.5為居中,1為最右側,y

遊戲開發

收藏 評論

SmalBox - 【光照】[漫反射]UnityURP蘭伯特有光照衰減嗎?

【從UnityURP開始探索遊戲渲染】專欄-直達 光照衰減的基本原理 在物理正確的光照模型中,衰減需要遵循兩個基本定律: ‌平方反比定律‌:光強與距離平方成反比 (I ∝ 1/r²) ‌餘弦定律‌:表面接收的光強與入射角餘弦成正比 (I ∝ cosθ) 經典蘭伯特模型的衰減處理 標準蘭伯特公式 $漫反射 = 表面顏色 * 表面反照率 * max(0, N·L)$ 衰減實現分析 ‌

遊戲開發

收藏 評論

SmalBox - 【光照】[高光反射specular]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 高光反射的基本流程 經驗光照模型中的高光反射通常遵循以下流程: ‌入射光計算‌:確定光源方向和強度 ‌視角向量計算‌:確定觀察者方向 ‌反射向量計算‌:根據表面法線計算理想反射方向 ‌高光強度計算‌:使用特定模型計算高光反射強度 ‌最終合成‌:將高光反射與漫反射和環境光結合 主要高光反射模型及實現 Phong模型 (1975)

遊戲開發

收藏 評論

SmalBox - 【光照】[環境光ambient]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 環境光的基本處理流程 $Cambient$ ‌環境光采集‌:獲取場景環境光照信息 ‌環境光遮蔽‌:計算環境光遮擋關係 ‌環境光反射‌:根據材質屬性反射環境光 ‌環境光混合‌:與其他光照成分合成最終顏色 主要環境光模型及實現 恆定環境光(Constant Ambient) ‌實現原理‌: $環境光 = 環境光顏色 ×

遊戲開發

收藏 評論

horeaper - 放棄Unity後,我為什麼選擇了Unigine?

Unity一直在搞事相信大家都知道,特別是unity.cn,之前都還在我的容忍範圍之內,直到上半年他們事實性的宣佈不會支持Unity 6之後,我就決定換引擎了。 至於換哪個引擎着實挑選了一段不短的時間(實際上我“物色”引擎從23年Runtime Fee事件之後就開始了)。首先被排除的是Unreal,這玩意兒我玩不起。之後我在幾個支持C#的引擎裏面挑選,最後鎖定在三個引擎上面:Stride,Flax

遊戲開發

收藏 評論

horeaper - Unigine整合Myra UI Library全紀錄(1):引言,紋理與平台

太長不看:https://github.com/horeaper/UnigineMyraIntegration 什麼是Myra? 這個是Myra:https://github.com/rds1983/Myra 熟悉WPF/Avalonia/Silverlight/UWP開發的朋友肯定一眼就能看出來這個UI庫用的是什麼佐料了。它當然不是完整的WPF實現,對於遊戲開發而言也沒必要用完整的WPF,太重了

遊戲開發

收藏 評論

SmalBox - 【光照】Unity中的[物理模型]PBR

【從UnityURP開始探索遊戲渲染】專欄-直達 PBR(Physically Based Rendendering)的核心內容與BRDF應用‌ PBR是一種基於物理光學原理的渲染框架,其核心是通過‌物理可測量的材質屬性‌和‌真實的光照計算規則‌實現跨環境一致的真實感渲染。 ‌PBR四大核心支柱‌ 模塊 作用 關鍵參數 ‌材質參數系統

遊戲開發

收藏 評論

SmalBox - 【光照】[物理模型]中的[BRDF]是什麼?

【從UnityURP開始探索遊戲渲染】專欄-直達 雙向反射分佈函數 Bidirectional Reflectance Distribution Function 解釋當光線從某個方向照射到一個表面時,有多少光線被反射、反射方向有哪些。BRDF大多使用一個數學公式表示,並提供一些參數來調整材質屬性。 BRDF(雙向反射分佈函數)是計算機圖形學和光學中描述物體表面反射特性的核心數學模型,其定義

遊戲開發

收藏 評論

SmalBox - 【光照】[PBR][漫反射]實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 URP BRDF漫反射方法對比 方法名稱 數學公式 特點 性能消耗 適用場景 Lambert $L_d = k_d * max(0, N·L)$ 經典模型,能量不守恆 ★☆☆ 移動端低配 Half-Lambert $L_d =

遊戲開發

收藏 評論

SmalBox - 【光照】[PBR][鏡面反射]實現方法解析

【從UnityURP開始探索遊戲渲染】專欄-直達 微表面理論的核心概念 微表面理論是一種物理渲染模型,它將宏觀表面視為由無數微觀幾何細節(微表面)組成的複雜結構。這一理論是Unity URP中PBR(基於物理的渲染)實現的基礎。 基本假設 ‌微觀結構‌: 宏觀表面由大量隨機方向的微觀小平面組成 每個微表面都是完美的鏡面反射體 微表面尺度小於單個像素但大於光波長

遊戲開發

收藏 評論

SmalBox - 【光照】[PBR][法線分佈]GGX實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 GGX的全稱與基本概念 ‌GGX的全稱‌:Ground Glass X (或 Generalized Trowbridge-Reitz Distribution) ‌首次提出‌:Walter等人在2007年發表的論文《Microfacet Models for Refraction through Rough Surfaces》中提出 GGX

遊戲開發

收藏 評論

SmalBox - 【光照】[PBR][法線分佈]為何不選Beckmann

【從UnityURP開始探索遊戲渲染】專欄-直達 Beckmann分佈函數原理 Beckmann分佈函數是最早用於微表面模型的法線分佈函數之一,由Paul Beckmann在1963年的光學研究中首次提出。它描述了表面微平面法線分佈的統計規律,是計算機圖形學中最早的物理準確NDF實現。 數學原理 Beckmann分佈函數的標準形式為: $D_{Beckmann}(h)=\frac1{πm2(

遊戲開發

收藏 評論

SmalBox - 【光照】[PBR][幾何遮蔽]實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 幾何遮蔽的基本流程 幾何遮蔽(G)在BRDF中用於模擬微表面間的自陰影和遮蔽效應,其計算流程通常分為三個步驟: ‌遮蔽項計算‌:光線入射方向的遮擋概率 ‌陰影項計算‌:視線方向的遮擋概率 ‌聯合計算‌:將兩者結合形成完整的幾何函數 主要幾何遮蔽模型 1. Cook-Torrance模型 ‌原理‌: 基於V形微槽假設 使用簡單的

遊戲開發

收藏 評論