作为shader编写的一段练习题我将物体的平移、缩放和旋转分别利用shader实现,此处代码仅作为参考,尽量不要在shader代码中利用if语句判断。
效果如下:

shader代码如下:
Shader "Unlit/CustomChange"
{
Properties
{
//显示一个下拉菜单
[Enum(Translational,0,Scale,1,Rotation,2)]_Transform("Transform",float) = 0
_Translational("Translational",vector) = (0.0,0.0,0.0,0.0)
_Scale("Scale",vector) = (1.0,1.0,1.0,1.0)
_Rotation("Rotation",vector) = (0.0,0.0,0.0,1.0)
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
uniform float _Transform;
uniform float4 _Translational;
uniform float4 _Scale;
uniform float4 _Rotation;
struct appdata
{
float4 vertex : POSITION;
};
struct v2f
{
float4 color:COLOR;
float4 vertex : SV_POSITION;
};
//平移矩阵
float4x4 Translational(float4 translational)
{
return float4x4(1.0, 0.0, 0.0, translational.x,
0.0, 1.0, 0.0, translational.y,
0.0, 0.0, 1.0, translational.z,
0.0, 0.0, 0.0, 1.0);
}

该博客分享了如何使用Unity Shader分别实现物体的平移、缩放和旋转,并通过 shader 代码将三种变换结合在一起。作者提供了两段 shader 代码,第一段展示了独立的平移、缩放和旋转矩阵计算,而第二段代码则将这些变换融合在一个TRS Blend矩阵中,实现了更高效的操作。博客内容适合对Unity图形编程感兴趣的读者学习。
最低0.47元/天 解锁文章
16万+

被折叠的 条评论
为什么被折叠?



