当前位置: 首页 > web >正文

URP-利用矩阵在Shader中实现物体的平移和缩放

一、平移

方法一:

v.positionOS.xyz += _Translate.xyz;

方法二:

利用矩阵实现平移:

二、缩放

方法一:

v.positionOS.xyz *= _Scale.xyz*_Scale.w;  _Scale.w实现全局缩放

方法二:

 

Shader"unity/Translation"
{Properties{_Color("Color",Color)=(0,0,0,0)_Translate("Translate",Vector)=(0,0,0,0)_Scale("Scale",Vector)=(1,1,1,1)}SubShader{Tags{"RenderPipeline" = "UniversalPipeline"}Pass{HLSLPROGRAM#pragma vertex vert#pragma fragment frag#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"CBUFFER_START(UnityPerMaterial)float4 _Color;float4 _Translate;float4 _Scale;CBUFFER_ENDstruct Attributes{float4 positionOS : POSITION;};struct Varyings{float4 positionCS : SV_POSITION;};Varyings vert(Attributes v){Varyings o = (Varyings)0;//平移// v.positionOS.xyz += _Translate.xyz;//平移矩阵float4x4 T = float4x4(1,0,0,_Translate.x,0,1,0,_Translate.y,0,0,1,_Translate.z,0,0,0,1);v.positionOS = mul(T,v.positionOS);//缩放:将向量的每个分量分别与对应的缩放因子相乘//(v.positionOS.x,v.positionOS.y,v.positionOS.z) * (_Scale.x,_Scale.y,_Scale.z)//=(v.positionOS.x*Scale.x,v.positionOS.y*_Scale.y,v.positionOS.z*_Scale.z)// v.positionOS.xyz *= _Scale.xyz*_Scale.w;  _Scale.w实现全局缩放//缩放矩阵float3x3 Scale = float3x3(_Scale.x,0,0,0,_Scale.y,0,0,0,_Scale.z);v.positionOS.xyz = mul(Scale,v.positionOS.xyz)*_Scale.w;o.positionCS = TransformObjectToHClip(v.positionOS);return o;}float4 frag(Varyings i):SV_Target{return _Color;}ENDHLSL}}}

 

http://www.xdnf.cn/news/1956.html

相关文章:

  • 【Google上包前APK自检】
  • Mac中 “XX”文件已损坏,无法打开 解决方案
  • shell命令一
  • uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店
  • ubiquant比赛系列——用docker准备ubipoker开发环境
  • volatile缓存可见性实现原理
  • 支付场景下,乐观锁的实现(简洁版)
  • AiFlutter 低代码平台介绍
  • hadoop-3.3.5.tar.gz 镜像
  • Hi3516CV608 超高清智慧视觉 SoC 芯片 可提供开发资料
  • Python 快速获取Excel工作表名称
  • Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析
  • 侧扫声呐概述
  • Ollama 常见命令速览:本地大模型管理指南
  • arcpy列表函数的应用(2)
  • 数据作为新生产要素,如何实现价值变现?
  • 向量数据库实践:存储和检索向量数据
  • Python实验三
  • 论文学习:《聚类矩阵正则化指导的层次图池化》
  • Java多线程
  • 2.5 桥梁桥面系及附属结构施工
  • kafka课后总结
  • Spring @Transactional 自调用问题深度解析
  • 【Unity 与c++通信】Unity与c++通信注意事项,参数传递
  • websheet之 自定义函数
  • 成都种业博览会预登记火热进行中,6月8日-9日成都世纪城新国际会展中心与您不见不散!
  • [密码学实战]商用密码产品密钥体系架构:从服务器密码机到动态口令系统
  • vue前端SSE工具库|EventSource 替代方案推荐|PUSDN平行宇宙软件开发者网
  • 如何申请游戏支付平台通道接口?
  • PyTorch生成式人工智能实战(3)——分类任务详解