位置: 编程技术 - 正文

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

  • 应付职工薪酬纳税调整
  • 农产品税率9%还是免税
  • 商业承兑汇票未到期贴现
  • 套期会计新旧准则对比
  • 小规模开普票多少税点
  • 出口未开票怎么会计处理
  • 规划设计合同需要缴纳印花税吗为什么
  • 发票开票人是管理员可以吗
  • 发票查询发票代码有误
  • 出口无法收汇怎么办
  • 出口退税申报无电子信息
  • 货到发票没到
  • 超过保质期存储时间或变质的食品应该怎样处理
  • 建筑安装工程承包合同
  • 新企业会计准则的内容
  • 公司注册成功以后会有什么费用
  • 个体工商户的生产、经营所得
  • 材料存货的期末计量有何特点
  • 企业交的房产税在哪打印税单
  • 利税总额含企业所得税吗
  • 印花税季度报还是月报
  • 前期认证相符且本期申报抵扣怎么填
  • 对方公司开支票怎么办
  • 无形资产摊销可以按照其价值和使用情况
  • 固定资产提前报废
  • 增值税要转到营业税金及附加吗
  • 计算房产税租金会计分录
  • 制造费用月末怎么结转到生产成本
  • 售后服务对客户满意度的影响论文
  • 子网掩码和默认网关怎么填
  • uefi系统安装win7gho
  • 打开浏览器时间长
  • 桌面小工具怎么添加
  • 上季度成本多结转了怎么调
  • 进程aissca.exe
  • 用产品抵债的合同怎么写
  • 先付费后收到发票怎么做分录
  • 增值税发票半年能开吗
  • 文化事业建设费减免政策
  • 商业企业退货与退款区别
  • 制造费用主要核算项目
  • 货物名称和发票上的不一致
  • 持有至到期投资属于什么科目
  • 城市维护建设税,教育费附加,地方教育费附加
  • 帝国cms到底好不好
  • 福利费要分部门吗
  • 交强险必须要买驾乘险才能投保
  • 员工工资需要交税吗
  • 收到银行承兑汇票如何记账
  • 一个月没钱
  • 税费不足50
  • 航信服务费减免怎么填
  • 产品保修要钱吗
  • 余额调节表一定要编制吗
  • 营业外收入与其他业务收入的区别
  • 从事国家重点扶持的公共基础项目
  • 记账凭证如何填写样本
  • 进项税额转出有余额怎么调整
  • 总账会计的岗位目的
  • 发票拒收证明盖公章还是财务章
  • 股东变更需要哪些资料和手续
  • mysql多个group by
  • sqlserver 创建索引与使用
  • win7哪年停止更新
  • window10 uwp
  • 复制文件文件名过长怎么复制
  • javascript抢票
  • js基于什么语言
  • javaweb技术栈是什么
  • perl语句
  • jquery中keyup
  • 通用税务采集软件有哪些
  • 工商电话号码客服投诉热线
  • 成都暖气费补贴
  • 巩义市公路管理局 邰江华简历
  • 网商贷补充收款方式
  • 高新企业人才落户北京
  • 广告发布合同属于什么合同
  • 卖钢材交哪些税
  • 出口货物计算公式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设