当前位置: 首页 > 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
  • 剪纸纹样“流动”在水乡,谁不忆江南
  • “80后”王建浩履新三沙市委常委、组织部部长、秘书长
  • 五一假期上海路网哪里易拥堵?怎么错峰更靠谱?研判报告来了
  • 公安部知识产权犯罪侦查局:侦破盗录传播春节档院线电影刑案25起
  • 潘功胜:央行将实施好适度宽松的货币政策,推动中国经济高质量发展
  • 美官员称与乌克兰会谈富有成效,但仍存重大分歧