主頁 >  其他 > DirectX11 With Windows SDK--34 位移貼圖

DirectX11 With Windows SDK--34 位移貼圖

2020-09-13 21:46:58 其他

前言

在前面的章節中,我們學到了法線貼圖和曲面細分,現在我們可以將這兩者進行結合以改善效果,因為法線貼圖僅僅只是改善了光照的細節,但它并沒有從根本上改善幾何體的細節,從某種意義上來說,法線貼圖只是一個光照的小把戲,接下來我們將會學習如何使用位移貼圖來改善網格細節,

在此之前你需要了解如下章節:

章節
25 法線貼圖
33 曲面細分階段(Tessellation)

學習目標:

  1. 了解位移貼圖
  2. 熟悉如何用曲面細分來改善網格細節

DirectX11 With Windows SDK完整目錄

Github專案原始碼

歡迎加入QQ群: 727623616 可以一起探討DX11,以及有什么問題也可以在這里匯報,

位移貼圖(Displacement Mapping)

位移貼圖的想法是利用一個額外的貼圖,稱作高度圖,它描述了一個表面的凸起和縫隙,換句話說,法線貼圖有三個顏色通道來為每個像素產生法線向量(x, y, z),而高度圖僅僅由一個顏色通道來為每個像素產生高度值h,從視覺上來看,高度圖僅僅是一張灰度圖(因為灰度圖只有一個顏色通道),每個像素可以解釋成一個高度值,它基本上是一個2D標量場的離散表示h = f(x, z),當我們對網格進行曲面細分時,我們在域著色器對高度圖進行采樣,然后利用法線的方向來對頂點進行偏移,以此來增加網格的幾何體細節,

盡管我們通過鑲嵌來對幾何體增加三角形,但是它并沒有增加其本身的細節,那是因為如果你對三角形進行多次細分,你只是獲得了更多的和原來的三角形同屬于一個平面的三角形,為了增加細節(如凸起和縫隙),你需要以某種方式來偏移這些經過鑲嵌后得到的頂點,高度圖是其中一個座位輸入的紋理資源,它可以用來對鑲嵌后的頂點進行偏移,通常情況下,我們會用到下面的公式,為此我們還需要用到法線貼圖采樣出來的法向量來確定偏移的方向:

\[\mathbf{p'}=\mathbf{p}+s(h-1)\mathbf{n} \]

其中標量h∈[0, 1]是從高度圖得到的高度值,我們對高度值減1來讓區間[0, 1]→[-1, 0],因為表面的法向量通常是面向網格的外部,這意味著我們以向內偏移的方式來替代向外偏移,一般將幾何體彈入會比將幾何體拉出更為方便一些,標量s則是用來控制在世界空間的塌陷程度,這樣高度值的將從[0, 1]→[-s, 0],即高度值最大的時候將不會有向內的偏移,而高度值最小的時候將會產生最大的向內偏移,通常我們會將高度圖存放在法線貼圖中的alpha通道,

生成高度圖是一項藝術性的作業,紋理藝術家可以繪制它們,或者使用工具來產生(例如:crazybump)

位移貼圖的著色器代碼

位移貼圖的代碼主要在頂點著色器、外殼著色器和域著色器有所變化,像素著色器則和我們之前使用了法線貼圖的版本一樣無需改動,

圖元型別

為了將位移貼圖整合到我們的渲染當中,我們需要曲面細分的支持,這樣我們就可以細化我們的幾何解析度,使得他能夠與位移貼圖更好地匹配,接下來我們將使用圖元型別D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST而不是D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST來繪制我們的網格三角形,通過這種方式,三角形的三個頂點將解釋成三角形面片的3個控制點,以允許我們來對每個三角形進行鑲嵌,

頂點著色器

當我們處理曲面細分的時候,我們必須決定每個三角形的細分程度,這里我們將引入一個簡單的距離量來確定細分數目,若三角形離攝像機越近,它的細分程度越大,頂點著色器通過計算每個頂點和攝像機之間的距離來幫助我們計算出曲面細分因子,然后將其傳遞給外給著色器,

在常量緩沖區中,我們引入了下面這些資料來控制距離的計算,這些值的設定非常依賴于場景(你的場景有多大,以及你想要怎樣的細分程度):

cbuffer CBChangesEveryFrame
{
    // ...
    float g_HeightScale;
    float g_MaxTessDistance;
    float g_MinTessDistance;
    float g_MinTessFactor;
    float g_MaxTessFactor;
}
  1. g_MaxTessDistance:從攝像機到該頂點的距離拉近到某個閾值時,將會達到最大的曲面細分因子
  2. g_MinTessDistance:從攝像機到該頂點的距離拉遠到某個閾值時,將會達到最小的曲面細分因子
  3. g_MinTessFactor:曲面細分因子的最小值,比如說你想讓每個三角形無論距離攝像機多遠,都要讓它最少被鑲嵌成3份
  4. g_MaxTessFactor:曲面細分因子的最大值,比如說你想讓這些三角形無論距離攝像機多近,它最多的鑲嵌份數不超過6.此外,回想起上一章所提到的建議,鑲嵌后的三角形如果少于8個像素將會變得低效,

此外我們應該留意到g_MaxTessDistance < g_MinTessDistance,因為隨著頂點距離我們的攝像機越近,鑲嵌的份數將會越多,

使用這些變數,我們就可以創建一個關于距離的線性函式來決定如何根據距離來確定鑲嵌的份數,

// DisplacementMapObject_VS.hlsl
#include "Basic.hlsli"

// 頂點著色器
TessVertexOut VS(VertexPosNormalTangentTex vIn)
{
    TessVertexOut vOut;

    vOut.PosW = mul(float4(vIn.PosL, 1.0f), g_World).xyz;
    vOut.NormalW = mul(vIn.NormalL, (float3x3) g_WorldInvTranspose);
    vOut.TangentW = mul(vIn.TangentL, g_World);
    vOut.Tex = vIn.Tex;
    
    float d = distance(vOut.PosW, g_EyePosW);
    
    // 標準化曲面細分因子
    // TessFactor = 
    //   0, d >= g_MinTessDistance
    //   (g_MinTessDistance - d) / (g_MinTessDistance - g_MaxTessDistance), g_MinTessDistance <= d <= g_MaxTessDistance
    //   1, d <= g_MaxTessDistance
    float tess = saturate((g_MinTessDistance - d) / (g_MinTessDistance - g_MaxTessDistance));
    
    // [0, 1] --> [g_MinTessFactor, g_MaxTessFactor]
    vOut.TessFactor = g_MinTessFactor + tess * (g_MaxTessFactor - g_MinTessFactor);
    
    return vOut;
}

// DisplacementMapInstance_VS.hlsl
#include "Basic.hlsli"

// 頂點著色器
TessVertexOut VS(InstancePosNormalTangentTex vIn)
{
    TessVertexOut vOut;
    
    vOut.PosW = mul(float4(vIn.PosL, 1.0f), vIn.World).xyz;
    vOut.NormalW = mul(vIn.NormalL, (float3x3) vIn.WorldInvTranspose);
    vOut.TangentW = mul(vIn.TangentL, vIn.World);
    vOut.Tex = vIn.Tex;
    
    float d = distance(vOut.PosW, g_EyePosW);
    
    // 標準化曲面細分因子
    // TessFactor = 
    //   0, d >= g_MinTessDistance
    //   (g_MinTessDistance - d) / (g_MinTessDistance - g_MaxTessDistance), g_MinTessDistance <= d <= g_MaxTessDistance
    //   1, d <= g_MaxTessDistance
    float tess = saturate((g_MinTessDistance - d) / (g_MinTessDistance - g_MaxTessDistance));
    
    // [0, 1] --> [g_MinTessFactor, g_MaxTessFactor]
    vOut.TessFactor = g_MinTessFactor + tess * (g_MaxTessFactor - g_MinTessFactor);
    
    return vOut;
}


外殼著色器

回想上一章說的,常量外殼著色器對每個面片進行計算,并且它的任務是要輸出該面片的曲面細分因子,曲面細分因子將告訴鑲嵌器階段對該面片以怎樣的程度來進行鑲嵌處理,曲面細分因子計算的大部分作業是由頂點著色器所完成的,但仍有一部分的作業需要交給常量外殼著色器處理,特別地,我們通過對頂點曲面細分因子進行求平均值的方式來得到邊緣的曲面細分因子,至于內部的曲面細分因子,我們就隨意挑選了第一條邊的曲面細分因子,

PatchTess PatchHS(InputPatch<TessVertexOut, 3> patch,
                  uint patchID : SV_PrimitiveID)
{
    PatchTess pt;
	
    // 對每條邊的曲面細分因子求平均值,并選擇其中一條邊的作為其內部的
    // 曲面細分因子,基于邊的屬性來進行曲面細分因子的計算非常重要,這
    // 樣那些與多個三角形共享的邊將會擁有相同的曲面細分因子,否則會導
    // 致間隙的產生
    pt.EdgeTess[0] = 0.5f * (patch[1].TessFactor + patch[2].TessFactor);
    pt.EdgeTess[1] = 0.5f * (patch[2].TessFactor + patch[0].TessFactor);
    pt.EdgeTess[2] = 0.5f * (patch[0].TessFactor + patch[1].TessFactor);
    pt.InsideTess = pt.EdgeTess[0];
	
    return pt;
}

那些與多個三角形所共享的邊應當擁有相同的曲面細分因子,否則可能會出現網格三角形間的縫隙(見下圖),舉個例子說下不計算曲面細分因子的情況,加入我們通過攝像機到三角形中心點的距離來計算內部曲面細分因子,然后我們將內部的曲面細分因子也設定到邊緣曲面細分因子上,如果兩個鄰接三角形擁有不同的內部曲面細分因子,它們的邊也將會擁有不同的曲面細分因子,從而導致在進行位移映射后會產生T型連接的縫隙效果,

可以看到,圖a展示了兩個三角形共享一條邊,圖b上面的三角形進行了一次邊緣細分,下面的三角形則沒有細分,圖c上面的三角形進行了一次內部細分,經過位移映射后,新產生的頂點被移走了(一般是向內移動),從而在兩個三角形之間產生了一條縫隙,

控制點外殼著色器以面片的控制點作為輸入,每次呼叫處理一個控制點并輸出,在本章示例專案中,控制點外殼著色器僅僅是將資料進行直傳:

// 外殼著色器
[domain("tri")]
[partitioning("fractional_odd")]
[outputtopology("triangle_cw")]
[outputcontrolpoints(3)]
[patchconstantfunc("PatchHS")]
HullOut HS(InputPatch<TessVertexOut, 3> patch,
    uint i : SV_OutputControlPointID,
    uint patchId : SV_PrimitiveID)
{
    HullOut hOut;
	
	// 直傳
    hOut.PosW = patch[i].PosW;
    hOut.NormalW = patch[i].NormalW;
    hOut.TangentW = patch[i].TangentW;
    hOut.Tex = patch[i].Tex;
	
    return hOut;
}

域著色器

經過鑲嵌器創建出來的每個頂點都會有呼叫一次域著色器,在這里我們將會對高度圖(即法線貼圖的Alpha通道部分)進行采樣,然后利用法向量對頂點偏移,從而完成整個位移映射的程序,

// DisplacementMap_DS.hlsl
#include "Basic.hlsli"

[domain("tri")]
VertexOutNormalMap DS(PatchTess patchTess,
             float3 bary : SV_DomainLocation,
             const OutputPatch<HullOut, 3> tri)
{
    VertexOutNormalMap dOut;
    
    // 對面片屬性進行插值以生成頂點
    dOut.PosW     = bary.x * tri[0].PosW     + bary.y * tri[1].PosW     + bary.z * tri[2].PosW;
    dOut.NormalW  = bary.x * tri[0].NormalW  + bary.y * tri[1].NormalW  + bary.z * tri[2].NormalW;
    dOut.TangentW = bary.x * tri[0].TangentW + bary.y * tri[1].TangentW + bary.z * tri[2].TangentW;
    dOut.Tex      = bary.x * tri[0].Tex      + bary.y * tri[1].Tex      + bary.z * tri[2].Tex;
    
    // 對插值后的法向量進行標準化
    dOut.NormalW = normalize(dOut.NormalW);
    
    //
    // 位移映射
    //
    
    // 基于攝像機到頂點的距離選取mipmap等級;特別地,對每個MipInterval單位選擇下一個mipLevel
    // 然后將mipLevel限制在[0, 6]
    const float MipInterval = 20.0f;
    float mipLevel = clamp((distance(dOut.PosW, g_EyePosW) - MipInterval) / MipInterval, 0.0f, 6.0f);
    
    // 對高度圖采樣(存在法線貼圖的alpha通道)
    float h = g_NormalMap.SampleLevel(g_Sam, dOut.Tex, mipLevel).a;
    
    // 沿著法向量進行偏移
    dOut.PosW += (g_HeightScale * (h - 1.0f)) * dOut.NormalW;
    
    // 生成投影紋理坐標
    dOut.ShadowPosH = mul(float4(dOut.PosW, 1.0f), g_ShadowTransform);
    
    // 投影到齊次裁減空間
    dOut.PosH = mul(float4(dOut.PosW, 1.0f), g_ViewProj);
    
    // 從NDC坐標[-1, 1]^2變換到紋理空間坐標[0, 1]^2
    // u = 0.5x + 0.5
    // v = -0.5y + 0.5
    // ((xw, yw, zw, w) + (w, w, 0, 0)) * (0.5, -0.5, 1, 1) = ((0.5x + 0.5)w, (-0.5y + 0.5)w, zw, w)
    //                                                      = (uw, vw, zw, w)
    //                                                      =>  (u, v, z, 1)
    dOut.SSAOPosH = (dOut.PosH + float4(dOut.PosH.ww, 0.0f, 0.0f)) * float4(0.5f, -0.5f, 1.0f, 1.0f);
    
    return dOut;
}

這里值得注意的是,我們需要在域著色器中自行選擇mipmap等級,像素著色器中的方法Texture2D::Sample在域著色器中是不能使用的,所以我們必須使用Texture2D::SampleLevel方法并手工指定mipmap等級,

如果我們只是學了法線貼圖的話,到這里基本上就了解的差不多了,但如果學了陰影映射和SSAO的話,那么這里就又多了兩個坑要填了,如果我們用了位移映射來繪制,那么在繪制陰影的時候,也一樣要走一遍位移映射;對于SSAO來說也更是如此,如果不對SSAO寫入深度值的程序加入位移映射,那么在正式繪制場景的時候就會因為像素深度值不一致而被剔除,從而導致了在運行龍書的SSAO Demo時,在開啟了位移映射之后,那些擁有法線貼圖的物體都沒有被畫出來的現象:

所以接下來做的事情就是體力活了,把DisplacementMap從頂點著色器到域著色器的實作原理也要搬運到繪制陰影圖的程序,以及在SSAO繪制法向量/深度緩沖區順便寫入深度/模板緩沖區的程序中,因為代碼上高度相似,這里我就只是列出本章新增的著色器檔案串列:

BasicEffect SSAOEffect ShadowEffect
DisplacementMapObject_VS SSAO_NormalDepth_ObjectTess_VS ShadowObjectTess_VS
DisplacementMapInstance_VS SSAO_NormalDepth_InstanceTess_VS ShadowInstanceTess_VS
DisplacementMap_HS SSAO_NormalDepth_HS Shadow_DS
DisplacementMap_DS SSAO_NormalDepth_DS Shadow_HS

C++端代碼實作

在本章中,與位移映射直接相關的類有BasicEffectSSAOEffectShadowEffect類,都是在前面的基礎上作的修改,然后GameObjectDraw也為此有所修改,GameApp類承擔了實作程序,和SSAO的相比繪制框架的變動比較小,這里就不放出修改的部分了,讀者可以自行瀏覽,

網格細節問題

首先要注意的是,我們是對頂點進行位移映射,如果網格的三角形比較大,比如說只有4個頂點的地板,經過曲面細分后能生成的新頂點也比較有限,位移映射的效果就不明顯,為此,我們需要增大網格模型的頂點密集程度,意味著我們增大了高度圖的采樣點數目,以讓我們能夠逼近真實的地形,如果我們不走曲面細分,那我們就需要提前準備三角形密集的網格資料,這樣需要占用比較多的顯存或記憶體,但即便是用了曲面細分,我們要權衡初始網格的頂點密集程度,以及經過曲面細分后的頂點密集程度如何,

在本章的示例中,我們的地面不再使用Geometry::CreatePlain,而是用Geometry::CreateTerrain來創建出更加精細的地面網格,由于一開始寫的Geometry::CreateCylinder它的側面三角形比較大,曲面細分后的頂點數目也不夠密集,為此我已經修改了它的實作,讓側面能夠支持分層的三角形,

演示

下面的動圖展示了基礎繪制、法線貼圖繪制、位移貼圖繪制下的區別,以及曲面細分前后網格的區別,

而下面的動圖則展示了不同的HeightScale下位移映射的效果,

DirectX11 With Windows SDK完整目錄

Github專案原始碼

歡迎加入QQ群: 727623616 可以一起探討DX11,以及有什么問題也可以在這里匯報,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/27780.html

標籤:其他

上一篇:CocosCreator之AssetBundle使用方案分享

下一篇:CocosCreator之分層管理的ListView

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more