国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

這篇具有很好參考價值的文章主要介紹了讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

ChatGPT的火熱大家應該都有目共睹,文案工作者、翻譯工作者和畫師等各種行業(yè)都在被嘲即將失業(yè)。不光是這些崗位的員工,作為資深社畜程序猿也能感受到會受到?jīng)_擊。網(wǎng)上很多人都在發(fā)ChatGPT寫的代碼,并開始大肆宣揚AI要取代程序員了,今天測一測使用ChatGPT來生成一些代碼,看看到底AI到底會不會真的直接替程序猿,還是大家炒作的噱頭。當然使用ChatGPT還是需要各種操作,科學上網(wǎng)、注冊和付費等,這里就不進行教學了,如果愿意折騰的請自行查詢折騰吧。這里就以Unity3d的著色器需求進行了測試。

綠幕摳圖

綠幕摳圖功能在視頻交互場景還是很有這方面的需求,在有綠幕攝像頭畫面的場景中,將人物進行摳圖并疊加場景等,這里我讓ChatGPT幫我編寫一個綠幕摳圖的著色器:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

其給出的源碼如下:

Shader "Custom/GreenScreen" {
    Properties {
        _MainTex ("Texture", 2D) = "white" {}
        _GreenScreenKeyColor ("Green Screen Key Color", Color) = (0,1,0,1)
    }
 
    SubShader {
        Tags {"Queue"="Transparent" "RenderType"="Opaque"}
        Pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
 
            sampler2D _MainTex;
            float4 _GreenScreenKeyColor;
            float4 _ScreenParams;
 
            struct appdata {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
 
            struct v2f {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
 
            v2f vert (appdata v) {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }
 
            fixed4 frag (v2f i) : SV_Target {
                float4 tex = tex2D(_MainTex, i.uv);
                float3 key = _GreenScreenKeyColor.rgb;
                float3 src = tex.rgb;
                float dist = distance(key, src);
                if (dist < 0.05) {
                    discard;
                } else {
                    return tex;
                }
            }
            ENDCG
        }
    }
}

并給出了簡單的說明:

該shader使用了一個名為“_GreenScreenKeyColor”的屬性,它接受一個顏色值作為輸入,用于指定要去除的顏色。在頂點著色器中,將紋理坐標(uv)傳遞給片段著色器。在片段著色器中,將使用tex2D函數(shù)從_MainTex采樣紋理,并計算像素的顏色是否與關(guān)鍵顏色接近。如果是,則放棄該像素;否則返回原始紋理顏色。

當我將上面的代碼放入Unity工程中新建的shader文件中時,還是不正確的效果,而且編譯有錯誤:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

我依次按提示進行了修改,一個是多出的變量定義,另一個錯誤是if – else中有分支無返回的邏輯錯誤。修改后的代碼:

Shader "Custom/GreenScreen" {
    Properties{
        _MainTex("Texture", 2D) = "white" {}
        _GreenScreenKeyColor("Green Screen Key Color", Color) = (0,1,0,1)
    }

        SubShader{
            Tags {"Queue" = "Transparent" "RenderType" = "Opaque"}
            Pass {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag

                sampler2D _MainTex;
                float4 _GreenScreenKeyColor;

                struct appdata {
                    float4 vertex : POSITION;
                    float2 uv : TEXCOORD0;
                };

                struct v2f {
                    float2 uv : TEXCOORD0;
                    float4 vertex : SV_POSITION;
                };

                v2f vert(appdata v) {
                    v2f o;
                    o.vertex = UnityObjectToClipPos(v.vertex);
                    o.uv = v.uv;
                    return o;
                }

                fixed4 frag(v2f i) : SV_Target {
                    float4 tex = tex2D(_MainTex, i.uv);
                    float3 key = _GreenScreenKeyColor.rgb;
                    float3 src = tex.rgb;
                    float dist = distance(key, src);
                    if (dist < 0.05) {
                        discard;
                    }
                    return tex;
                }
               ENDCG
            }
        }
}

這樣我在網(wǎng)上找了個“勇敢勇敢我的朋友”的綠幕素材視頻進行了測試,在設(shè)置了摳圖顏色值的_GreenScreenKeyColor,效果如下:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

其實這個著色器基本滿足了我的功能需求,不過因為它的屬性還是單一的顏色摳圖設(shè)置,所以會有邊緣未扣干凈的情況。

輪廓增強

這里我繼續(xù)進行了輪廓增強的shader的對話:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

自帶的說明,該shader具有三個屬性:紋理、輪廓顏色和輪廓寬度。在主Pass中,我們獲取輸入像素的顏色,并根據(jù)輪廓寬度計算出alpha值,然后將輸入顏色和輪廓顏色進行插值,從而產(chǎn)生輪廓增強效果。

同樣的這個著色器也是沒法直接使用的:

undeclared identifier '_MainTex’Compiling Fragment program Platform…

‘tex2D’: no matching 2 parameter intrinsic function; Possible intrinsic functions are: tex2D(sampler2D, float2|half2|min10float2|min16float2)…

invalid subscript ‘uv’ Compiling Vertex program Platform…

Output value ‘vert’ is not completely initialized Compiling Vertex program Platform…

按提示修改為如下:

Shader "Custom/Outline" {
    Properties{
        _MainTex("Texture", 2D) = "white" {}
        _OutlineColor("Outline Color", Color) = (0,0,0,1)
        _OutlineWidth("Outline Width", Range(0,10)) = 1
    }

        SubShader{
            Tags {"Queue" = "Transparent" "RenderType" = "Opaque"}
            Pass {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag

                sampler2D _MainTex;
                fixed4 _OutlineColor;
                float _OutlineWidth;

                struct appdata {
                    float4 vertex : POSITION;
                    float2 uv : TEXCOORD0;
                };

                struct v2f {
                    float4 pos : SV_POSITION;
                    float2 uv : TEXCOORD0;
                };

                v2f vert(appdata v) {
                    v2f o;
                    o.pos = UnityObjectToClipPos(v.vertex);
                    o.uv = v.uv;
                    return o;
                }


                fixed4 frag(v2f i) : SV_Target {
                    fixed4 col = tex2D(_MainTex, i.uv);
                    float2 d = fwidth(i.uv);
                    float alpha = 1 - smoothstep(_OutlineWidth - d.x, _OutlineWidth + d.x, col.a);
                    return lerp(col, _OutlineColor, alpha);
                }
                ENDCG
            }
        }
}

但是功能并不是我所需要的:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

可能進行多次對話和優(yōu)化,其充分理解了需求能解決這個問題。我讓他繼續(xù)進行了代碼解釋:

以上Shader代碼定義了一個名為"Custom/Outline"的Shader。該Shader有三個屬性:_MainTex(紋理)、_OutlineColor(輪廓顏色)和_OutlineWidth(輪廓寬度)。在實際使用中,這些屬性可以在Material面板上進行設(shè)置。

Shader中的SubShader定義了渲染管線階段,并且使用了Tags指令來指定Shader Queue和RenderType。在這個例子中,我們將隊列設(shè)置為Transparent并將RenderType設(shè)置為Opaque以確保深度測試正常工作。

Pass指令用于定義著色器最終的輸出顏色,包括頂點著色器和片元著色器兩種類型。在這個例子中,我們使用CGPROGRAM指令將Cg/HLSL語言嵌入到Shader中,然后使用#pragma vertex vert和#pragma fragment frag指令分別定義了頂點著色器和片元著色器。

在接下來的代碼中,我們定義了兩個結(jié)構(gòu)體:appdata和v2f。appdata結(jié)構(gòu)體保存了輸入頂點的位置信息,而v2f結(jié)構(gòu)體保存了傳遞給片元著色器的位置信息。

在頂點著色器vert函數(shù)中,我們將輸入位置轉(zhuǎn)換為剪裁空間中的位置,并將其賦值給v2。

賽博朋克風格

之后我再讓其幫忙編寫一個簡單的賽博朋克風格的shaderlab代碼著色器:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

其簡單說明了該著色器:

這個shader使用了標準的表面著色模型,在表面著色函數(shù)中對材質(zhì)的屬性進行了設(shè)置和計算。其中,Albedo屬性使用了一個2D紋理和顏色值來確定表面的基礎(chǔ)色,Metallic屬性用于控制金屬感,Smoothness屬性用于控制光滑度,Emission屬性用于添加發(fā)光效果。此外,還添加了一些偽裝置光,使得物體表面呈現(xiàn)出類似賽博朋克風格的效果。

給出的代碼也是沒法直接進行使用的,報錯如下:

invalid subscript ‘worldNormal’

在輸入的結(jié)構(gòu)體內(nèi)添加了參數(shù):

struct Input {
   float2 uv_MainTex;
   float3 worldNormal : TEXCOORD0;
};

去除了報錯,其效果如下:
讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)

感覺效果還行的,不過具體是否是賽博朋克風格我也無法界定了,不過Albedo屬性和Emission屬性其實都是沒有的。

總結(jié)

從上面的測試能看出ChatGPT的強大毋庸置疑,當然它給出的代碼也不是完美無瑕的(從上面的測試可以看出來都是有錯誤的),目前來說它直接平替一個程序員應該說還不現(xiàn)實的,因為它寫的代碼還是需要程序員來走查代碼,并進行修改和優(yōu)化。
當然它還在不斷優(yōu)化,不說干掉所有的程序員,干掉那些很基礎(chǔ)的工作內(nèi)容是完全可能的,到時候可能就涉及到程序猿的大幅縮減了(僅個人看法),雖然“馬斯克們”呼吁暫停,OpenAI創(chuàng)始人:AI需要政府與社會的共同監(jiān)管,但是等發(fā)展和監(jiān)管體系完善后AI的發(fā)展仍然會向前發(fā)展。不過我們現(xiàn)在在使用這個ChatGPT完全是被別人掐這脖子走,不給我們用就不給,目前ChatGPT突遭大面積封號,根據(jù)傳聞,受影響的賬戶已經(jīng)達到了數(shù)百萬,亞洲是重災區(qū),其中不少都是國內(nèi)的賬號。所以我們要正常使用可能還有很長的路走。
當然面臨AI的對我們搬磚人的沖擊,我們應該怎樣面對呢?
說說個人的拙見吧,與其恐懼它,排斥和抵觸AI,不如嘗試駕馭它,讓其成為我們的工具,讓其臣服于我們,而不是敵視它、被它替換。文章來源地址http://www.zghlxwxcb.cn/news/detail-422102.html

到了這里,關(guān)于讓AI臣服,而不是被它替代!讓ChatGPT為我們編寫Unity3d Shaderlab的著色器(shader)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包