unity shader 技术从入门到放弃

GLSL转HLSL逆向分析之【函数展开】【二】

2020-02-29  本文已影响0人  耳朵里有只风

为了方便逆向还原HLSL的Shader语言,下面整理了所有HLSL函数对应的GLSL展开,也就是经过编译器编译后的GLSL代码。

abs

直接替换使用

acos

float

u_xlat0 = abs(in_POSITION0.x) * -0.0187292993 + 0.0742610022;
u_xlat0 = u_xlat0 * abs(in_POSITION0.x) + -0.212114394;
u_xlat0 = u_xlat0 * abs(in_POSITION0.x) + 1.57072878;
u_xlat1 = -abs(in_POSITION0.x) + 1.0;
u_xlat1 = sqrt(u_xlat1);
u_xlat2 = u_xlat1 * u_xlat0;
u_xlat2 = u_xlat2 * -2.0 + 3.14159274;
u_xlatb3 = in_POSITION0.x<(-in_POSITION0.x);
u_xlat2 = u_xlatb3 ? u_xlat2 : float(0.0);
gl_Position.x = u_xlat0 * u_xlat1 + u_xlat2;

float2

u_xlat0.xy = abs(in_POSITION0.xy) * vec2(-0.0187292993, -0.0187292993) + vec2(0.0742610022, 0.0742610022);
u_xlat0.xy = u_xlat0.xy * abs(in_POSITION0.xy) + vec2(-0.212114394, -0.212114394);
u_xlat0.xy = u_xlat0.xy * abs(in_POSITION0.xy) + vec2(1.57072878, 1.57072878);
u_xlat4.xy = -abs(in_POSITION0.xy) + vec2(1.0, 1.0);
u_xlat4.xy = sqrt(u_xlat4.xy);
u_xlat1.xy = u_xlat4.xy * u_xlat0.xy;
u_xlat1.xy = u_xlat1.xy * vec2(-2.0, -2.0) + vec2(3.14159274, 3.14159274);
u_xlatb5.xy = lessThan(in_POSITION0.xyxy, (-in_POSITION0.xyxy)).xy;
u_xlat1.xy = mix(vec2(0.0, 0.0), u_xlat1.xy, vec2(u_xlatb5.xy));
gl_Position.xy = u_xlat0.xy * u_xlat4.xy + u_xlat1.xy;

float3

u_xlat0.xyz = abs(in_POSITION0.xyz) * vec3(-0.0187292993, -0.0187292993, -0.0187292993) + vec3(0.0742610022, 0.0742610022, 0.0742610022);
u_xlat0.xyz = u_xlat0.xyz * abs(in_POSITION0.xyz) + vec3(-0.212114394, -0.212114394, -0.212114394);
u_xlat0.xyz = u_xlat0.xyz * abs(in_POSITION0.xyz) + vec3(1.57072878, 1.57072878, 1.57072878);
u_xlat1.xyz = -abs(in_POSITION0.xyz) + vec3(1.0, 1.0, 1.0);
u_xlat1.xyz = sqrt(u_xlat1.xyz);
u_xlat2.xyz = u_xlat0.xyz * u_xlat1.xyz;
u_xlat2.xyz = u_xlat2.xyz * vec3(-2.0, -2.0, -2.0) + vec3(3.14159274, 3.14159274, 3.14159274);
u_xlatb3.xyz = lessThan(in_POSITION0.xyzx, (-in_POSITION0.xyzx)).xyz;
u_xlat2.xyz = mix(vec3(0.0, 0.0, 0.0), u_xlat2.xyz, vec3(u_xlatb3.xyz));
gl_Position.xyz = u_xlat0.xyz * u_xlat1.xyz + u_xlat2.xyz;

float4

u_xlat0 = abs(in_POSITION0) * vec4(-0.0187292993, -0.0187292993, -0.0187292993, -0.0187292993) + vec4(0.0742610022, 0.0742610022, 0.0742610022, 0.0742610022);
u_xlat0 = u_xlat0 * abs(in_POSITION0) + vec4(-0.212114394, -0.212114394, -0.212114394, -0.212114394);
u_xlat0 = u_xlat0 * abs(in_POSITION0) + vec4(1.57072878, 1.57072878, 1.57072878, 1.57072878);
u_xlat1 = -abs(in_POSITION0) + vec4(1.0, 1.0, 1.0, 1.0);
u_xlat1 = sqrt(u_xlat1);
u_xlat2 = u_xlat0 * u_xlat1;
u_xlat2 = u_xlat2 * vec4(-2.0, -2.0, -2.0, -2.0) + vec4(3.14159274, 3.14159274, 3.14159274, 3.14159274);
u_xlatb3 = lessThan(in_POSITION0, (-in_POSITION0));
u_xlat2 = mix(vec4(0.0, 0.0, 0.0, 0.0), u_xlat2, vec4(u_xlatb3));
gl_Position = u_xlat0 * u_xlat1 + u_xlat2;

all

any

asfloat

asin

float

u_xlat0 = abs(in_POSITION0.x) * -0.0187292993 + 0.0742610022;
u_xlat0 = u_xlat0 * abs(in_POSITION0.x) + -0.212114394;
u_xlat0 = u_xlat0 * abs(in_POSITION0.x) + 1.57072878;
u_xlat1 = -abs(in_POSITION0.x) + 1.0;
u_xlat1 = sqrt(u_xlat1);
u_xlat2 = u_xlat1 * u_xlat0;
u_xlat2 = u_xlat2 * -2.0 + 3.14159274;
u_xlatb3 = in_POSITION0.x<(-in_POSITION0.x);
u_xlat2 = u_xlatb3 ? u_xlat2 : float(0.0);
u_xlat0 = u_xlat0 * u_xlat1 + u_xlat2;
gl_Position.x = (-u_xlat0) + 1.57079637;

float2

u_xlat0.xy = abs(in_POSITION0.xy) * vec2(-0.0187292993, -0.0187292993) + vec2(0.0742610022, 0.0742610022);
u_xlat0.xy = u_xlat0.xy * abs(in_POSITION0.xy) + vec2(-0.212114394, -0.212114394);
u_xlat0.xy = u_xlat0.xy * abs(in_POSITION0.xy) + vec2(1.57072878, 1.57072878);
u_xlat4.xy = -abs(in_POSITION0.xy) + vec2(1.0, 1.0);
u_xlat4.xy = sqrt(u_xlat4.xy);
u_xlat1.xy = u_xlat4.xy * u_xlat0.xy;
u_xlat1.xy = u_xlat1.xy * vec2(-2.0, -2.0) + vec2(3.14159274, 3.14159274);
u_xlatb5.xy = lessThan(in_POSITION0.xyxy, (-in_POSITION0.xyxy)).xy;
u_xlat1.xy = mix(vec2(0.0, 0.0), u_xlat1.xy, vec2(u_xlatb5.xy));
u_xlat0.xy = u_xlat0.xy * u_xlat4.xy + u_xlat1.xy;
gl_Position.xy = (-u_xlat0.xy) + vec2(1.57079637, 1.57079637);

float3

u_xlat0.xyz = abs(in_POSITION0.xyz) * vec3(-0.0187292993, -0.0187292993, -0.0187292993) + vec3(0.0742610022, 0.0742610022, 0.0742610022);
u_xlat0.xyz = u_xlat0.xyz * abs(in_POSITION0.xyz) + vec3(-0.212114394, -0.212114394, -0.212114394);
u_xlat0.xyz = u_xlat0.xyz * abs(in_POSITION0.xyz) + vec3(1.57072878, 1.57072878, 1.57072878);
u_xlat1.xyz = -abs(in_POSITION0.xyz) + vec3(1.0, 1.0, 1.0);
u_xlat1.xyz = sqrt(u_xlat1.xyz);
u_xlat2.xyz = u_xlat0.xyz * u_xlat1.xyz;
u_xlat2.xyz = u_xlat2.xyz * vec3(-2.0, -2.0, -2.0) + vec3(3.14159274, 3.14159274, 3.14159274);
u_xlatb3.xyz = lessThan(in_POSITION0.xyzx, (-in_POSITION0.xyzx)).xyz;
u_xlat2.xyz = mix(vec3(0.0, 0.0, 0.0), u_xlat2.xyz, vec3(u_xlatb3.xyz));
u_xlat0.xyz = u_xlat0.xyz * u_xlat1.xyz + u_xlat2.xyz;
gl_Position.xyz = (-u_xlat0.xyz) + vec3(1.57079637, 1.57079637, 1.57079637);

float4

u_xlat0 = abs(in_POSITION0) * vec4(-0.0187292993, -0.0187292993, -0.0187292993, -0.0187292993) + vec4(0.0742610022, 0.0742610022, 0.0742610022, 0.0742610022);
u_xlat0 = u_xlat0 * abs(in_POSITION0) + vec4(-0.212114394, -0.212114394, -0.212114394, -0.212114394);
u_xlat0 = u_xlat0 * abs(in_POSITION0) + vec4(1.57072878, 1.57072878, 1.57072878, 1.57072878);
u_xlat1 = -abs(in_POSITION0) + vec4(1.0, 1.0, 1.0, 1.0);
u_xlat1 = sqrt(u_xlat1);
u_xlat2 = u_xlat0 * u_xlat1;
u_xlat2 = u_xlat2 * vec4(-2.0, -2.0, -2.0, -2.0) + vec4(3.14159274, 3.14159274, 3.14159274, 3.14159274);
u_xlatb3 = lessThan(in_POSITION0, (-in_POSITION0));
u_xlat2 = mix(vec4(0.0, 0.0, 0.0, 0.0), u_xlat2, vec4(u_xlatb3));
u_xlat0 = u_xlat0 * u_xlat1 + u_xlat2;
gl_Position = (-u_xlat0) + vec4(1.57079637, 1.57079637, 1.57079637, 1.57079637);

asint

asuint

atan

float

u_xlat0 = max(abs(in_POSITION0.x), 1.0);
u_xlat0 = float(1.0) / u_xlat0;
u_xlat1 = min(abs(in_POSITION0.x), 1.0);
u_xlat0 = u_xlat0 * u_xlat1;
u_xlat1 = u_xlat0 * u_xlat0;
u_xlat2 = u_xlat1 * 0.0208350997 + -0.0851330012;
u_xlat2 = u_xlat1 * u_xlat2 + 0.180141002;
u_xlat2 = u_xlat1 * u_xlat2 + -0.330299497;
u_xlat1 = u_xlat1 * u_xlat2 + 0.999866009;
u_xlat2 = u_xlat1 * u_xlat0;
u_xlat2 = u_xlat2 * -2.0 + 1.57079637;
u_xlatb3 = 1.0<abs(in_POSITION0.x);
u_xlat2 = u_xlatb3 ? u_xlat2 : float(0.0);
u_xlat0 = u_xlat0 * u_xlat1 + u_xlat2;
u_xlat1 = min(in_POSITION0.x, 1.0);
u_xlatb1 = u_xlat1<(-u_xlat1);
gl_Position.x = (u_xlatb1) ? (-u_xlat0) : u_xlat0;

float2

u_xlat0.xy = max(abs(in_POSITION0.xy), vec2(1.0, 1.0));
u_xlat0.xy = vec2(1.0, 1.0) / u_xlat0.xy;
u_xlat4.xy = min(abs(in_POSITION0.xy), vec2(1.0, 1.0));
u_xlat0.xy = u_xlat0.xy * u_xlat4.xy;
u_xlat4.xy = u_xlat0.xy * u_xlat0.xy;
u_xlat1.xy = u_xlat4.xy * vec2(0.0208350997, 0.0208350997) + vec2(-0.0851330012, -0.0851330012);
u_xlat1.xy = u_xlat4.xy * u_xlat1.xy + vec2(0.180141002, 0.180141002);
u_xlat1.xy = u_xlat4.xy * u_xlat1.xy + vec2(-0.330299497, -0.330299497);
u_xlat4.xy = u_xlat4.xy * u_xlat1.xy + vec2(0.999866009, 0.999866009);
u_xlat1.xy = u_xlat4.xy * u_xlat0.xy;
u_xlat1.xy = u_xlat1.xy * vec2(-2.0, -2.0) + vec2(1.57079637, 1.57079637);
u_xlatb5.xy = lessThan(vec4(1.0, 1.0, 1.0, 1.0), abs(in_POSITION0.xyxy)).xy;
u_xlat1.xy = mix(vec2(0.0, 0.0), u_xlat1.xy, vec2(u_xlatb5.xy));
u_xlat0.xy = u_xlat0.xy * u_xlat4.xy + u_xlat1.xy;
u_xlat4.xy = min(in_POSITION0.xy, vec2(1.0, 1.0));
u_xlatb4.xy = lessThan(u_xlat4.xyxy, (-u_xlat4.xyxy)).xy;
gl_Position.x = (u_xlatb4.x) ? (-u_xlat0.x) : u_xlat0.x;
gl_Position.y = (u_xlatb4.y) ? (-u_xlat0.y) : u_xlat0.y;

float3

u_xlat0.xyz = max(abs(in_POSITION0.xyz), vec3(1.0, 1.0, 1.0));
u_xlat0.xyz = vec3(1.0, 1.0, 1.0) / u_xlat0.xyz;
u_xlat1.xyz = min(abs(in_POSITION0.xyz), vec3(1.0, 1.0, 1.0));
u_xlat0.xyz = u_xlat0.xyz * u_xlat1.xyz;
u_xlat1.xyz = u_xlat0.xyz * u_xlat0.xyz;
u_xlat2.xyz = u_xlat1.xyz * vec3(0.0208350997, 0.0208350997, 0.0208350997) + vec3(-0.0851330012, -0.0851330012, -0.0851330012);
u_xlat2.xyz = u_xlat1.xyz * u_xlat2.xyz + vec3(0.180141002, 0.180141002, 0.180141002);
u_xlat2.xyz = u_xlat1.xyz * u_xlat2.xyz + vec3(-0.330299497, -0.330299497, -0.330299497);
u_xlat1.xyz = u_xlat1.xyz * u_xlat2.xyz + vec3(0.999866009, 0.999866009, 0.999866009);
u_xlat2.xyz = u_xlat0.xyz * u_xlat1.xyz;
u_xlat2.xyz = u_xlat2.xyz * vec3(-2.0, -2.0, -2.0) + vec3(1.57079637, 1.57079637, 1.57079637);
u_xlatb3.xyz = lessThan(vec4(1.0, 1.0, 1.0, 0.0), abs(in_POSITION0.xyzx)).xyz;
u_xlat2.xyz = mix(vec3(0.0, 0.0, 0.0), u_xlat2.xyz, vec3(u_xlatb3.xyz));
u_xlat0.xyz = u_xlat0.xyz * u_xlat1.xyz + u_xlat2.xyz;
u_xlat1.xyz = min(in_POSITION0.xyz, vec3(1.0, 1.0, 1.0));
u_xlatb1.xyz = lessThan(u_xlat1.xyzx, (-u_xlat1.xyzx)).xyz;
gl_Position.x = (u_xlatb1.x) ? (-u_xlat0.x) : u_xlat0.x;
gl_Position.y = (u_xlatb1.y) ? (-u_xlat0.y) : u_xlat0.y;
gl_Position.z = (u_xlatb1.z) ? (-u_xlat0.z) : u_xlat0.z;

float4

u_xlat0 = max(abs(in_POSITION0), vec4(1.0, 1.0, 1.0, 1.0));
u_xlat0 = vec4(1.0, 1.0, 1.0, 1.0) / u_xlat0;
u_xlat1 = min(abs(in_POSITION0), vec4(1.0, 1.0, 1.0, 1.0));
u_xlat0 = u_xlat0 * u_xlat1;
u_xlat1 = u_xlat0 * u_xlat0;
u_xlat2 = u_xlat1 * vec4(0.0208350997, 0.0208350997, 0.0208350997, 0.0208350997) + vec4(-0.0851330012, -0.0851330012, -0.0851330012, -0.0851330012);
u_xlat2 = u_xlat1 * u_xlat2 + vec4(0.180141002, 0.180141002, 0.180141002, 0.180141002);
u_xlat2 = u_xlat1 * u_xlat2 + vec4(-0.330299497, -0.330299497, -0.330299497, -0.330299497);
u_xlat1 = u_xlat1 * u_xlat2 + vec4(0.999866009, 0.999866009, 0.999866009, 0.999866009);
u_xlat2 = u_xlat0 * u_xlat1;
u_xlat2 = u_xlat2 * vec4(-2.0, -2.0, -2.0, -2.0) + vec4(1.57079637, 1.57079637, 1.57079637, 1.57079637);
u_xlatb3 = lessThan(vec4(1.0, 1.0, 1.0, 1.0), abs(in_POSITION0));
u_xlat2 = mix(vec4(0.0, 0.0, 0.0, 0.0), u_xlat2, vec4(u_xlatb3));
u_xlat0 = u_xlat0 * u_xlat1 + u_xlat2;
u_xlat1 = min(in_POSITION0, vec4(1.0, 1.0, 1.0, 1.0));
u_xlatb1 = lessThan(u_xlat1, (-u_xlat1));
gl_Position.x = (u_xlatb1.x) ? (-u_xlat0.x) : u_xlat0.x;
gl_Position.y = (u_xlatb1.y) ? (-u_xlat0.y) : u_xlat0.y;
gl_Position.z = (u_xlatb1.z) ? (-u_xlat0.z) : u_xlat0.z;
gl_Position.w = (u_xlatb1.w) ? (-u_xlat0.w) : u_xlat0.w;

atan2

ceil

直接替换使用

clamp

float

u_xlat0 = max(in_POSITION0.x, data_min);
gl_Position.x = min(u_xlat0, data_max);

float2

u_xlat0 = max(in_POSITION0.x, data_min);
gl_Position.xy = min(u_xlat0, data_max);

float3

u_xlat0 = max(in_POSITION0.x, data_min);
gl_Position.xyz = min(u_xlat0, data_max);

float4

u_xlat0 = max(in_POSITION0.x, data_min);
gl_Position = min(u_xlat0, data_max);

clip

float

u_xlatb1 = u_xlat10_0.w<0.0;
SV_Target0 = u_xlat10_0;
if(((int(u_xlatb1) * -1))!=0){discard;}

float2

u_xlatb1.xy = lessThan(u_xlat10_0.xyxx, vec4(0.0, 0.0, 0.0, 0.0)).xy;
u_xlatb0 = u_xlatb1.y || u_xlatb1.x;
if(((int(u_xlatb0) * -1))!=0){discard;}

float3

u_xlatb1.xyz = lessThan(u_xlat10_0.xyzx, vec4(0.0, 0.0, 0.0, 0.0)).xyz;
u_xlatb0 = u_xlatb1.y || u_xlatb1.x;
u_xlatb0 = u_xlatb1.z || u_xlatb0;
if(((int(u_xlatb0) * -1))!=0){discard;}

float4

u_xlatb1 = lessThan(u_xlat0, vec4(0.0, 0.0, 0.0, 0.0));
u_xlatb0.x = u_xlatb1.z || u_xlatb1.x;
u_xlatb0.y = u_xlatb1.w || u_xlatb1.y;
u_xlatb0.x = u_xlatb0.y || u_xlatb0.x;
if(((int(u_xlatb0.x) * -1))!=0){discard;}

float4x4

u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[0].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[0].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[0].wwww + u_xlat0;
u_xlat1.x = u_xlat0.x;
u_xlat2 = hlslcc_mtx4x4unity_ObjectToWorld[1].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat2 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[1].xxxx + u_xlat2;
u_xlat2 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[1].zzzz + u_xlat2;
u_xlat2 = hlslcc_mtx4x4unity_MatrixVP[3].xwyz * hlslcc_mtx4x4unity_ObjectToWorld[1].wwww + u_xlat2.xwyz;
u_xlat1.y = u_xlat2.x;
u_xlat3 = hlslcc_mtx4x4unity_ObjectToWorld[2].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat3 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[2].xxxx + u_xlat3;
u_xlat3 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[2].zzzz + u_xlat3;
u_xlat3 = hlslcc_mtx4x4unity_MatrixVP[3].xzyw * hlslcc_mtx4x4unity_ObjectToWorld[2].wwww + u_xlat3.xzyw;
u_xlat1.z = u_xlat3.x;
u_xlat4 = hlslcc_mtx4x4unity_ObjectToWorld[3].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat4 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[3].xxxx + u_xlat4;
u_xlat4 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[3].zzzz + u_xlat4;
u_xlat4 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[3].wwww + u_xlat4;
u_xlat1.w = u_xlat4.x;
u_xlatb1 = lessThan(u_xlat1, vec4(0.0, 0.0, 0.0, 0.0));
u_xlat5.x = u_xlat0.z;
u_xlat5.y = u_xlat2.w;
u_xlat5.z = u_xlat3.y;
u_xlat5.w = u_xlat4.z;
u_xlatb5 = lessThan(u_xlat5, vec4(0.0, 0.0, 0.0, 0.0));
u_xlati1 = op_or((ivec4(u_xlatb1) * -1), (ivec4(u_xlatb5) * -1));
u_xlat3.x = u_xlat0.y;
u_xlat2.x = u_xlat0.w;
u_xlat3.y = u_xlat2.z;
u_xlat2.z = u_xlat3.w;
u_xlat3.w = u_xlat4.y;
u_xlat2.w = u_xlat4.w;
u_xlatb0 = lessThan(u_xlat2, vec4(0.0, 0.0, 0.0, 0.0));
u_xlatb2 = lessThan(u_xlat3, vec4(0.0, 0.0, 0.0, 0.0));
u_xlati0 = op_or((ivec4(u_xlatb0) * -1), (ivec4(u_xlatb2) * -1));
u_xlati0 = op_or(u_xlati0, u_xlati1);
u_xlati0.xy = op_or(u_xlati0.zw, u_xlati0.xy);
u_xlati0.x = op_or(u_xlati0.y, u_xlati0.x);
if((u_xlati0.x)!=0){discard;}

cos

可直接替换

cosh

float

u_xlat0 = in_POSITION0.x * 1.44269502;
u_xlat1 = exp2(u_xlat0);
u_xlat0 = exp2((-u_xlat0));
u_xlat0 = u_xlat0 + u_xlat1;
gl_Position.x = u_xlat0 * 0.5;

float2

u_xlat0.xy = in_POSITION0.xy * vec2(1.44269502, 1.44269502);
u_xlat2.xy = exp2(u_xlat0.xy);
u_xlat0.xy = exp2((-u_xlat0.xy));
u_xlat0.xy = u_xlat0.xy + u_xlat2.xy;
gl_Position.xy = u_xlat0.xy * vec2(0.5, 0.5);

float3

u_xlat0.xyz = in_POSITION0.xyz * vec3(1.44269502, 1.44269502, 1.44269502);
u_xlat1.xyz = exp2(u_xlat0.xyz);
u_xlat0.xyz = exp2((-u_xlat0.xyz));
u_xlat0.xyz = u_xlat0.xyz + u_xlat1.xyz;
gl_Position.xyz = u_xlat0.xyz * vec3(0.5, 0.5, 0.5);

float4

u_xlat0 = in_POSITION0 * vec4(1.44269502, 1.44269502, 1.44269502, 1.44269502);
u_xlat1 = exp2(u_xlat0);
u_xlat0 = exp2((-u_xlat0));
u_xlat0 = u_xlat0 + u_xlat1;
gl_Position = u_xlat0 * vec4(0.5, 0.5, 0.5, 0.5);

cross

float3

u_xlat0.xyz = in_POSITION0.zxy * data_vec3_0;
gl_Position.xyz = in_POSITION0.yzx * data_vec3_0 + (-u_xlat0.xyz);

D3DCOLORtoUBYTE4

ddx

使用 dFdx 替代

ddy

使用 dFdy 替代

degrees

float

gl_Position.x = in_POSITION0.x * 57.2957802;

determinant

float4x4

u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[0].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[0].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[0].wwww + u_xlat0;
u_xlat1 = hlslcc_mtx4x4unity_ObjectToWorld[1].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[1].xxxx + u_xlat1;
u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[1].zzzz + u_xlat1;
u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[1].wwww + u_xlat1;
u_xlat2 = hlslcc_mtx4x4unity_ObjectToWorld[2].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat2 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[2].xxxx + u_xlat2;
u_xlat2 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[2].zzzz + u_xlat2;
u_xlat2 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[2].wwww + u_xlat2;
u_xlat3 = hlslcc_mtx4x4unity_ObjectToWorld[3].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat3 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[3].xxxx + u_xlat3;
u_xlat3 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[3].zzzz + u_xlat3;
u_xlat3 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[3].wwww + u_xlat3;
u_xlat4.xyz = u_xlat2.wyz * u_xlat3.zwy;
u_xlat4.xyz = u_xlat2.zwy * u_xlat3.wyz + (-u_xlat4.xyz);
u_xlat4.x = dot(u_xlat4.xyz, u_xlat1.yzw);
u_xlat5.xyz = u_xlat2.zwx * u_xlat3.wxz;
u_xlat5.xyz = u_xlat2.wxz * u_xlat3.zwx + (-u_xlat5.xyz);
u_xlat4.y = dot(u_xlat5.xyz, u_xlat1.xzw);
u_xlat5.xyz = u_xlat2.wxy * u_xlat3.ywx;
u_xlat5.xyz = u_xlat2.ywx * u_xlat3.wxy + (-u_xlat5.xyz);
u_xlat4.z = dot(u_xlat5.xyz, u_xlat1.xyw);
u_xlat5.xyz = u_xlat2.yzx * u_xlat3.zxy;
u_xlat2.xyz = u_xlat2.zxy * u_xlat3.yzx + (-u_xlat5.xyz);
u_xlat4.w = dot(u_xlat2.xyz, u_xlat1.xyz);
gl_Position.x = dot(u_xlat4, u_xlat0);

distance

float2

u_xlat0.xyz = in_POSITION0.xy + data_vec2_0;
u_xlat0.x = dot(u_xlat0.xyz, u_xlat0.xyz);
gl_Position.x = sqrt(u_xlat0.x);

float3

u_xlat0.xyz = in_POSITION0.xyz + data_vec3_0;
u_xlat0.x = dot(u_xlat0.xyz, u_xlat0.xyz);
gl_Position.x = sqrt(u_xlat0.x);

dot

float2

gl_Position.x = dot(in_POSITION0.xy, data_vec2_0);

float3

gl_Position.x = dot(in_POSITION0.xyz, data_vec3_0);

exp

float

u_xlat0 = in_POSITION0.x * 1.44269502;
gl_Position.x = exp2(u_xlat0);

exp2

可以直接替换

faceforward

floor

可以直接替换

fmod

fmod(x, y)
返回a / b的浮点余数

float

u_xlat0 = in_POSITION0.x / in_POSITION0.y;
#ifdef UNITY_ADRENO_ES3
u_xlatb1 = !!(u_xlat0>=(-u_xlat0));
#else
u_xlatb1 = u_xlat0>=(-u_xlat0);
#endif
u_xlat0 = fract(abs(u_xlat0));
u_xlat0 = (u_xlatb1) ? u_xlat0 : (-u_xlat0);
gl_Position.x = u_xlat0 * in_POSITION0.y;

frac

frac(x)
返回输入值的小数部分

可以直接替换

frexp

frexp(x, exp)
返回输入值的尾数和指数

fwidth

fwidth(x)
返回 abs ( ddx (x) + abs ( ddy(x))

float2

u_xlat0.xy = dFdx(vs_TEXCOORD0.xy);
u_xlat2.xy = dFdy(vs_TEXCOORD0.xy);
u_xlat0.xy = abs(u_xlat2.xy) + abs(u_xlat0.xy);

GetRenderTargetSampleCount

GetRenderTargetSamplePosition

isfinite

isfinite(x)
如果输入值为有限值则返回true,否则返回false

isinf

isinf(x)
如何输入值为无限的则返回true

isnan

isnan(x)
如果输入值为NAN或QNAN则返回true

ldexp

ldexp(x, exp)
frexp的逆运算,返回 x * 2 ^ exp

length

length(v)
返回输入向量的长度

float2

u_xlat0 = dot(in_POSITION0.xy, in_POSITION0.xy);
gl_Position.x = sqrt(u_xlat0);

float3

u_xlat0 = dot(in_POSITION0.xyz, in_POSITION0.xyz);
gl_Position.x = sqrt(u_xlat0);

lerp

lerp(x, y, s)
对输入值进行插值计算

float3

u_xlat16_1.xyz = (-in_POSITION0.xyz) + data_vec3_0;
SV_Target0.xyz = in_POSITION0.www * u_xlat16_1.xyz + in_POSITION0.xyz;

lit

lit(n • l, n • h, m)
返回光照向量(环境光,漫反射光,镜面高光,1)

log

log(x)
返回以e为底的对数

float

u_xlat0 = log2(in_POSITION0.x);
gl_Position.x = u_xlat0 * 0.693147182;

log10

log10(x)
返回以10为底的对数

float

u_xlat0 = log2(in_POSITION0.x);
gl_Position.x = u_xlat0 * 0.30103001;

log2

log2(x)
返回以2为底的对数

可直接替换

max

max(x, y)
返回两个输入值中较大的一个

可直接替换

min

min(x, y)
返回两个输入值中较小的一个

可直接替换

modf

modf(x, out ip)
把输入值分解为整数和小数部分

float

u_xlat0 = trunc(in_POSITION0.x);
gl_Position.x = (-u_xlat0) + in_POSITION0.x;
gl_Position.y = u_xlat0;

mul

mul(x, y)
返回输入矩阵相乘的积

float

u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0].y * hlslcc_mtx4x4unity_MatrixVP[1].x;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0].x * hlslcc_mtx4x4unity_ObjectToWorld[0].x + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2].x * hlslcc_mtx4x4unity_ObjectToWorld[0].z + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3].x * hlslcc_mtx4x4unity_ObjectToWorld[0].w + u_xlat0;
gl_Position.x = u_xlat0 * in_POSITION0.x;

float2

u_xlat0.xy = hlslcc_mtx4x4unity_ObjectToWorld[0].yy * hlslcc_mtx4x4unity_MatrixVP[1].xy;
u_xlat0.xy = hlslcc_mtx4x4unity_MatrixVP[0].xy * hlslcc_mtx4x4unity_ObjectToWorld[0].xx + u_xlat0.xy;
u_xlat0.xy = hlslcc_mtx4x4unity_MatrixVP[2].xy * hlslcc_mtx4x4unity_ObjectToWorld[0].zz + u_xlat0.xy;
u_xlat0.xy = hlslcc_mtx4x4unity_MatrixVP[3].xy * hlslcc_mtx4x4unity_ObjectToWorld[0].ww + u_xlat0.xy;
gl_Position.x = dot(in_POSITION0.xy, u_xlat0.xy);
u_xlat0.xy = hlslcc_mtx4x4unity_ObjectToWorld[1].yy * hlslcc_mtx4x4unity_MatrixVP[1].xy;
u_xlat0.xy = hlslcc_mtx4x4unity_MatrixVP[0].xy * hlslcc_mtx4x4unity_ObjectToWorld[1].xx + u_xlat0.xy;
u_xlat0.xy = hlslcc_mtx4x4unity_MatrixVP[2].xy * hlslcc_mtx4x4unity_ObjectToWorld[1].zz + u_xlat0.xy;
u_xlat0.xy = hlslcc_mtx4x4unity_MatrixVP[3].xy * hlslcc_mtx4x4unity_ObjectToWorld[1].ww + u_xlat0.xy;
gl_Position.y = dot(in_POSITION0.xy, u_xlat0.xy);

float3

u_xlat0.xyz = hlslcc_mtx4x4unity_ObjectToWorld[0].yyy * hlslcc_mtx4x4unity_MatrixVP[1].xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[0].xyz * hlslcc_mtx4x4unity_ObjectToWorld[0].xxx + u_xlat0.xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[2].xyz * hlslcc_mtx4x4unity_ObjectToWorld[0].zzz + u_xlat0.xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[3].xyz * hlslcc_mtx4x4unity_ObjectToWorld[0].www + u_xlat0.xyz;
gl_Position.x = dot(in_POSITION0.xyz, u_xlat0.xyz);
u_xlat0.xyz = hlslcc_mtx4x4unity_ObjectToWorld[1].yyy * hlslcc_mtx4x4unity_MatrixVP[1].xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[0].xyz * hlslcc_mtx4x4unity_ObjectToWorld[1].xxx + u_xlat0.xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[2].xyz * hlslcc_mtx4x4unity_ObjectToWorld[1].zzz + u_xlat0.xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[3].xyz * hlslcc_mtx4x4unity_ObjectToWorld[1].www + u_xlat0.xyz;
gl_Position.y = dot(in_POSITION0.xyz, u_xlat0.xyz);
u_xlat0.xyz = hlslcc_mtx4x4unity_ObjectToWorld[2].yyy * hlslcc_mtx4x4unity_MatrixVP[1].xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[0].xyz * hlslcc_mtx4x4unity_ObjectToWorld[2].xxx + u_xlat0.xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[2].xyz * hlslcc_mtx4x4unity_ObjectToWorld[2].zzz + u_xlat0.xyz;
u_xlat0.xyz = hlslcc_mtx4x4unity_MatrixVP[3].xyz * hlslcc_mtx4x4unity_ObjectToWorld[2].www + u_xlat0.xyz;
gl_Position.z = dot(in_POSITION0.xyz, u_xlat0.xyz);

float4

u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[0].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[0].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[0].wwww + u_xlat0;
gl_Position.x = dot(in_POSITION0, u_xlat0);
u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[1].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[1].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[1].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[1].wwww + u_xlat0;
gl_Position.y = dot(in_POSITION0, u_xlat0);
u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[2].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[2].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[2].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[2].wwww + u_xlat0;
gl_Position.z = dot(in_POSITION0, u_xlat0);
u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[3].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[3].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[3].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[3].wwww + u_xlat0;
gl_Position.w = dot(in_POSITION0, u_xlat0);

noise

noise(x)
Generates a random value using the Perlin-noise algorithm.

normalize

normalize(x)
返回规范化的向量,定义为 x / length(x)

float3

u_xlat16_1 = dot(u_xlat16_0.xyz, u_xlat16_0.xyz);
u_xlat16_1 = inversesqrt(u_xlat16_1);
SV_Target0.xyz = u_xlat16_0.xyz * vec3(u_xlat16_1);

pow

pow(x, y)
返回输入值的指定次幂

float

u_xlat0 = log2(in_POSITION0.x);
u_xlat0 = u_xlat0 * in_POSITION0.y;
gl_Position.x = exp2(u_xlat0);

radians

radians(x)
角度到弧度的转换

float

gl_Position.x = in_POSITION0.x * 0.0174532924;

reflect

reflect(i, n)
返回入射光线i对表面法线n的反射光线

float3

u_xlat16_6 = dot(data_vec3_0.xyz, data_vec3_1.xyz);
u_xlat16_6 = u_xlat16_6 + u_xlat16_6;
data_vec3_0.xyz = data_vec3_1.xyz * (-vec3(u_xlat16_6)) + data_vec3_0.xyz;
SV_Target0.xyz = data_vec3_0.xyz;

refract

refract(i, n, R)
返回在入射光线i,表面法线n,折射率为eta下的折射光线v

float3

    u_xlat16_10 = dot(data_vec3_0.xyz, data_vec3_1.xyz);
    u_xlat16_2 = (-u_xlat16_10) * u_xlat16_10 + 1.0;
    u_xlat0.x = (-u_xlat0.x) * u_xlat16_2 + 1.0;
    u_xlat2 = sqrt(u_xlat0.x);
#ifdef UNITY_ADRENO_ES3
    u_xlatb0 = !!(u_xlat0.x>=0.0);
#else
    u_xlatb0 = u_xlat0.x>=0.0;
#endif
    u_xlat10 = data_vec_0.x * u_xlat16_10 + u_xlat2;
    u_xlat1.xyz = data_vec3_1.xyz * vec3(u_xlat10);
    u_xlat3.xyz = data_vec_0.xxx * data_vec3_0.xyz + (-u_xlat1.xyz);
    u_xlat0.xyz = mix(vec3(0.0, 0.0, 0.0), u_xlat3.xyz, vec3(bvec3(u_xlatb0)));
    SV_Target0.xyz = u_xlat0.xyz;

round

round(x)
返回最接近于输入值的整数

float

gl_Position.x = roundEven(in_POSITION0.x);

rsqrt

rsqrt(x)
返回输入值平方根的倒数

float

gl_Position.x = inversesqrt(in_POSITION0.x);

saturate

saturate(x)
把输入值限制到[0, 1]之间

float

#ifdef UNITY_ADRENO_ES3
    SV_Target0.w = min(max(data_vec_0, 0.0), 1.0);
#else
    SV_Target0.w = clamp(data_vec_0, 0.0, 1.0);
#endif

sign

sign(x)
计算输入值的符号

float

#ifdef UNITY_ADRENO_ES3
    { bool cond = 0.0<in_POSITION0.x; u_xlati0 = int(!!cond ? 0xFFFFFFFFu : uint(0)); }
#else
    u_xlati0 = int((0.0<in_POSITION0.x) ? 0xFFFFFFFFu : uint(0));
#endif
#ifdef UNITY_ADRENO_ES3
    { bool cond = in_POSITION0.x<0.0; u_xlati1 = int(!!cond ? 0xFFFFFFFFu : uint(0)); }
#else
    u_xlati1 = int((in_POSITION0.x<0.0) ? 0xFFFFFFFFu : uint(0));
#endif
    u_xlati0 = (-u_xlati0) + u_xlati1;
    gl_Position.x = float(u_xlati0);

sin

sin(x)
计算输入值的正弦值

可直接替换

sincos

sincos(x, out s, out c)
返回输入值的正弦和余弦值

sinh

sinh(x)
返回x的双曲正弦

float

u_xlat0 = in_POSITION0.x * 1.44269502;
u_xlat1 = exp2(u_xlat0);
u_xlat0 = exp2((-u_xlat0));
u_xlat0 = (-u_xlat0) + u_xlat1;
gl_Position.x = u_xlat0 * 0.5;

smoothstep

smoothstep(min, max, x)
返回一个在输入值之间平稳变化的插值

float

    u_xlat16_1 = (-data_vec3_0) + data_vec3_1;
    u_xlat0 = (-data_vec3_0) + data_vec_0.x;
    u_xlat16_1 = float(1.0) / u_xlat16_1;
    u_xlat0 = u_xlat16_1 * u_xlat0;
#ifdef UNITY_ADRENO_ES3
    u_xlat0 = min(max(u_xlat0, 0.0), 1.0);
#else
    u_xlat0 = clamp(u_xlat0, 0.0, 1.0);
#endif
    u_xlat1 = u_xlat0 * -2.0 + 3.0;
    u_xlat0 = u_xlat0 * u_xlat0;
    u_xlat0 = u_xlat0 * u_xlat1;
    SV_Target0.x = u_xlat0;

float2

    u_xlat0.xy = (-data_vec3_0.xy) + data_vec_0.xx;
    data_vec3_1.xy = vec2(1.0, 1.0) / data_vec3_1.xy;
    u_xlat0.xy = data_vec3_1.xy * u_xlat0.xy;
#ifdef UNITY_ADRENO_ES3
    u_xlat0.xy = min(max(u_xlat0.xy, 0.0), 1.0);
#else
    u_xlat0.xy = clamp(u_xlat0.xy, 0.0, 1.0);
#endif
    u_xlat2.xy = u_xlat0.xy * vec2(-2.0, -2.0) + vec2(3.0, 3.0);
    u_xlat0.xy = u_xlat0.xy * u_xlat0.xy;
    u_xlat0.xy = u_xlat0.xy * u_xlat2.xy;
    SV_Target0.xy = u_xlat0.xy;

float3

    u_xlat0.xyz = (-data_vec3_0.xyz) + data_vec_0.xxx;
    data_vec3_1.xyz = vec3(1.0, 1.0, 1.0) / data_vec3_1.xyz;
    u_xlat0.xyz = u_xlat0.xyz * data_vec3_1.xyz;
#ifdef UNITY_ADRENO_ES3
    u_xlat0.xyz = min(max(u_xlat0.xyz, 0.0), 1.0);
#else
    u_xlat0.xyz = clamp(u_xlat0.xyz, 0.0, 1.0);
#endif
    u_xlat1.xyz = u_xlat0.xyz * vec3(-2.0, -2.0, -2.0) + vec3(3.0, 3.0, 3.0);
    u_xlat0.xyz = u_xlat0.xyz * u_xlat0.xyz;
    u_xlat0.xyz = u_xlat0.xyz * u_xlat1.xyz;
    SV_Target0.xyz = u_xlat0.xyz;

float4

sqrt

sqrt(x)
返回输入值的平方根

可直接替换

step

step(a, x)
返回(x >= a)? 1 : 0

float

#ifdef UNITY_ADRENO_ES3
    u_xlatb0 = !!(in_POSITION0.y>=in_POSITION0.x);
#else
    u_xlatb0 = in_POSITION0.y>=in_POSITION0.x;
#endif
    gl_Position.x = u_xlatb0 ? 1.0 : float(0.0);

tan

tan(x)
返回输入值的正切值

float

u_xlat0 = sin(in_POSITION0.x);
u_xlat1 = cos(in_POSITION0.x);
gl_Position.x = u_xlat0 / u_xlat1;

tanh

tanh(x)
返回输入值的双曲线切线

float

u_xlat0 = in_POSITION0.x * 1.44269502;
u_xlat1 = exp2(u_xlat0);
u_xlat0 = exp2((-u_xlat0));
u_xlat2 = u_xlat0 + u_xlat1;
u_xlat0 = (-u_xlat0) + u_xlat1;
u_xlat1 = float(1.0) / u_xlat2;
gl_Position.x = u_xlat1 * u_xlat0;

tex1D

tex1Dbias

tex1Dgrad

tex1Dlod

tex1Dproj

tex2D

tex2D(s, t)
2D纹理查询

u_xlat16_0 = texture(_MainTex, vs_TEXCOORD0.xy);
SV_Target0 = u_xlat16_0;

tex2Dbias

tex2Dgrad

tex2Dlod

tex2Dproj

tex3D

tex3D(s, t)
3D纹理查询


tex3Dbias

tex3Dgrad

tex3Dlod

tex3Dproj

texCUBE

texCUBEbias

texCUBEgrad

texCUBElod

texCUBEproj

transpose

transpose(m)
返回输入矩阵的转置

u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0].yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[0] * hlslcc_mtx4x4unity_ObjectToWorld[0].xxxx + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[2] * hlslcc_mtx4x4unity_ObjectToWorld[0].zzzz + u_xlat0;
u_xlat0 = hlslcc_mtx4x4unity_MatrixVP[3] * hlslcc_mtx4x4unity_ObjectToWorld[0].wwww + u_xlat0;

trunc

trunc(x)
Truncates floating-point value(s) to integer value(s)

可直接替换

上一篇 下一篇

猜你喜欢

热点阅读