位置: 编程技术 - 正文

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

  • 印花税入什么科目核算成本
  • 所得税损益类科目包括
  • 实物折扣的增值税
  • 销售不动产营业税纳税义务发生时间
  • 已发货没开票分录
  • 个人所得税申报退税多久到账
  • 汇算清缴可以调成本吗
  • 收到项目投资款账务处理
  • 自来水开出发票的税率是多少
  • 异地预缴增值税账务处理
  • 租入固定资产改扩建
  • 已经认证的抵扣联不见了,怎么办?
  • 房地产开发企业资质等级有几个
  • 小微企业如何申请土地建厂房
  • 哪些产品计算消费税时可以扣除
  • 记账凭证填制流程是什么
  • 公司电子承兑汇票
  • 出口抵内销产品应纳税额分录
  • 非正常损失进项税额转出计算公式
  • 企业应纳税所得额计算例题
  • 逆流交易固定资产折旧实现,为什么按差额
  • 房屋租赁费发票可以抵扣吗
  • 税务申报逾期怎么在网上申报
  • 增值税一般纳税企业支付现金方式取得
  • 建筑工程预收款预缴增值税的时间
  • 综合所得收入包括哪些所得项目
  • 财务报表申报完可以修改吗
  • 购买预付卡账务处理
  • 酒店布草间有摄像头吗
  • mksysb命令
  • 为什么筹建期间的开办费不属于资产
  • 爱德华王子岛的气候
  • iframe写法
  • 深度学习中的注意力机制模型及代码实现(SE Attention、CBAM Attention)
  • 专票如何申领
  • 模型论文是什么类型
  • 哪些情况进项税不可以抵扣?
  • 品种法成本核算的程序有哪几步?
  • 固定资产投资额怎么计算
  • 单位销售收入不包括哪些
  • 企业所得税法开办费
  • 单位举办活动
  • 收取的招标资料费增值税税率
  • 为什么其他权益工具投资处置价差计留存收益
  • 工会经费购买的固定资产处置
  • 投资性房地产公允价值模式转为成本模式
  • 什么费用可以列入研发费用
  • 账本结转下年怎么划线
  • 确定所开发票的项目的大类别?
  • 政府补助的分类及会计处理方法
  • 减免增值税如何申报
  • 应收账款平均余额公式
  • 小企业建账选哪种会计制度
  • mysql索引的使用和原理
  • sql server?
  • mysql5.7.31
  • Linux安装MySQL教程(二进制分发版)
  • ubuntu和window双系统
  • mac 邮箱
  • win7系统开机蓝屏0x0000007b
  • windows xp如何进入dos
  • linux常用命令top
  • linux如何创建ftp
  • win10系统安全中心在哪
  • linux如何管理文件
  • win7系统引导坏了怎么修复
  • 微软平板
  • ecmascript5
  • nodejs中的session
  • json jquery
  • java项目的命名规则
  • LocalBroadcastManager原理和机制
  • python 性能
  • 完美世界3v3
  • 关闭计算机盖的功能
  • javascript图片
  • 国税系统升级后怎么添加办税人
  • 防伪税控维护费普通发票怎么申报
  • 税务局纪检组为税收工作纪律保障
  • 绵阳税务局咨询电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设