位置: 编程技术 - 正文

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

  • 土地价值计入房产税文件
  • 机票抵扣进项税怎么填申报表
  • 个人代开资金占用费,如何计算代扣代缴个税
  • 建筑业企业纳税人税率是多少
  • 公司付其他公司的工资
  • 广告制作赚钱吗?
  • 增值税税率如何计算
  • 销售无形资产收款通过第三方平台能少交税吗
  • 企业所得税跨期费用的相关规定
  • 并购对利润的影响
  • 经营期间银行存在的问题
  • 理财产品分红怎么入账
  • 地税能不能查到个人的贷款行为?
  • 股权转让的违约条款
  • 个人境外收入如何开发票
  • 环境保护税由什么部门负责征收管理
  • 给行政事业单位扣缴义务人的一封信
  • 房地产预收账款结转到主营业务收入
  • 吊装费和吊车费是一样的不?
  • 内部交易的会计分录
  • 公司法人借款给公司怎么取出来
  • 收据是否当月入帐
  • 原材料因管理不善被盗的会计分录
  • 小企业短期投资的核算应设置的会计科目有
  • 卖固定资产如何申报
  • gnu/linux
  • 二手房房屋买卖注意哪些问题
  • Yii2表单事件之Ajax提交实现方法
  • 手续费及佣金收入会计分录
  • php 错误和异常处理
  • php实现定时器
  • ps调整边缘在哪里快捷键
  • 税审报告什么时候出
  • 未分配利润是负数是亏损吗
  • 按摊余成本计量的应收账款
  • 公司租入厂房怎么做账
  • 简述sql server
  • 固定资产里含有增值税吗
  • 残疾人就业保障金是什么意思啊
  • 股东之间股权转让流程
  • 购进已经折旧提完的二手车
  • 印花税步骤
  • 工程项目该如何分类
  • 金蝶余额调节表勾对日期什么意思
  • 营改增后建筑企业财务核算
  • 应付劳务费怎么做账
  • 金税盘电子发票下载失败
  • 所得税费用是会计科目吗
  • 公司餐费怎么入账
  • 购买汽车轮胎的注意事项
  • 资金帐薄印花税是指什么
  • 电子设备折旧残值率
  • 物业门禁卡怎么入账
  • 购进货物用于集体福利会计分录
  • 新注册公司工商如何做印章确认
  • 无建账能力的纳税人是什么意思
  • mysql数据库无法连接到服务器怎么办
  • 微软一般什么时候活动
  • 如何远程重装系统教程
  • win7怎么创建新盘
  • 免费升win10时升级后一直有效吗
  • macbookpro客人用户
  • created directory cfg怎么办
  • sdl_init
  • linux指令系统
  • win10一直重置
  • 游戏类游戏开发
  • java的理解
  • node.js可以写接口吗
  • vxlan配置实例详解
  • 安卓网络监测
  • unity3d游戏开发教程
  • python中的zip()函数详解
  • 如何用u盘重装电脑系统
  • jquery动态改变样式
  • 车险专票怎么做账
  • 残疾人个人所得税怎么申报退税
  • 证券经纪人收入构成
  • 出成效的意思
  • 全国税收总收入完成59260.61
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设