C# Async Task 學習紀錄
2025年的現在,對於Unity的開發者來說,在C#透過Async Task寫非同步執行的程式在已經是一個不得不學的技能了,Unity對於C# async task的支援甚至能夠回推到Unity 2017,但當時實際上使用的人還不像現在這麼多,這篇部落格是我透過看Stephen Toub的Deep .NET: Writing async/await from …
Posts
2025年的現在,對於Unity的開發者來說,在C#透過Async Task寫非同步執行的程式在已經是一個不得不學的技能了,Unity對於C# async task的支援甚至能夠回推到Unity 2017,但當時實際上使用的人還不像現在這麼多,這篇部落格是我透過看Stephen Toub的Deep .NET: Writing async/await from …
今天是唯一一天可以寫年度Reflection的日子,就來回顧一下今年的進度,以及明年的計畫。 達成的事情 到日本念語言學校 JLPT N2合格 (2023年7月是N3) 卡通渲染Shader插件的製作與上架/開賣 FF9 Shader模組開發 Shader相關 Side Projects (SSR、參考Hi-Fi Rush的Unity延遲渲染管線修改、GPU …
前言 這篇文章記錄我透過Final Fantasy 9(簡稱FF9)的模組 - Memoria,修改遊戲中執行的shader,讓遊戲中的人物與場景可以有完全不一樣的體驗。文中包括分析FF9的shader與在模型面數、realtime光照方法受限的場景中導入per-pixel光照的過程與想法。 8歲時在家裡第一次玩了FF9,成為了讓我最終踏入遊戲業的契機,目前 …
關於下半年 8月初的時候,離開了待了將近八年的公司,離開的原因是 - 我明年3月底(沒出意外的話)要去日本念語言學校一年,雖然多少會捨不得(跟少賺了些錢),但提早將近半年離職是因為想去做一些這些年來在累積的 【重要但不緊急】 的事情。 回家體感沒過多久,一眨眼2023就要結束了,每天的行程也是自己排到近乎爆滿的狀態(早8晚9),這篇blog就回顧一下2023 …
AMD的FSR與NVIDIA的DLSS都是Upscaling的功能,讓遊戲能用更低的原生解析度渲染的同時仍然保留高解析度般的畫面品質,在這個realtime RT/SSGI/SSR滿街跑的時代,能夠大幅度的提升遊戲效能。 Unity內建只有支援FSR1.0與DLSS1.0,但DLSS 2跟 FSR 2.0還原出的畫面品質都遠遠超過前一代(但FRS 2.0本 …
這篇blog是最近看Digital Images: from File to Screen後稍微整理後的簡短心得, 使用到的範例圖片也是直接從文中轉載的,主要是為了釐清gamma correction到底在做什麼。gamma correction跟gamma encoding之間的關係是什麼的一些筆記。
上一次實作了法線與視差貼圖,也玩了一遍TBN矩陣,這次接著實作HDR與Bloom Advanced Lighting - HDR float point frame buffer 一般的螢幕,每個像素的顏色範圍只能介於0到1之間,這個範圍又稱為LDR(low dynamic range)。 在做光照時的各種計算時,實際上並不期待輸出一定會介於0到1之間,我們 …
接續上一篇跟著LearnOpenGL學著OpenGL的記錄,這次從Normal Mapping開始實作 Advanced Lighting - Normal Mapping 法線貼圖 這章節介紹現在大家都很熟悉的法線貼圖的原理與實作, 首先法線貼圖一般會偏藍色,因為這種貼圖預設表面的法線方向是朝向Z(B通道)軸,所以RGB中的B通道的值會是最大的。而凹凸的表 …
.png) 為何要寫OpenGL 在Unity的內建管線(BiRP)或是URP上寫Shader,非常方便的一點就是有非常多MACRO、內建函式以及變數可以使用,可以讓使用者忽略掉很多計算上的細節,比如說一個三維座標URP中在不同座標系統間轉換通常會有一 …
在上一篇blog,我做了多執行緒程式設計的優缺點以及Job System架構的簡單介紹,這一篇會介紹一下Unity提供的各種不同的Job Interface,以及基本的使用方式。希望看完這篇的人,不只可以寫出多執行緒的程式,也可以寫出一支能夠平行運算的程式。 目錄 專有名詞 第一個Job - 實作IJob 實作IJobFor IJobParallelFor …
前陣子把bilibili上的Games104刷完,其中一堂有講到多執行緒與Job system,決定把一些重點記錄下來然後順便介紹一下Unity中可以實作平行處理的C# job system。 多執行緒程式設計(Multithread Programming) - 將我們的程式任務分配到多個thread去執行,來更有效率的利用硬體還並達成加速的效果, 那為何 …
在渲染數量超過上萬個物件時,一般會使用叫做Instanced Indirect的API,在Unity內則是透過呼叫Graphics.DrawMeshInstancedIndirect這個方法,不論shader是用CG還是在SRP的HLSL寫都可以透過這個API來高效率的渲染出大量的物件。 但如果每次想用instanced indirect時都重寫一 …
Verlet integration(韋爾萊積分法)是一種針對牛頓第二運動定力的積分法,常用於程式中的布料模擬以及計算繩索、Ragdoll之類的效果。 最初發現Verlet integration的契機,是之前在做Ragdoll研究的時候,碰巧翻到一篇Hitman(刺客任務)開發者以前發表過的一Advanced Character Physics,文中提到他 …
之前心血來潮做的風格化渲染Shader,已經上架一段時間,順便發一篇筆記來幫助自己整理一下腦袋。 關於Unity內自訂光照的shader在中文的網路資源中較多停留在Built-in render pipeline時代,SRP家族的Universal Render Pipeline則比較少,不過受惠於SRP開源的性質,trace一下原始碼可以很快就搞懂整 …
風格化渲染,也稱為NPR或者Toon shading,可能是在除了Unity內建的standard shader外,Unity的開發者們最常使用的一種渲染風格。前幾個月自己寫了一個風格化渲染的shader,下文將我寫的shader內重點feature大致分為下列幾個項目。 基於漸變貼圖的漫反射光照(Ramp lighting) 風格化的Specular …