位置: 编程技术 - 正文

学习Unity3D Shader篇 - CG语言入门(学习计划表模板)

编辑:rootadmin

推荐整理分享学习Unity3D Shader篇 - CG语言入门(学习计划表模板),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:学习名言警句 励志,学习化妆的学校,学习名言警句 励志,学习雷锋好榜样,学习通,学习名言警句 励志,学习化妆的学校,学习化妆的学校,内容如对您有帮助,希望把文章链接给更多的朋友!

其实cg语言与GLSL大同小异,除了有一些语法上的差别,实际核心还是图形学算法。

注意:在使用cg的vertex shader和fragment shader时,必须将代码写到Pass{}块中!

既然是shader,那就看看cg的vertex shader和fragment shader怎么写吧。

1. 与GLSL必须把shader入口都叫做main()不同,cg中是可以自己给shader入口函数起名字的,使用如下方法:

#pragma vertex vertShaderFunc

#pragma fragment fragShaderFunc

那么 vertShaderFunc 与 fragShaderFunc 就是vs和fs的入口函数了。

2. cg中没有所谓的attribute与varying。shader间的数据传递是通过自定义的结构体传送的。结构体中数据的意义由语义单词表示。

如下:

需要注意的是,vertex shader的输入结构体的成员必须为以下这些成员,不可改名。

float4 vertex;

float3 normal;

float4 texcoord;

float4 texcoord1;

float4 tangent;

float4 color;

可以理解为在U3D中已经执行了对这些attribute名字的glBindAttribLocation,所以不能再改名了。不过varying和uniform是可以自己定义的。

struct vertData {

float4 vertex:POSITION;

float4 texcoord:TEXCOORD0;

};

struct v2f {

学习Unity3D Shader篇 - CG语言入门(学习计划表模板)

float4 pos : SV_POSITION;

float4 uv : TEXCOORD0;

}

v2f vertShaderFunc(appdata v) {

v2f o;

o.pos = mul(UNITY_MATRIX_MVP, v.vertex); // mul用来计算矩阵向量乘法,UNITY_MATRIX_MVP相当于gl_ModelViewProjectionMatrix。

o.uv = float4(v.texcoord.xy, 0.0, 0.0);

return o;

}

// 显然fragment shader只输出颜色。那么返回&#;就是用COLOR标注的一个四维向量。

half4 fragShaderFunc(v2f i) : COLOR {

half4 c = frac(i.uv); // frac:返回每个向量的小数部分。

if(any(saturate(i.uv) - i.uv)) // any:输入参数不为零返回true。 saturate:将&#;截取到[0, 1]。

c.b = 0.5;

return c;

}

那么这个vertData类型的vertex就类&#;于GLSL的gl_Vertex,texcoord相当于gl_MultiTexCoord0。

事实上Unity已经提供了一些预定义的结构体,如appdata_base, appdata_tan,方便开发。它们在UnityCG.cginc中有定义。

传入数据用函数参数,传出数据用返回&#;。

下面是一个例子,将纹理颜色与归一化法线的&#;相乘输出为最终颜色。

最终结果如下图所示:

Unity3D4.6.2介绍 Unity4.6.2现在已经正式发布并且提供下载,这是Unity第一个支持位iOS的正式版本,采用了最新的IL2CPP技术。IL2CPP是Unity内部开发的一款创新型脚本技术。

[置顶] Unity中使用脚本LineRenderer(现行渲染器)画圆 Unity中使用脚本LineRenderer(现行渲染器)画圆C#:publicLineRendererLR;publicintn;publicfloatr;voidStart(){LR=this.GetComponentLineRenderer();//得到组件LR.SetVertexCount(n1);//设置

NGUI之UIGrid UIGrid:这个组件可以轻松的让你排列你的组件,并且在运行或是编辑的时候都可以。更多精彩请关注【狗刨学习网】效果图如下:一:使用步骤1.选择一

标签: 学习计划表模板

本文链接地址:https://www.jiuchutong.com/biancheng/375815.html 转载请保留说明!

上一篇:高级 Unity3d 手机脚本(unitystudio手机版)

下一篇:Unity3D4.6.2介绍(unity3d最新)

  • 企业所得税视同销售的会计处理是?
  • 做账报税简单吗
  • 住宿费可以抵扣进项吗
  • 筹建期的收入要交企业所得税吗
  • 零申报还要抄税吗
  • 农业机耕开发票税收分类编码是什么
  • 收回已核销的坏账什么意思
  • 资产报废变现收入应开具哪种发票
  • 购销合同印花税优惠政策
  • 超市费用能否税前扣减?
  • 生产企业的安全员好干吗
  • 非正常损失允许税前扣除吗
  • 异地经营需要办什么税务手续?
  • 没有发票怎么报销入账
  • 接收虚开增值税专用发票要判刑吗
  • 私车公用油费计入什么科目
  • 工程竣工结算审查期限
  • 合并报表存货抵消分录第二年
  • 发票 发票联
  • 企业筹建期发生的广告宣传费怎么抵减所得税
  • vc_runtimeMinimum_x64.msi 找不到的解决方法
  • 金蝶k3外购入库单套打设置
  • 汇算清缴当年分配的股息红利
  • vue实战项目教程
  • 公益性捐赠支出的标准
  • mxtask.exe - mxtask是什么进程文件 有什么用
  • 分公司能不能独立法人
  • 先开票还是先付款最新规定
  • 头歌java第一课
  • php ffi 性能
  • php获取访问者mac地址
  • framework3.5怎么打开
  • php百分比
  • 我一定要用自己的双手拼出来
  • docker运行多个镜像
  • ai当前的发展
  • 128种chatGPT可以为人类做的事情
  • php二进制字符串压缩
  • python字符串多行
  • 记账凭证的主要作用有
  • 新建会计帐套怎么建
  • 采购国产设备退税公告
  • 固定资产包括无形资产吗?
  • dede织梦怎么转成zblog
  • 借款合同按什么缴纳印花税
  • 织梦专题页模板
  • mysql显示数据库语句
  • 绿化养护合同交不交印花税
  • 房地产开发企业成本核算方法
  • 手写报销条子怎么写
  • 公司贷款谁签字
  • 财政部关于印发财政专户管理办法的通知
  • sql2000数据迁移到2008
  • sql2008数据库维护计划
  • mysql命令行怎么用
  • mysql开启事务语句
  • 电子承兑汇票承兑后几天到账
  • 车辆购置税 购置
  • 调整以前年度费用怎么做账
  • 未确认融资费用摊销额怎么计算
  • 公司无偿更换产品违法吗
  • 所得税费用为什么不计入营业利润
  • 公司开办期间的住宿费会计分录
  • 体检费可以开个人吗?
  • 税收会计记账方法
  • mysql的操作
  • mysql分页实现
  • redhat安装yum
  • windows server 2003 r2 序列号
  • centos 怎么用
  • Ubuntu 14.04系统怎么安装Nvidia 私有显卡驱动?
  • dnssne是什么意思
  • win10系统中打开任务管理器的快捷键
  • jQuery实现checkbox即点即改批量删除及中间遇到的坑
  • 如何实现js对象和json数据互转
  • php获取当前脚本路径
  • [置顶]马粥街残酷史
  • jquery取消单选框选中
  • 用python绘制一条直线
  • 房租收入影响个人所得税汇算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设