最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

重復(fù)造輪子の達(dá)芬奇DCTL編程參考文檔part.1

2023-04-07 14:26 作者:PaletteLooks  | 我要投稿

I)介紹:

??本文檔提供了DaVinci Color Transform Language (DCTL)的快速參考和展示,包括語(yǔ)法,API和功能。DCTL的語(yǔ)法類似于C語(yǔ)言,同時(shí)具有額外的定義。用戶可以使用DCTL代碼定義函數(shù)來(lái)創(chuàng)建視頻效果,將其保存到文件中,并在Resolve中運(yùn)行它。這樣的效果作為一個(gè)“像素著色器”程序——即它定義了一個(gè)過程,以每個(gè)給定幀的坐標(biāo)為每次生成一個(gè)像素?cái)?shù)據(jù)。DCTL代碼在不同平臺(tái)和圖形子系統(tǒng)中在DaVinci Resolve中得到GPU加速。在Resolve中,DCTL效果可以作為顏色LUT運(yùn)行,使用DCTL OFX插件或過渡插件。DCTL效果通常保存為純文本.dctl文件,但如果需要,開發(fā)人員可以進(jìn)一步將加密dctl保存為.dctle文件進(jìn)行分發(fā)。請(qǐng)參見DCTLs下的加密DCTL?Encryption。為了簡(jiǎn)化,本文檔使用“DCTL”一詞來(lái)指代邏輯單元(程序、函數(shù)或效果),而使用更通用的“DCTL”或“DCTL代碼”一詞來(lái)指代語(yǔ)言和語(yǔ)法。


II)DCTL類型:

有兩種主要類型的DCTL:

  1. transform?變換DCTL對(duì)單個(gè)片段的每個(gè)幀應(yīng)用一個(gè)效果。

  2. transition?過渡DCTL在時(shí)間上混合兩個(gè)片段的幀來(lái)應(yīng)用一個(gè)效果。

變換DCTL執(zhí)行顏色變換或創(chuàng)建效果(例如增加幀的亮度-請(qǐng)參考包含的Gain.dctl示例)。用戶可以通過以下4種方式應(yīng)用變換DCTL:

  • 創(chuàng)建顏色校正節(jié)點(diǎn),打開上下文菜單,通過LUT選項(xiàng)來(lái)選擇應(yīng)用相關(guān)dctl

  • 創(chuàng)建顏色校正節(jié)點(diǎn),添加ResolveFX DCTL插件,并從DCTL列表中選擇所需的DCTL文件

  • 在LUT瀏覽器中,預(yù)覽結(jié)果并選擇應(yīng)用LUT到當(dāng)前節(jié)點(diǎn)

  • 打開片段縮略圖的上下文菜單,通過LUT選擇應(yīng)用

??transition?過渡DCTL創(chuàng)建場(chǎng)景過渡,例如淡出混合兩個(gè)片段剪輯之間(請(qǐng)參考DissolveTransition.dctl示例)。過渡DCTL只能在OpenFX DCTL Transition Plugin中使用(位于[ Resolve > Edit Page > OpenFX > Transition > ResolveFX Color > DCTL ])。

??DCTL過渡插件的使用方式與任何其他過渡插件(Resolve的視頻過渡、OpenFX過渡等)相同。添加插件后,用戶可以從DCTL列表中選擇一個(gè)DCTL文件,對(duì)應(yīng)的過渡效果將被應(yīng)用。

加密DCTL:

在Resolve中,用戶可以使用到期日期加密.dctl文件,以分發(fā)不公開的效果。加密的.dctle可以在任何Resolve系統(tǒng)中正常分發(fā)和使用,直到它過期為止

加密DCTL的方法:從LUT瀏覽器中,選擇所需的.dctl文件,打開上下文菜單,選擇“加密DCTL”選項(xiàng)。一個(gè)助手對(duì)話框會(huì)出現(xiàn),供用戶設(shè)置加密DCTL的名稱、過期日期和輸出文件夾。加密的DCTL將具有.dctle擴(kuò)展名

III)DCTL語(yǔ)法:

DCTL的語(yǔ)法類似于C語(yǔ)言,并使用基本C類型語(yǔ)法比如?- int、float、char*、pointer等。在閱讀本文檔時(shí),了解C編程語(yǔ)言術(shù)語(yǔ)會(huì)有所幫助。

額外的DCTL類型包括以下內(nèi)容:

TEXTURE - 紋理引用類型。

float2、float3和float4 - 分別為2個(gè)、3個(gè)和4個(gè)浮點(diǎn)值的向量類型。

實(shí)用函數(shù)make_float2(float,float)、make_float3(float,float,float)和make_float4(float,float,float,float)可用于構(gòu)造它們。

這些限定符用于:

DEVICE - 限定符:用于定義函數(shù)

CONSTANT - 限定符:用于定義常量?jī)?nèi)存

CONSTANTREF - 限定符:用于將常量?jī)?nèi)存參數(shù)傳遞給函數(shù)

可以使用“typedef struct”語(yǔ)法來(lái)定義結(jié)構(gòu)體,例如:

typedef struct { float c00, c01, c02; float c10, c11, c12; } Matrix;

使用__CONSTANT__來(lái)限定常量?jī)?nèi)存變量。

__CONSTANT__ float NORM[] = {1.0f / 3.0f, 1.0f / 3.0f, 1.0f / 3.0f};

要將常量?jī)?nèi)存作為函數(shù)參數(shù)傳遞,請(qǐng)使用__CONSTANTREF__限定符。

__DEVICE__ float DoSomething(__CONSTANTREF__ float* p_Params)

DCTL編程環(huán)境還允許只讀訪問多個(gè)全局常量。這些在下面各節(jié)的上下文中進(jìn)行了描述。


1)主入口函數(shù)?The Main Entry Function

每個(gè)DCTL文件必須使用一個(gè)名為'transform()'或'transition()'的單個(gè)主入口函數(shù),并具有下面所示的函數(shù)簽名。注意:請(qǐng)完全按照下面的函數(shù)定義使用 - 包括參數(shù)類型和名稱。

變換DCTL的Transform入口函數(shù)應(yīng)為以下之一:

1

?__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, float p_R, float p_G, float p_B)

2?

__DEVICE__ float3 transform(int p_Width, int p_Height, int p_X, int p_Y, __TEXTURE__ p_TexR, __TEXTURE__ p_TexG, __TEXTURE__ p_TexB)


代碼描述:

? ?該函數(shù)在提供的輸入?yún)?shù)的基礎(chǔ)上,在單個(gè)圖像(0、0、p_Width、p_Height)的偏移量(p_X,p_Y)處執(zhí)行像素轉(zhuǎn)換。


參數(shù)解釋:

* p_Widthp_Height - 圖像分辨率即為畫面的高和寬

* p_Xp_Y - 轉(zhuǎn)換函數(shù)執(zhí)行顏色轉(zhuǎn)換的像素坐標(biāo)

* (p_R,p_G,p_B) - 輸入像素的RGB值(在第一個(gè)簽名中)

* (p_TexR,p_TexG,p_TexB) - RGB的紋理引用(在第二個(gè)簽名中)

函數(shù)可以通過調(diào)用_tex2D([textureVariable],[posX],[posY])請(qǐng)求圖像中任何像素的RGB值,返回一個(gè)浮點(diǎn)值(posX和posY是所需的輸入像素坐標(biāo))。

返回值?Returns:

兩個(gè)變換函數(shù)為結(jié)果圖像中的每個(gè)像素坐標(biāo)(p_X,p_Y)返回一個(gè)float3(RGB)值

過渡DCTL的Transition函數(shù)使用以下簽名:

__DEVICE__ float4 transition(int p_Width, int p_Height, int p_X, int p_Y, __TEXTURE__ p_FromTexR, __TEXTURE__ p_FromTexG, __TEXTURE__ p_FromTexB, __TEXTURE__ p_FromTexA, __TEXTURE__ p_ToTexR, __TEXTURE__ p_ToTexG, __TEXTURE__ p_ToTexB, __TEXTURE__ p_ToTexA)

描述: 該代碼可以執(zhí)行在時(shí)間線上從一個(gè)片段到另一個(gè)片段進(jìn)行淡入淡出的混合。隨著過渡的進(jìn)行,DCTL邏輯會(huì)從“From”和“To”片段中選擇適當(dāng)?shù)膱D像,并為每個(gè)混合請(qǐng)求調(diào)用此函數(shù)。函數(shù)內(nèi)可以使用全局只讀浮點(diǎn)變量“TRANSITION_PROGRESS”來(lái)監(jiān)視過渡的進(jìn)度,范圍從0(即將開始的過渡)到1(過渡已結(jié)束)。請(qǐng)參見“其他DCTL關(guān)鍵字”部分。

參數(shù):

* p_Width和p_Height - 輸出圖像分辨率

* p_X和p_Y - 存儲(chǔ)混合結(jié)果的輸出像素坐標(biāo)

* (p_FromTexR,p_FromTexG,p_FromTexB) - 過渡變化時(shí)圖像的RGB紋理引用。?

* (p_ToTexR,p_ToTexG,p_ToTexB) - 過渡變化時(shí)圖像的RGB紋理引用。

與第二個(gè)變換簽名類似,函數(shù)可以使用_tex2D([textureVariable],[posX],[posY])函數(shù)訪問“From”和“To”紋理中任何像素的RGB值。

返回值returns: 過渡函數(shù)為結(jié)果圖像中的每個(gè)像素坐標(biāo)(p_X,p_Y)返回一個(gè)float4(RGBA)值。

2)包含頭文件?Including Headers:

您可以將常用的DCTL邏輯添加到一個(gè)頭文件中,以便在多個(gè)效果中調(diào)用。要包含頭文件,請(qǐng)?zhí)砑右韵聴l目:

#include "[pathToHeader]"

路徑和頭文件的位置是相對(duì)于DCTL文件的位置的。

一旦包含,就可以在包含點(diǎn)之后引用和使用此頭文件中的函數(shù)。

4)在DCTL中定義和使用LUT:

色彩查找表(LUT)可以從外部文件中引用,并使用DEFINE_LUT和APPLY_LUT函數(shù)應(yīng)用。 ?DEFINE_LUT([lutName], [lutPath]);

參數(shù)解釋: [lutName]是LUT的用戶定義名稱 - [lutPath]是指向外部LUT文件的路徑??梢允褂媒^對(duì)路徑和相對(duì)于DCTL位置的路徑。

?APPLY_LUT(r, g, b, [lutName]);

參數(shù)解釋: ?(r, g, b)是LUT的rgb坐標(biāo) - [lutName]是用戶定義的LUT名稱 - 這必須與先前的DEFINE_LUT或DEFINE_CUBE_LUT調(diào)用相匹配(見下文)。

自DaVinci Resolve 17起,可以使用DEFINE_CUBE_LUT函數(shù)內(nèi)聯(lián)定義LUT。 DEFINE_CUBE_LUT([lutName]) ?

{?

[LUT_Content]?

}

參數(shù)解釋: - [LUT_Content]即是lut代碼,應(yīng)該用花括號(hào)'{}'括起來(lái),并且需要遵循CUBE LUT標(biāo)準(zhǔn)格式。 - 可以使用APPLY_LUT函數(shù)以與引用的LUT相同的方式應(yīng)用這些LUT。

以下規(guī)則適用:

  • ?- LUT必須在使用之前在DCTL文件中定義。?

  • - 可以在單個(gè)DCTL中定義和應(yīng)用多個(gè)LUT。

  • ?- 可以在DCTL文件中定義多個(gè)CUBE LUT,并且可以放置在DCTL的主入口函數(shù)之前或之后。?

  • - LUT文件必須是.cube格式,1D或3D LUT

  • - 1D LUT/Shaper LUT將使用LINEAR線性插值方法應(yīng)用

  • - 3D LUT將根據(jù)在達(dá)芬奇Resolve中設(shè)置的[項(xiàng)目設(shè)置>顏色管理>3D查找表插值]中設(shè)置的TRILINEAR三線性或TETRAHEDRAL四面體插值方法來(lái)應(yīng)用

4)其他DCTL關(guān)鍵字:

__RESOLVE_VER_MAJOR__和__RESOLVE_VER_MINOR__關(guān)鍵字包含用于檢查和保護(hù)特定版本DCTL邏輯的版本值。

例如:對(duì)于Resolve 17.0,

RESOLVE_VER_MAJOR = 17,RESOLVE_VER_MINOR = 0。 #if ((RESOLVE_VER_MAJOR >= 17) && (RESOLVE_VER_MINOR >= 0)) CallResolve17SpecificLogic(); #else CallAlternativeLogic(); #endif

DEVICE_IS_CUDA,DEVICE_IS_OPENCL,DEVICE_IS_METAL關(guān)鍵字用于用戶在CUDA、OpenCL和Metal環(huán)境中有條件地檢查和執(zhí)行代碼。?

例如:#ifdef DEVICE_IS_CUDA DoSomethingCUDASpecific(); #endif

對(duì)于Transition DCTLs,TRANSITION_PROGRESS關(guān)鍵字將當(dāng)前轉(zhuǎn)換狀態(tài)的進(jìn)度作為浮點(diǎn)值保存,范圍為[0.0f,1.0f]。在轉(zhuǎn)換期間,DaVinci Resolve更新TRANSITION_PROGRESS值,并為每個(gè)圖像調(diào)用轉(zhuǎn)換主入口函數(shù)。DissolveTransition.dctl示例說(shuō)明如何使用此關(guān)鍵字。


重復(fù)造輪子の達(dá)芬奇DCTL編程參考文檔part.1的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
吉木萨尔县| 墨竹工卡县| 大余县| 眉山市| 衡阳市| 益阳市| 郧西县| 登封市| 灯塔市| 丰原市| 潞西市| 五指山市| 遂平县| 大庆市| 康乐县| 梓潼县| 宜宾县| 温州市| 清涧县| 惠安县| 镇沅| 鄂州市| 南宫市| 九龙县| 凌海市| 新龙县| 镇坪县| 东辽县| 佛冈县| 镶黄旗| 湘乡市| 西华县| 基隆市| 霞浦县| 安岳县| 巍山| 宿松县| 梁平县| 竹北市| 墨竹工卡县| 鄂伦春自治旗|