让AI臣服,而不是被它替代!让ChatGPT为我们编写Unity3d Shaderlab的着色器(shader)

前言

ChatGPT的火热大家应该都有目共睹,文案工作者、翻译工作者和画师等各种行业都在被嘲即将失业。不光是这些岗位的员工,作为资深社畜程序猿也能感受到会受到冲击。网上很多人都在发ChatGPT写的代码,并开始大肆宣扬AI要取代程序员了,今天测一测使用ChatGPT来生成一些代码,看看到底AI到底会不会真的直接替程序猿,还是大家炒作的噱头。当然使用ChatGPT还是需要各种操作,科学上网、注册和付费等,这里就不进行教学了,如果愿意折腾的请自行查询折腾吧。这里就以Unity3d的着色器需求进行了测试。

绿幕抠图

绿幕抠图功能在视频交互场景还是很有这方面的需求,在有绿幕摄像头画面的场景中,将人物进行抠图并叠加场景等,这里我让ChatGPT帮我编写一个绿幕抠图的着色器:
在这里插入图片描述

其给出的源码如下:

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 fragsampler2D _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函数从_MainTex采样纹理,并计算像素的颜色是否与关键颜色接近。如果是,则放弃该像素;否则返回原始纹理颜色。

当我将上面的代码放入Unity工程中新建的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 fragsampler2D _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}}
}

这样我在网上找了个“勇敢勇敢我的朋友”的绿幕素材视频进行了测试,在设置了抠图颜色值的_GreenScreenKeyColor,效果如下:
在这里插入图片描述

其实这个着色器基本满足了我的功能需求,不过因为它的属性还是单一的颜色抠图设置,所以会有边缘未扣干净的情况。

轮廓增强

这里我继续进行了轮廓增强的shader的对话:
在这里插入图片描述

自带的说明,该shader具有三个属性:纹理、轮廓颜色和轮廓宽度。在主Pass中,我们获取输入像素的颜色,并根据轮廓宽度计算出alpha值,然后将输入颜色和轮廓颜色进行插值,从而产生轮廓增强效果。

同样的这个着色器也是没法直接使用的:

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 fragsampler2D _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}}
}

但是功能并不是我所需要的:
在这里插入图片描述

可能进行多次对话和优化,其充分理解了需求能解决这个问题。我让他继续进行了代码解释:

以上Shader代码定义了一个名为"Custom/Outline"的Shader。该Shader有三个属性:_MainTex(纹理)、_OutlineColor(轮廓颜色)和_OutlineWidth(轮廓宽度)。在实际使用中,这些属性可以在Material面板上进行设置。

Shader中的SubShader定义了渲染管线阶段,并且使用了Tags指令来指定Shader Queue和RenderType。在这个例子中,我们将队列设置为Transparent并将RenderType设置为Opaque以确保深度测试正常工作。

Pass指令用于定义着色器最终的输出颜色,包括顶点着色器和片元着色器两种类型。在这个例子中,我们使用CGPROGRAM指令将Cg/HLSL语言嵌入到Shader中,然后使用#pragma vertex vert和#pragma fragment frag指令分别定义了顶点着色器和片元着色器。

在接下来的代码中,我们定义了两个结构体:appdata和v2f。appdata结构体保存了输入顶点的位置信息,而v2f结构体保存了传递给片元着色器的位置信息。

在顶点着色器vert函数中,我们将输入位置转换为剪裁空间中的位置,并将其赋值给v2。

赛博朋克风格

之后我再让其帮忙编写一个简单的赛博朋克风格的shaderlab代码着色器:
在这里插入图片描述

其简单说明了该着色器:

这个shader使用了标准的表面着色模型,在表面着色函数中对材质的属性进行了设置和计算。其中,Albedo属性使用了一个2D纹理和颜色值来确定表面的基础色,Metallic属性用于控制金属感,Smoothness属性用于控制光滑度,Emission属性用于添加发光效果。此外,还添加了一些伪装置光,使得物体表面呈现出类似赛博朋克风格的效果。

给出的代码也是没法直接进行使用的,报错如下:

invalid subscript ‘worldNormal’

在输入的结构体内添加了参数:

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

去除了报错,其效果如下:
在这里插入图片描述

感觉效果还行的,不过具体是否是赛博朋克风格我也无法界定了,不过Albedo属性和Emission属性其实都是没有的。

总结

从上面的测试能看出ChatGPT的强大毋庸置疑,当然它给出的代码也不是完美无瑕的(从上面的测试可以看出来都是有错误的),目前来说它直接平替一个程序员应该说还不现实的,因为它写的代码还是需要程序员来走查代码,并进行修改和优化。
当然它还在不断优化,不说干掉所有的程序员,干掉那些很基础的工作内容是完全可能的,到时候可能就涉及到程序猿的大幅缩减了(仅个人看法),虽然“马斯克们”呼吁暂停,OpenAI创始人:AI需要政府与社会的共同监管,但是等发展和监管体系完善后AI的发展仍然会向前发展。不过我们现在在使用这个ChatGPT完全是被别人掐这脖子走,不给我们用就不给,目前ChatGPT突遭大面积封号,根据传闻,受影响的账户已经达到了数百万,亚洲是重灾区,其中不少都是国内的账号。所以我们要正常使用可能还有很长的路走。
当然面临AI的对我们搬砖人的冲击,我们应该怎样面对呢?
说说个人的拙见吧,与其恐惧它,排斥和抵触AI,不如尝试驾驭它,让其成为我们的工具,让其臣服于我们,而不是敌视它、被它替换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29048.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文心一言 vs GPT-4实测!你怎么看?

编辑部 发自 凹非寺量子位 | 公众号 QbitAI GPT-4发布一天之后&#xff0c;压力全部给到百度这边。 就在昨天&#xff0c;百度交卷。 文心一言&#xff0c;百度全新一代知识增强大语言模型&#xff0c;正式在百度总部“挥手点江山”会议室里发布。 在一片静寂的氛围里&#xff…

文心一言 vs GPT-4,百度背水一战交卷

关注星标公众号&#xff0c;不错过精彩内容 直接来源 | 量子位 GPT-4发布一天之后&#xff0c;压力全部给到百度这边。 就在周四&#xff0c;百度交卷了。 文心一言&#xff0c;百度全新一代知识增强大语言模型&#xff0c;正式在百度总部“挥手点江山”会议室里发布。 在一片静…

亲测 百度文心一言 vs GPT-4!效果怎么样?

GPT-4发布一天之后&#xff0c;压力全部给到百度这边。 文心一言&#xff0c;百度全新一代知识增强大语言模型&#xff0c;正式在百度总部“挥手点江山”会议室里发布。 在一片静寂的氛围里&#xff0c;李彦宏小步登场&#xff0c;语气里带着点紧张&#xff1a; 大家的期望值&a…

重磅!百度发布文心一言!对比 GPT-4现场实测,股价大跌10%,百度背水一战?...

点击“开发者技术前线”&#xff0c;选择“星标” 让一部分开发者看到未来 量子位 | 公众号 QbitAI GPT-4发布一天之后&#xff0c;压力全部给到百度这边。 就在刚刚&#xff0c;百度交卷。 文心一言&#xff0c;百度全新一代知识增强大语言模型&#xff0c;正式在百度总部“挥…

文心一言 vs GPT-4 实测!百度背水一战交卷

点击关注公众号&#xff0c;Java干货及时送达 推荐阅读&#xff1a; 劝大家别再搞老旧的 Spring Cloud 了&#xff01; Spring Cloud 2022 正式发布&#xff01; 昨天发了《ChatGPT 这次赢麻了。。。》&#xff0c;让我更加领略到 ChatGPT 的魅力了&#xff0c;今天带大家来看下…

百度发布文心一言!对比GPT-4实测!百度顶住压力,背水一战

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 来源丨量子位&#xff08;ID&#xff1a;QbitAI&#xff09; 编辑部 发自 凹非寺 https://mp.weixin.qq.com/s/uO8N3RpcrYU8rV1RkwBxzQ GPT-4发布一天之后&#xff0…

多模态大模型时代下的文档图像智能分析与处理

多模态大模型时代下的文档图像智能分析与处理 0. 前言1. 人工智能发展历程1.1 传统机器学习1.2 深度学习1.3 多模态大模型时代 2. CCIG 文档图像智能分析与处理论坛2.1 文档图像智能分析与处理的重要性和挑战2.2 文档图像智能分析与处理高峰论坛2.3 走进合合信息 3. 文档图像智…

et99php,加密锁/加密狗ET199(包含网络锁功能)

ET199采用16位国外进口高性能智能卡芯片&#xff0c;锁内通过成熟的C51语言进行编程&#xff0c;是当今加密强度最高的加密锁。这里简单介绍一下ET199的开发过程&#xff0c;以便完全发挥ET199的全部功能。 (1)按照《ET199用户手册&#xff0d;加密锁篇》5.1节安装和配置KEIL环…

GSM信号嗅探

利用RTL-SDR实现GSM信号的嗅探工作 PS&#xff1a;以下项目是在Ubuntu20.04以及Gnuradio3.8下完成的 ​ GSM网络的不安全的事实是我们早已熟知的&#xff0c;事实上在国外12年左右就有完整的开源项目实现GSM Sniffing&#xff0c;国内大神在13年就非常详细的公开了如何实现GS…

《ChatGPT提问技术与艺术》目录发布

《ChatGPT提问艺术与技术》目录发布&#xff01;&#xff01;&#xff01; 前言 2022 年 11 月&#xff0c;OpenAI 推出了一款革命性的人工智能聊天机器人程序——ChatGPT&#xff08;Chat Generative Pre-trained Transformer&#xff09;。这款聊天机器人不仅能够协助人们进行…

将 ChatGPT 引入您的 IDE,快速使用Bito —之— Bito VS Cursor

什么是Bito&#xff1f; 官方解释&#xff1a;通过将 ChatGPT 引入您的 IDE 和 CLI 来帮助开发人员显著加速他们的影响。我们使用OpenAI的模型&#xff0c;您不必拥有OpenAI密钥。比托每天可以为您节省一个小时&#xff01;Bito AI使编写代码&#xff0c;理解语法&#xff0c;…

《花雕学AI》36:探索Aski AI——集成问答、写作和绘画功能的强大AI平台

引言&#xff1a;人工智能是当今时代的最热门和最有前途的技术之一&#xff0c;它可以帮助人类解决各种复杂和有趣的问题&#xff0c;提高生活和工作的效率和质量。然而&#xff0c;人工智能的应用还面临着许多挑战和局限&#xff0c;比如数据的稀缺和质量、算法的复杂性和可解…

想瘦身不伤体质,就要学会和脂肪做朋友

减肥的你&#xff0c;一定是谈脂肪色变&#xff0c;但是脂肪真的有那么可怕&#xff1f; 当然不是&#xff0c;每天摄入一定量的脂肪很有必要。因为脂肪供给人体的能量持久力最高&#xff0c;1克脂肪有9卡的热量&#xff0c;三大营养素中&#xff0c;停留在胃里时间最久、最能…

数说热点|社恐人群运动健身指南:不想去健身房,那就在家找面墙

连杰伦都开始跳操了&#xff0c;你还不动动动动动起来&#xff1f; 随着《运动者联盟》这档体育挑战真人秀节目的完美收官&#xff0c;忙碌生活中的运动激情似乎又被点燃了。5月9日&#xff0c;周杰伦现身厦门&#xff0c;在活动现场和刘耕宏合体跳起了《本草纲目》&#xff0…

健身房如何管理与运营?

健身房经营项目的综合性强&#xff0c;集多项运动于一体&#xff0c;能提供科学的、齐全的、安全的各种体育训练设备&#xff0c;虽然受室内场地限制&#xff0c;但健身房也在不断更新结构&#xff0c;为运动爱好者提供专业场所和器械&#xff0c;受健身、减脂人士喜爱。 健身房…

硬派健身——健身先健脑

俗话说得好&#xff0c;健身先健脑 认识自己的身体红白肌人体功能系统人体三大供能系统的相互关系 什么叫做胖 减肥为什么会失败&#xff1f;快走 or 慢跑&#xff1f;胖猴子才能活下来节食减肥为何失败致胖环境体重设定点&#xff08;set-point&#xff09;理论只有30分钟以上…

健身参考

一周三练 前言参考链接全身肌肉分布pre 热身一、胸、肱三头动作A&#xff1a;哑铃飞鸟动作B&#xff1a;哑铃俯身臂屈伸动作C&#xff1a;哑铃平板卧推动作D&#xff1a;哑铃上斜卧推动作E&#xff1a;哑铃下斜卧推动作F&#xff1a;龙门架夹胸动作G&#xff1a;龙门架屈臂下拉…

“健身餐”APP

第 1 章 绪论 1.1 研究的背景 随着社会发展&#xff0c;人们的生活质量越来越高&#xff0c;对自己身材的要求也越来越高&#xff0c; 健身健美中注重饮食&#xff0c;训练期间的饮食和生活需求较为严格[1]。经调查发现健身人 群的饮食结构非常苛刻&#xff0c;他们若想达到自…

健身Fitness

前言 加油 原文 健身常用会话 ❶ The school has recently built a new gym. 学校最近新建了一个体育馆。 ❷ Rowing machines provide a good indoor workout. 划船器械提供了一种很好的室内消耗体能的方式。 ❸ He strained and raised the barbell of 205 kilograms. 他…

有哪些既美味又健康的食品适合健身和减肥爱好者?

Ashley Yu &#xff0c;Eat Fit Love 张常绿、胭脂渗透、夏天聪 等人赞同 自己做健身餐一年了&#xff0c;越来越喜欢这种饮食模式&#xff0c;而且也喜欢研究尝试各种菜谱&#xff0c;把健身餐做的多样而且美味&#xff01; 早餐系列 - 水果烤燕麦 这个特别快手&#xff0c;…