位置: 编程技术 - 正文

学习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最新)

  • 行政法律法规是规定行政机关
  • 银行转账支付计入什么科目
  • 企业可以一次性补交员工十年养老保险吗
  • 其他应付款包括哪些内容口诀
  • 增值发票每月上报是怎么个程序吗
  • 工程施工计入资产负债表
  • 幼儿园申报税种及税率
  • 购销合同签定有法律效力吗
  • 新会计准则科目编码
  • 取得虚开增值税专用发票罪
  • 预付账款是付没付钱
  • 现金抵用券购买怎么用
  • 预付账款发票到货未到怎么做账
  • 增值税的免征增值税范围
  • 小规模纳税人国企
  • 损益表和利润表的关系
  • 增值税勾选平台在哪里
  • 实收资本是否可以更改
  • 应交增值税为负数代表什么
  • 汇率变动引起的经济危机
  • 潽金融资租赁有限公司
  • 税金及附加包括所得税费用吗
  • 无票业务如何处理
  • 企业固定资产出售账务处理
  • cpu风扇应该怎么调
  • 苹果11怎么充不上电了
  • linux中gedit命令
  • 固定资产计提完折旧怎么处理
  • 正确的PHP匹配UTF-8中文的正则表达式
  • 预收账款调增应纳税所得额
  • 二手商铺要缴纳契税吗
  • 转让应收账款是否交税
  • 劳务佣金合法吗?
  • thinkphp获取数据库数据
  • 招待费增值税能抵扣吗
  • 左右等宽上下等高的字有哪些
  • 这可能是最好的144平米小平层户型
  • 《走进新时代》专栏
  • kill命令机制
  • ps渐变透明效果怎么弄
  • 普通发票添加货品名称步骤
  • 公司租用员工的车辆交什么税
  • mongodb createindex
  • 工程结算如何快速审核
  • 季度所得税怎么算
  • 坏账准备计提比例一般是多少
  • 关联方占用资金应对措施
  • 幼儿园收费怎么说
  • 企业开办前需要预测现金流量计划吗
  • 长期待摊费用的摊销方法
  • 装修消防改造费用会计分录
  • 建筑公司算不算企业
  • 个人工资薪金如何零申报
  • 营业执照办理税务登记需要什么资料
  • 通行费发票增值税申报怎么填写
  • 长期股权投资的账务处理
  • 关税征收方式
  • 营改增现代服务中合同能源管理服务
  • 开出去的发票没有进项发票如何核算成本?
  • 预提费用汇算清缴如何调整
  • 企业支付宝提现到对公账户要交税吗
  • mybatis特殊字符查询出来编码了
  • 存储过程怎么理解
  • vim如何操作
  • bios中怎么设置显卡
  • 怎么修复xp系统
  • win10自带地图打不开
  • ubuntu系统升级到18
  • windows任务计划程序
  • windows7如何设置双屏显示
  • win10升级win1
  • pe,翻译
  • nodejs遍历json数据
  • jquery插件开发方法
  • js new实现
  • jquery实例
  • 四川省国家税务局电子税务局
  • 如何查询企业税收情况
  • 三国杀马钧获取
  • 税务有问题会罚多少钱?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设