位置: 编程技术 - 正文

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

  • 进口货物增值税纳税人是谁
  • 个体户查账征收怎么交税?
  • 小规模纳税人销售自建不动产
  • 工商年报纳税总额怎么算
  • 机器维修费属于变动成本吗
  • 增值税无票收入可以抵扣
  • 子公司分红款没收到,宣告分红可以免税吗
  • 税务局返还的三种税种
  • 房地产会计预收账款明细科目
  • 修理办公用复印机好吗
  • 库存商品暂估入库
  • 营业执照年审后日期会变吗
  • 银行对个人借款的处理
  • 出售设备账务处理
  • 实缴年月正常补收
  • 建筑企业增值税预缴
  • 缴纳的住房公积金计入什么科目
  • 资产总额和净资产总额的区别
  • 未开发土地可否转给子公司
  • 认证过的发票
  • 食堂固定资产管理制度
  • 当期亏损需要提企业所得税吗财务报表
  • 支付装修押金的会计科目
  • 路由器怎么重置网络
  • 专家咨询费应如何支付
  • 免税不能开专票
  • 报销货物运输费需要什么凭证
  • linux获取网络接口及ip命令
  • 以房产投资联营,收取固定收入,不承担联营风险的房产
  • 工作完工结算是什么意思
  • 怎么租一个月
  • 怎么u盘装系统,u盘装系统教程图解
  • 视同销售收入税法处理
  • 企业的生产成本等于
  • 约书亚树国家公园
  • php用在哪些方面
  • 销售金额环比
  • 考到二本
  • ls -lh命令
  • 旅行社的增值税怎么算
  • 报关单的运费没填怎么办
  • 电子专用发票抵扣
  • 担保贷款借款人征信不好有影响吗
  • 金蝶kis资产负债表中预付款项年初余额公式怎么设置?
  • 上一年的进项税转出还用交企业所得税吗
  • c语言怎么给函数传递数组
  • Bootstrap table 控制表格高度固定(行高固定)并且不受数据量影响
  • 生产企业出口转内销增值税申报表怎么填
  • 会计科目累计摊销
  • sql自定义
  • mysql分页优化原理
  • 出口退税款计入营业外收入
  • 小规模如何缴纳税款
  • 刚成立公司没有发生业务,如何申报企业所得税
  • 印花税缴款了发票怎么查
  • 诉讼费应计入什么会计科目
  • 社保计入管理费用什么科目
  • 购建固定资产属于投资活动吗
  • 商品流通企业进货费用
  • mysql的json数据类型
  • openbsd6.8
  • windows7录音怎么录
  • window照片无法预览
  • windows10mobile官网
  • win7系统的安装
  • 打开 itunes
  • xp系统怎么设置网络传输文件
  • win8系统没有无线网络连接
  • xp如何更新
  • 在对linux系统中dir
  • cocos2dx游戏有哪些
  • js中eval函数是干嘛的
  • unity怎么加人
  • nodejs使用视频教程
  • 异步任务管理器
  • centos 安装pip3
  • 云南省税务干部学校是干什么的
  • 12366是哪里的税务局
  • 山西省地方税务总局官网
  • 国家税务总局组建千户集团税收风险分析专业团队
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设