List of all functions:
Resolution: 8K
Unity 2022.3.11
RTX 2070 + Windows 10
Test shader:
Shader "Performance"
{
SubShader
{
Pass
{
HLSLPROGRAM
#include "UnityCG.cginc"
sampler2D _MainTex;
#pragma vertex VSMain
float4 VSMain (float3 vertex : POSITION) : SV_Position
{
return UnityObjectToClipPos(vertex);
}
#pragma fragment PSMain
float4 PSMain (float4 vertex : SV_POSITION) : SV_Target
{
float r = 0;
for (float i = 0.0; i < 10000.0; i++) r = r + abs(i);
return float4(r, 0.0, 0.0, 1.0);
}
ENDHLSL
}
}
}
Replace line 21 with selected function:
abort(); for (float i = 0.0; i < 10000.0; i++) r = r + asin(i);
for (float i = 0.0; i < 10000.0; i++) r = r + abs(i);
for (float i = 0.0; i < 10000.0; i++) r = r + acos(i);
for (int i = 0; i < 10000; i++) r = r + asfloat(i);
for (float i = 0.0; i < 10000.0; i++) r = r + atan(i);
for (float i = 0.0; i < 10000.0; i++) r = r + ceil(i);
for (float i = 0.0; i < 10000.0; i++) r = r + cos(i);
for (float i = 0.0; i < 10000.0; i++) r = r + cosh(i);
for (float i = 0.0; i < 10000.0; i++) r = r + ddx(i);
for (float i = 0.0; i < 10000.0; i++) r = r + degrees(i);
discard; for (float i = 0.0; i < 10000.0; i++) r = r + asin(i);
for (float i = 0.0; i < 10000.0; i++) r = r + fmod(i, 123.456);
for (float i = 0.0; i < 10000.0; i++) r = r + log(i);
for (float i = 0.0; i < 10000.0; i++) r = r + mul(unity_ObjectToWorld, vertex).r;
for (float i = 0.0; i < 10000.0; i++) r = r + normalize(i);
for (float i = 0.0; i < 10000.0; i++) r = r + normalize(vertex);
for (float i = 0.0; i < 10000.0; i++) r = r + rsqrt(i);
for (float i = 0.0; i < 10000.0; i++) r = r + sign(i);
for (float i = 0.0; i < 10000.0; i++) r = r + tan(i);
for (float i = 0.0; i < 10000.0; i++) r = r + tex2D(_MainTex, vertex.xy);
Results → numbers = FPS, higher is better;
The most demanding HLSL functions are inverse trigonometric functions: asin, acos, atan