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

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}}}

 

相关文章:

  • 中建海龙MiC模块化建筑赋能“好房子”新范式
  • Linux 权限修改详解:chmod 命令与权限数字的秘密
  • 15.ArkUI Checkbox的介绍和使用
  • 人工智能(AI)对网络管理的影响
  • 增加首屏图片
  • 【Deepseek学习大模型推理】MOONCAKE: A KVCache-centric Architecture实验部分(下)
  • 软件测试入门学习笔记
  • 代码随想录学习笔记---二叉树
  • PCI 总线学习笔记(五)
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十六页
  • 关注心理健康,开启心灵养生之旅
  • OpenCV 图形API(63)图像结构分析和形状描述符------计算图像中非零像素的边界框函数boundingRect()
  • MySQL触法器
  • Golang | 迭代器模式
  • 快速了解redis,个人笔记
  • PyTorch深度学习框架60天进阶学习计划 - 第51天:扩散模型原理(二)
  • BT151-ASEMI无人机专用功率器件BT151
  • docker 代理配置冲突问题
  • (Go Gin)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
  • VGA/EDP/HDMI转LVDS,支持1920*1080,1920*1200@120HZ
  • 永久基本农田竟沦为垃圾场,湖南湘潭回应:全面启动专项整治
  • 左手免费午餐右手花开岭,邓飞14年公益之路的中国贡献
  • 《风林火山》千呼万唤始出来,戛纳首映后口碑崩盘?
  • 蒲慕明院士:未来数十年不是AI取代人,而是会用AI的人取代不会用的
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:机器人行业没包袱,很多事都能从零开始