GLSL轉(zhuǎn)HLSL逆向分析之【函數(shù)展開】【二】

為了方便逆向還原HLSL的Shader語言,下面整理了所有HLSL函數(shù)對應(yīng)的GLSL展開,也就是經(jīng)過編譯器編譯后的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的浮點(diǎn)余數(shù)

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)
返回輸入值的小數(shù)部分

可以直接替換

frexp

frexp(x, exp)
返回輸入值的尾數(shù)和指數(shù)

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的逆運(yùn)算缆瓣,返回 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)
對輸入值進(jìn)行插值計(jì)算

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)
返回光照向量(環(huán)境光喧枷,漫反射光,鏡面高光弓坞,1)

log

log(x)
返回以e為底的對數(shù)

float

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

log10

log10(x)
返回以10為底的對數(shù)

float

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

log2

log2(x)
返回以2為底的對數(shù)

可直接替換

max

max(x, y)
返回兩個(gè)輸入值中較大的一個(gè)

可直接替換

min

min(x, y)
返回兩個(gè)輸入值中較小的一個(gè)

可直接替換

modf

modf(x, out ip)
把輸入值分解為整數(shù)和小數(shù)部分

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)
返回規(guī)范化的向量隧甚,定義為 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)
角度到弧度的轉(zhuǎn)換

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)
返回最接近于輸入值的整數(shù)

float

gl_Position.x = roundEven(in_POSITION0.x);

rsqrt

rsqrt(x)
返回輸入值平方根的倒數(shù)

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)
計(jì)算輸入值的符號

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)
計(jì)算輸入值的正弦值

可直接替換

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)
返回一個(gè)在輸入值之間平穩(wěn)變化的插值

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)
返回輸入矩陣的轉(zhuǎn)置

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)

可直接替換

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末戚扳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子族吻,更是在濱河造成了極大的恐慌帽借,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件超歌,死亡現(xiàn)場離奇詭異砍艾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巍举,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門辐董,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人禀综,你說我怎么就攤上這事简烘√ρ希” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵孤澎,是天一觀的道長届氢。 經(jīng)常有香客問我,道長覆旭,這世上最難降的妖魔是什么退子? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮型将,結(jié)果婚禮上寂祥,老公的妹妹穿的比我還像新娘。我一直安慰自己七兜,他們只是感情好丸凭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腕铸,像睡著了一般惜犀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狠裹,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天虽界,我揣著相機(jī)與錄音,去河邊找鬼涛菠。 笑死莉御,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的俗冻。 我是一名探鬼主播颈将,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼言疗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颂砸,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤噪奄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后人乓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勤篮,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年色罚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碰缔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戳护,死狀恐怖金抡,靈堂內(nèi)的尸體忽然破棺而出瀑焦,到底是詐尸還是另有隱情,我是刑警寧澤梗肝,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布榛瓮,位于F島的核電站,受9級特大地震影響巫击,放射性物質(zhì)發(fā)生泄漏禀晓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一坝锰、第九天 我趴在偏房一處隱蔽的房頂上張望粹懒。 院中可真熱鬧,春花似錦顷级、人聲如沸凫乖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拣凹。三九已至,卻和暖如春恨豁,著一層夾襖步出監(jiān)牢的瞬間嚣镜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工橘蜜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菊匿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓计福,卻偏偏與公主長得像跌捆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子象颖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353