世界报道:世界空间中的着色器 从对象空间到世界空间的转换
在《在着色器中调试》章节中提到,顶点输入参数使用语义词 POSITION 指定对象的坐标,即本地对象(模型)的网格空间坐标,对象空间(对象的坐标系统)是特定于每个游戏对象的,然而,所有的游戏对象会被转换到一个共同的坐标系中(世界空间)。
如果一个对象被直接放入世界空间中,游戏对象会通过转换组件直接将对象的坐标转成世界坐标。你可以在 Scene 视图或者 Hierarchy 视图中选中一个对象,然后在 Inspector 视图中查看 Transform 组件。在 Transform 组件中包括 Position、Rotation 和 Scale 属性,这个组件用来指定从本地坐标到世界坐标的顶点转换(如果一个游戏对象拥有父级对象,那么转换组件只转换父级对象的坐标)。在《Vertex Transformations》章节中,我们将讨论顶点的转换、旋转、缩放以及 4 x 4 矩阵组合变换的细节。
回到我们的例子中:从对象空间到世界空间的转换是通过 4 x 4 矩阵来转换的,也叫“模型矩阵”,这个矩阵在 Unity 中通过 uniform 参数 _Object2World 已经声明了:
(资料图)
Shader "Custom/World Space"
{ SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag //uniform flaot4*4 Object3World //automatic definition of a Unity-specific uniform parameter 自动定义统一值是unity的一个特性 struct vertexOutput { float4 pos: SV_POSITION; float4 position_in_world_space : TEXCOORD0; }; vertexOutput vert(float4 vertex:POSITION) { vertexOutput output; output.pos = mul(UNITY_MATRIX_MVP,vertex); output.position_in_world_space = mul(_Object2World,vertex);//物体坐标转化为世界坐标 return output; } float4 frag(vertexOutput input) :COLOR { float dist = distance(input.position_in_world_space,float4(0.0,0.0,0.0,1.0)); //计算片段位置与原点距离(第四个坐标永远是1) if (dist < 5.0) { return float4(0.0, 1.0, 0.0, 1.0); //接近 } else return float4(0.3,0.3,0.3,1.0);//远离原点 } ENDCG } }
}
更多的 Unity Uniforms
在 Unity 中,定义了几个和 _Object2World 一样的 float4x4 矩阵,下面是在系列教程中使用的 uniforms 简短列表:
uniform float4 _Time, _SinTime, _CosTime; // time valuesuniform float4 _ProjectionParams;// x = 1 or -1 (-1 if projection is flipped)// y = near plane; z = far plane; w = 1/far planeuniform float4 _ScreenParams; // x = width; y = height; z = 1 + 1/width; w = 1 + 1/heightuniform float4 unity_Scale; // w = 1/scale; see _World2Objectuniform float3 _WorldSpaceCameraPos;uniform float4x4 _Object2World; // model matrixuniform float4x4 _World2Object; // inverse model matrix // (all but the bottom-right element have to be scaled // with unity_Scale.w if scaling is important) uniform float4 _LightPositionRange; // xyz = pos, w = 1/rangeuniform float4 _WorldSpaceLightPos0; // position or direction of light sourceuniform float4x4 UNITY_MATRIX_MVP; // model view projection matrix uniform float4x4 UNITY_MATRIX_MV; // model view matrixuniform float4x4 UNITY_MATRIX_V; // view matrixuniform float4x4 UNITY_MATRIX_P; // projection matrixuniform float4x4 UNITY_MATRIX_VP; // view projection matrixuniform float4x4 UNITY_MATRIX_T_MV; // transpose of model view matrixuniform float4x4 UNITY_MATRIX_IT_MV; // transpose of the inverse model view matrixuniform float4x4 UNITY_MATRIX_TEXTURE0; // texture matrixuniform float4x4 UNITY_MATRIX_TEXTURE1; // texture matrixuniform float4x4 UNITY_MATRIX_TEXTURE2; // texture matrixuniform float4x4 UNITY_MATRIX_TEXTURE3; // texture matrixuniform float4 UNITY_LIGHTMODEL_AMBIENT; // ambient color
用户指定 Uniforms:着色器属性
还有一个更重要的 uniform 参数:用户自定义的 uniforms。实际上,这是 Unity 的属性,你可以认为他们是着色器的用户自定义 uniform 参数。通常一个着色器不带参数只能由编写的程序员在一些特定的程序中使用,但是如果一个着色器拥有参数并且还带有描述性的说明,那么这个着色器就可以被其他人使用,另外,如果你打算出售你的着色器,为着色器的提供参数会大大增加它的价值。
因为在 Unity 的 ShaderLab 中使用《description of shader properties 》非常不错,通过下面的例子我们来了解如何使用着色器属性,首先,我们声明一个属性,然后我们再定义一个与属性名称相同、类型相同的 uniforms 。
Shader "Cg shading in world space" { Properties { _Point ("a point in world space", Vector) = (0., 0., 0., 1.0) _DistanceNear ("threshold distance", Float) = 5.0 _ColorNear ("color near to point", Color) = (0.0, 1.0, 0.0, 1.0) _ColorFar ("color far from point", Color) = (0.3, 0.3, 0.3, 1.0) } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" // defines _Object2World and _World2Object // uniforms corresponding to properties uniform float4 _Point; uniform float _DistanceNear; uniform float4 _ColorNear; uniform float4 _ColorFar; struct vertexInput { float4 vertex : POSITION; }; struct vertexOutput { float4 pos : SV_POSITION; float4 position_in_world_space : TEXCOORD0; }; vertexOutput vert(vertexInput input) { vertexOutput output; output.pos = mul(UNITY_MATRIX_MVP, input.vertex); output.position_in_world_space = mul(_Object2World, input.vertex); return output; } float4 frag(vertexOutput input) : COLOR { float dist = distance(input.position_in_world_space, _Point); // computes the distance between the fragment position // and the position _Point. if (dist < _DistanceNear) { return _ColorNear; } else { return _ColorFar; } } ENDCG } }}
使用 sharedMaterial 我们可以改变所有使用了这个材质的对象的参数,如果你只希望改变一个并使用了这个材质的对象的参数,那么你应该使用 material 。假如你设置 _Point 属性为另一个对象的位置信息,这样你只需要在 Unity 中移动这个对象就可以查看效果了,你可以复制/粘贴 下面的代码到一个 C# 脚本中:
using UnityEngine;using System.Collections;[ExecuteInEditMode]public class NewBehaviourScript : MonoBehaviour {public GameObject other;void Update(){if(other != null){GetComponent().sharedMaterial.SetVector("_Point", other.transform.position);}}}
然后我们只需要移动另一个对象(Sphere)就可以看到(Cube)颜色的变化,当小球离原点近时,如图:
当小球离原点远时,如图:
标签:
相关推荐:
精彩放送:
- []世界报道:世界空间中的着色器 从对象空间到世界空间的转换
- []世界球精选!告别“燥热” 京城酒吧变局
- []天天速递!分享5个高质无损音乐网站 歌曲很丰富
- []终于!保利第一
- []【数据更新】全国上网卡专属号段数据汇总
- []复旦壁纸:手绘正校门1024、7681280
- []连连支付怎么样?连连靠谱吗?
- []天天快看:在百度里下载格式工厂——KuGo格式
- []讯息:5省市人口为何逆势正增长
- []当前视点!北京二手房网签量再探底
- []【聚看点】java timestamp 格式化_java日期处理(Timestamp)
- []环球观察:speedtest-cli|网速测试工具命令行方式
- []环球今亮点!诚益通:截止2023年1月31日,公司股东人数为10175名
- []【天天聚看点】辉煌科技:公司目前无智能动车相关产品
- []天天快资讯丨肇民科技:截至2023年1月31日公司股东人数为9298户
- []三江购物:公司主营业务是商品零售
- []天天短讯!平安信用卡年利率是多少(平安信用卡年利率是多少)
- []天天头条:10GWh!东方日升子公司双一力拟建高效新型储能系统集成产线
- []500MW/1000MWh!中机国际中标广东惠州独立储能电站项目EPC!
- []天天动态:2月1日转常态运行!浙江再发第三方独立主体参与电力辅助服务通知!
- []动态焦点:哈医大肿瘤医院内科胸腔镜技术 让胸腔积液“水”落“实”出
- []国泰君安:八大问题看疫后居民预期 消费的增量在哪儿?
- []108亿扩产60GWh!亿纬锂能年后又一大手笔投建
- []天天要闻:重庆:加快微电网、分布式光伏、多元储能等一体化系统开发,构建多能互补高效能源体系
- []最新:社保没做减员原单位欠费注销(原公司社保欠费无法减员)
- []世界最资讯丨招商银行信用卡分期提前还款有手续费吗(招商信用卡分期提前还款手续费)
- []天天热文:“牛市旗手”归来?券商板块尾盘连续异动 ETF惊现巨额买单!什么情况?
- []全球热资讯!太火爆!“冠军”基金经理:限购!朱红裕年内已三次出手…
- []每日快看:平安信用卡的利息是多少(平安信用卡的利息是多少钱啊)
- []大湾区兔年春节旅游成绩单:多市实现“开门红”,人次收入双增长
- []今日聚焦!新湖中宝10亿元公司债将于2月9日付息 利率7.60%
- []天富能源:公司目前生产经营正常,同时根据《上海证券交易所股票上市规则》,不存在退市风险
- []当前聚焦:3万股民嗨了!歼20来A股 千亿巨头重组今日复牌!网友:连夜数板!
- []天邦食品:近年来国内生猪养殖行业集中度在不断提高,我们和业内规模养殖企业共同经历这个过程
- []每日热文:象屿股份30亿元小公募项目状态更新为“已受理”
- []全球速看:广东惠州:三孩家庭可按实际房租支出提取住房公积金
- []视讯!平安银行会倒闭吗知乎(最不安全4大银行)
- []全球头条:云南白药能刷医保吗(云南白药气雾剂可以刷医保吗)
- []广发银行第二张信用卡额度(广发申请第二张信用卡额度)
- []消费分期专用卡(不小心办了专享消费分期卡)
- []外阜农村劳动力 与职工社保 报销比例是否一样(外阜农村劳动力 与职工社保 报销比例是否一样)
- []全球热点!蓝城和新昌城投以底价6.1亿元竞得绍兴新昌县新民未来社区3宗地
- []全球热点评!河南洛阳:扩大住房补贴范围 青年人才最高获10万元购房补贴
- []世界资讯:传大连万达正在洽谈一笔境外贷款 以偿还3月份到期的3.5亿美元债
- []告别航空传奇波音 747,「空中女王」正式谢幕
- []焦点速讯:TD早报 | 广州出境首发团多条线路报满;携程已上线近700条出境团队游产品
- []密歇根大等4院校与庞清方保持联系 他仍未择校
- []今热点:中国银行怎么网上办理储蓄卡(中国银行怎么网上办理储蓄卡)
- []个人独资企业社保费交多少钱(个人独资企业社保费交多少)
- []海宁医保卡能在杭州用吗(杭州社保卡能在海宁用吗)
- []当前速递!信用卡可以在atm机上查询额度吗(atm机能看信用卡额度不)
- []世界热门:施耐德电气:顺应新型电力系统建设需求,直流断路器加速迭代
- []世界看热讯:双币信用卡申请条件是什么(征信不太好申请哪个信用卡)
- []华夏银行信用卡可以网上注销吗(华夏银行信用卡可以网上注销吗)
- []用公积金买房是什么感觉,好处比较多
- []当前最新:企业年金的好处和坏处,企业年金的领取方法
- []当前时讯:彩讯股份: 彩讯股份致力于成为中国领先的企业数字化技术与服务提供商,深耕行业客户数字化建设
- []前沿热点:EIA原油库存增幅大超预期,美油短线探底回升
- []全球播报:ebs保险是什么意思,驾乘险
- []全球视讯!交强险950元有返点吗,一般不允许有返点
- []今日观点!哪个银行社保卡当天拿卡,没有什么银行社保当天办可以拿卡
- []环球今头条!帕斯卡定律公式h等于什么 帕斯卡定律公式
- []助学贷款年限6年什么意思(助学贷款期限6年是什么意思)
- []黑石房地产投资信托基金1月触及每月赎回上限
- []焦点消息!佛山停止个人住房查询的对外查询业务
- []全球热议:北玻股份:1月31日公司高管高学明减持公司股份合计619.38万股
- []鹏辉能源:1月31日公司高管夏信德减持公司股份合计81.33万股
- []世界时讯:卖疯了!1月比亚迪新能源车销量增62.44%,占据市场“半壁江山”
- []农村妇女55岁还是60领养老金(农村妇女55岁领养老金)
- []工商银行哪个信用卡好申请(工商银行信用卡好办吗额度怎么样)
- []中石油买断职工补偿文件(中石化买断职工补偿文件)
- []每日速看!社保暂停缴费之后新单位可以续交吗(社保停了几年新单位可以直接交吗)
- []【当前热闻】天津签约38个重点项目 总投资达4523亿元
- []天天时讯:立昂技术:公司业务暂不涉及ChatGPT领域
- []环球视讯!旭辉集团1月份重庆、武汉等地项目交付超6000套房
- []新消息丨科翔股份:1月31日公司高管程剑减持公司股份合计3.17万股
- []全球热头条丨儿童御寒要注意:“洋葱法”巧穿衣,保护呼吸道健康
- []事业单位社保从哪年开始交的(女人交社保的最佳年限)
- []公积金减员每月最晚几号办理(公积金减员每月最晚几号)
- []报道:顺丰控股累计回购83.52万股 总金额为4047.85万元
- []今日关注:珀莱雅:1月31日公司高管方玉友减持公司股份合计104万股
- []天天热文:奇安信:1月30日樊俊诚减持公司股份合计1551股
- []全球简讯:瑞丰银行:2月1日公司高管秦晓君增持公司股份合计3万股
- []焦点要闻:强险到期商业险没到期可以上路吗(强制险到期了商业险没到期能上路吗)
- []观热点:退休后补缴的医保还能返钱吗(退休后补缴的医保还能返钱吗)
- []【世界新要闻】印度OTA巨头最新季度收入同比增长48.3%,预订额创新高
- []每日看点!【券商聚焦】大摩指1月国有房地产商销售继续跑赢民营企业 建议关注华润置地(01109)等
- []今日聚焦!大悦城控股“23大悦01”将于2月2日上市 金额20亿
- []全球动态:创维数字:惠州产业园项目正在有序地推进建设当中
- []ST远程:截至2023年1月20日,公司股东人数为12256人
- []每日速读!八马茶业IPO:距离“茶叶第一股”有多远?
- []环球时讯:兔年“排头兵”或将上阵!
- []动态:北京文化:拟申请2.75亿元综合授信 受损投资者索赔仍在继续
- []世界快看:人寿保险客服工作好不好做呀(人寿保险客服工作好不好做)
- []视焦点讯!招商银行信用卡app怎么看安全码(信用卡丢了怎么查安全码)
- []焦点速递!万豪CEO谈2023年发展:美国需缩短签证申请时间,混合旅行持续盛行
- []学生贷款需要什么银行卡才能贷(学校贷款要用什么银行卡)
- []全球头条:兴业银行信用卡可以网上注销吗(信用卡网上能注销吗)
- []打电话申请临时额度的技巧是什么(打电话申请临时额度的技巧)
- []当前快播:财面儿|广州时代控股“18时代14”将于2月7日提前摘牌
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 湖南华夏近期减持中交地产749.69万股 现持股比例为4.11%
- 世界观天下!高铁电气副总经理李忠齐辞职 2021年薪酬为73万
- 环球动态:贵族俱乐部会员卡_关于贵族俱乐部会员卡的基本详情介绍
- 财面儿丨迪马股份:为子公司累计提供担保超139亿元
- 环球短讯!开年客流火爆 广深铁路今年业绩有望回暖
- 中文在线:AIGC是利用人工智能技术来生成内容,被认为是继PGC、UGC之后的新型内容创作方式
- 天天快资讯:财面儿丨中交地产:湖南华夏及其一致行动人减持公司1.08%股份
- 天天速讯:华瓷股份:公司与特定客户之间在产品开发或设计阶段的协作,涉及双方保密协定,不属于能对外披露的内容
- 新政丨新疆乌鲁木齐:公积金贷款购买新房单价上限上调10% 最高贷款额度为80万元
- 掌上生活怎么申请延期还款(掌上生活还款流程)
- 环球时讯:不想让新单位知道原单位 社保(社保不想让新单位知道原单位)
- 快消息!度过最艰难一年,机票代理人忙起来
- 精选!证监会:2月1日全面实行股票发行注册制改革正式启动
- 天津城投拟发行5亿元超短期融资券 期限180天
- 视讯!广东清远:购买预售商品住房可提取公积金支付首期款
- 上海钢联:公司不做区块链技术的研发,但一直关注互联网新兴技术的应用场景
- 香山股份:宝盛公司目前已停产,公司已于2020年全额计提减值
- 【世界独家】预计2022年度期末净资产为负 ST弘高或被实施退市风险警示
- 迪马股份:资产负债率低于70%子公司剩余担保额度13.5亿元
- 深圳地铁200亿元公司债券已获通过
- 世界热消息:荃银高科:公司严格按照深交所的有关规定履行业绩预告及业绩快报信息披露义务,敬请关注公司公告
- 天天观点:宁德时代动作频频,滑板底盘已在路上?
- 全球消息!当兵两年社保怎么处理(当兵前的社保怎么处理)
- 当前资讯!龙源电力:签约新疆木垒2GW光伏+3GW风电+1.25GW储能项目
- 天天精选!住院交2000押金和医保卡一样吗(交住院押金需要带医保卡吗)
- 环球视讯!招商银行信用卡怎么提前还款所有(招商信用卡提前结清)
- 世界观速讯丨雪佛龙“放大招”,回购超5000亿!巴菲特又赌赢了?
- 多晶硅周评-需求提振助价格延续涨势(2023.2.1)
- 要闻速递:238亿!宁德时代投建电池材料项目,进军千亿新赛道!
- 出击!宁德时代欧洲第一电池工厂投运!
- 吉娘娘海边泳装新造型又来了!穿粉色连体泳衣太嫩,少女感太强了
- 焦点热讯:陕西煤业靠什么暴赚340亿?
- 环球速看:永辉超市:已累计回购9563.76万股股份 合计耗资2.98亿元
- 天天时讯:不假思索的反义词是什么?不假思索是什么意思?
- 【全球热闻】国信期货日评:美劳工成本涨幅放缓,关注明晨美联储会议
- 环球快消息!中洲控股:截至1月31日公司股东人数为18,018
- 全球焦点!犬夜叉父亲是谁?犬夜叉是哪里的角色?
- 万盛股份:福建中州已经根据当期资产的账面价值和可变现净值的差异全额计提减值
- 金融街按持股比例为四川雅恒地产提供1.164亿元财务资助
- 宝尊电商任命肖泳为Gap大中华区首席执行官
- 聚焦:余额宝冻结金额怎么才能取出来?余额宝冻结金额取出来的步骤
- 全球时讯:文件扫描仪怎么用?文件扫描仪的使用方法是什么?
- 世界观热点:传闻中的陈芊芊二公主黑化了吗?传闻中的陈芊芊剧情介绍
- 聚焦:新上海滩有哪几个版本?新上海滩剧情介绍?
- 热门看点:重生励志女主小说有哪些?重生励志女主小说汇总
- 天天百事通!国际油价上涨,但多头须警惕这股供需平衡破坏力量
- 卷发如何打理?卷发护理方式有哪些?
- 2月1日三祥新材涨停分析:有色 · 锆,液态金属,有色金属概念热股
- 我乐家居:副总经理王务超辞职
- 2月1日建发合诚涨停分析
- 当前看点!电脑怎么格式化c盘?电脑格式化c盘方法是什么?
- 【环球速看料】世纪21相信香港楼市已经谷底反弹
- 天天速读:2月1日汉王科技涨停分析:ChatGPT,数据要素,电子身份证概念热股
- 全球今日报丨pt950钻戒值钱吗?pt950指的是什么?
- 天天即时看!国网河北电力发布新型储能并网服务指南
- 每日速读!总投资306亿元 盛虹储能电池超级工厂等签约落户张家港
- 河北:未来五年风光装机年均增长10GW以上
- 每日消息!两江新区发布支持新型储能发展专项政策 支持新型储能削峰填谷
- 31省2023年新能源及储能发展规划
- 【环球热闻】美原油交易策略:API原油库存连续第五周大增,油价下行压力仍存
- NYMEX原油后市上看80.45美元
- 速递!《2023年1月中指百城价格指数报告》发布
- 新式茶饮春季营销开启,甜啦啦竹风清橙率先发力!
- 微动态丨沈阳:延长职工家庭互助购房提取住房公积金政策至6月30日
- 【世界时快讯】首开股份完成发行21亿元中期票据,利率5.4%
- 年后郑州、天津、厦门等多城下调首套房贷利率
- 中欣氟材:谢谢您对本公司的关注,截止12月30日公司股东人数为19,604户,谢谢
- 【天天热闻】深康佳A:截至目前,本公司主要采用书面形式签署合同
- 神火股份:截止2023年1月20日公司股东户数是7.27万户
- 每日聚焦:风电光伏氢能储能可参与!内蒙古开展新能源装备优选推荐
- 焦点速看:疫情三年终于又能跟团出国游,80、90后年轻人是第一批“早鸟”
- 热点!通用汽车将向 Lithium Americas 投资 6.5 亿美元,共同开发锂矿
- 视点!广西源网荷储一体化发展试点要求:配储不低于15%、时长2h!
- 【当前独家】为什么养老保险只显示个人缴纳的(养老保险账户为什么只显示个人缴纳部分)
- 全球热资讯!江苏银行信用贷好批吗(江苏银行信用卡负债高好批吗)
- 国家电网大力投资抽水蓄能 2023年计划装机规模增35%
- 逾期忘记调整社保基数怎么办(社保逾期一天怎么办)
- 1.425-1.453元/Wh,国华2022年第三批储能系统采购项目中标候选人发布
- 我欠了很多钱_我欠了很多钱怎么办
- 中海达:截至2023年1月31日,股东总户数为50,415
- 全球今头条!提前还房贷利大于弊吗 近20城调整首套房贷利率下限
- 世界短讯!佛山汇环广场预售房款未全部入监管账户 开发商中交保利房地产有限公司被罚
- 突然爆雷!22年前往事重创 行业龙头罕见报亏!需超一年净利润“填坑”
- 德国时代:德国房产税改革遭遇拖延症 仍有千万物业申报表未提交
- 速看:南京江北新区签约27个重点产业项目 总投资达243亿元
- 天天视讯!首套房贷利率进入高频调整期 有哪些喜与忧?
- 万泰生物:公司与凤凰卫视、凤凰网没有商业合作
- 最新快讯!【BT金融分析师】Lucid股票被指高估了40%,分析师称其无法压低产品价格
- 天天通讯!亿纬锂能再抛百亿扩产计划
- 世界视点!2月份A股行情将如何演绎?四大首席经济学家这么看
- 大力发展锂电材料板块 永太科技2022年净利润预增82%-132%
- 天天热文:浦发信用卡怎么提前还款,但是找不到还款(浦发信用卡随借金怎么还款)
- 71家储能企业2022业绩抢先看:净利润最高预增37倍!锂电产业链业绩超预期!
- 即时焦点:北京社保是当月扣还是下月扣的(15号入职社保当月还是下月交)
- 学生怎么办招行信用卡(招商银行学生信用卡怎么申请额度)
- 全球销冠诞生!比亚迪2022年营收突破4200亿,净利润翻四倍!
- 招商基金侯昊:白酒行业依然存在预期差
- 世界速读:山东泰安全力打造千万千瓦级“储能之都”
- 温州城建10亿元小公募项目状态更新为“已受理”
- 青岛:2022年GDP同比增长3.9% 全市固定资产投资比上年增长4.5%