diff --git a/LANGUAGES.md b/LANGUAGES.md
index 99c1c480..eaea60a0 100644
--- a/LANGUAGES.md
+++ b/LANGUAGES.md
@@ -181,6 +181,7 @@ MATLAB (m)
Max (maxpat)
MDX (mdx)
Meson (meson.build,meson_options.txt)
+Metal (metal)
Modula3 (m3,mg,ig,i3)
Module-Definition (def)
Monkey C (mc)
diff --git a/SCC-OUTPUT-REPORT.html b/SCC-OUTPUT-REPORT.html
index e50ae31e..d0edab02 100644
--- a/SCC-OUTPUT-REPORT.html
+++ b/SCC-OUTPUT-REPORT.html
@@ -18,7 +18,7 @@
447 |
7674 |
1413 |
- 255540 |
+ 255608 |
4127 |
processor/workers_test.go |
@@ -130,16 +130,6 @@
37 |
4585 |
97 |
-
- processor/structs.go |
- |
- 199 |
- 21 |
- 18 |
- 160 |
- 17 |
- 5883 |
- 139 |
cmd/badges/main_test.go |
|
@@ -150,6 +140,16 @@
10 |
4088 |
106 |
+
+ processor/structs.go |
+ |
+ 199 |
+ 21 |
+ 18 |
+ 160 |
+ 17 |
+ 5883 |
+ 139 |
processor/workers_regression_test.go |
|
@@ -240,16 +240,6 @@
0 |
2209 |
35 |
-
- processor/cocomo_test.go |
- |
- 37 |
- 8 |
- 4 |
- 25 |
- 6 |
- 686 |
- 23 |
processor/bloom.go |
|
@@ -260,6 +250,16 @@
2 |
1062 |
29 |
+
+ processor/cocomo_test.go |
+ |
+ 37 |
+ 8 |
+ 4 |
+ 25 |
+ 6 |
+ 686 |
+ 23 |
processor/helpers_test.go |
|
@@ -288,7 +288,7 @@
1 |
4 |
0 |
- 22967 |
+ 23035 |
6 |
@@ -299,7 +299,7 @@
447 |
7674 |
1413 |
- 255540 |
+ 255608 |
4127 |
diff --git a/examples/language/metal.metal b/examples/language/metal.metal
new file mode 100644
index 00000000..43629f91
--- /dev/null
+++ b/examples/language/metal.metal
@@ -0,0 +1,401 @@
+/*
+
+ Copyright (C) 2016 Apple Inc. All Rights Reserved.
+
+ See LICENSE.txt for this sample’s licensing information
+
+
+
+ Abstract:
+
+ A shader using random noise to create a wood texture for the Metal Shader Showcase. This is an example of a 3D procedural texture based shader. The wood texture is accomplished by making rings of two different colors and using perlin noise to add some variation to the rings.
+
+ */
+
+
+
+#include
+
+#include
+
+#include
+
+#include "AAPLSharedTypes.h"
+
+
+
+using namespace metal;
+
+
+
+
+
+struct ColorInOut {
+
+ float4 position [[position]];
+
+ float3 normal_cameraspace;
+
+ float3 eye_direction_cameraspace;
+
+ float3 light_direction_cameraspace;
+
+ float3 position_modelspace;
+
+ float3 position_cameraspace;
+
+};
+
+
+
+float rand(int x, int y, int z);
+
+float smoothNoise(float x, float y, float z);
+
+float noise3D(float unscaledX, float unscaledY, float unscaledZ);
+
+float3 woodColor(float3 position);
+
+
+
+// Global constants
+
+constant float3 light_position = float3(-1.0, 1.0, -1.0);
+
+constant float4 light_color = float4(1.0, 1.0, 1.0, 1.0);
+
+constant float teapotMin = -0.144000;
+
+constant float teapotMax = 0.164622;
+
+constant float scaleLength = teapotMax - teapotMin;
+
+constant uint NOISE_DIM = 512;
+
+constant float NOISE_SIZE = 64;
+
+constant float3 darkBrown = float3(0.234f, 0.125f, 0.109f);
+
+constant float3 lightBrown = float3(0.168f, 0.133f, 0.043f);
+
+constant float numberOfRings = 84.0;
+
+constant float turbulence = 0.015;
+
+constant float PI = 3.14159;
+
+constant float materialShine = 50.0;
+
+
+
+
+
+// Generate a random float in the range [0.0f, 1.0f] using x, y, and z (based on the xor128 algorithm)
+
+float rand(int x, int y, int z)
+
+{
+
+ int seed = x + y * 57 + z * 241;
+
+ seed= (seed<< 13) ^ seed;
+
+ return (( 1.0 - ( (seed * (seed * seed * 15731 + 789221) + 1376312589) & 2147483647) / 1073741824.0f) + 1.0f) / 2.0f;
+
+}
+
+
+
+// Return the interpolated noise for the given x, y, and z values. This is done by finding the whole
+
+// number before and after the given position in each dimension. Using these values we can get 6 vertices
+
+// that represent a cube that surrounds the position. We get each of the vertices noise values, and using the
+
+// given position, interpolate between the noise values of the vertices to get the smooth noise.
+
+float smoothNoise(float x, float y, float z)
+
+{
+
+ // Get the truncated x, y, and z values
+
+ int intX = x;
+
+ int intY = y;
+
+ int intZ = z;
+
+
+
+ // Get the fractional reaminder of x, y, and z
+
+ float fractX = x - intX;
+
+ float fractY = y - intY;
+
+ float fractZ = z - intZ;
+
+
+
+ // Get first whole number before
+
+ int x1 = (intX + NOISE_DIM) % NOISE_DIM;
+
+ int y1 = (intY + NOISE_DIM) % NOISE_DIM;
+
+ int z1 = (intZ + NOISE_DIM) % NOISE_DIM;
+
+
+
+ // Get the number after
+
+ int x2 = (x1 + NOISE_DIM - 1) % NOISE_DIM;
+
+ int y2 = (y1 + NOISE_DIM - 1) % NOISE_DIM;
+
+ int z2 = (z1 + NOISE_DIM - 1) % NOISE_DIM;
+
+
+
+ // Tri-linearly interpolate the noise
+
+ float sumY1Z1 = mix(rand(x2,y1,z1), rand(x1,y1,z1), fractX);
+
+ float sumY1Z2 = mix(rand(x2,y1,z2), rand(x1,y1,z2), fractX);
+
+ float sumY2Z1 = mix(rand(x2,y2,z1), rand(x1,y2,z1), fractX);
+
+ float sumY2Z2 = mix(rand(x2,y2,z2), rand(x1,y2,z2), fractX);
+
+
+
+ float sumZ1 = mix(sumY2Z1, sumY1Z1, fractY);
+
+ float sumZ2 = mix(sumY2Z2, sumY1Z2, fractY);
+
+
+
+ float value = mix(sumZ2, sumZ1, fractZ);
+
+
+
+ return value;
+
+}
+
+
+
+// Generate perlin noise for the given input values. This is done by generating smooth noise at mutiple
+
+// different sizes and adding them together.
+
+float noise3D(float unscaledX, float unscaledY, float unscaledZ)
+
+{
+
+ // Scale the values to force them in the range [0, NOISE_DIM]
+
+ float x = ((unscaledX - teapotMin) / scaleLength) * NOISE_DIM;
+
+ float y = ((unscaledY - teapotMin) / scaleLength) * NOISE_DIM;
+
+ float z = ((unscaledZ - teapotMin) / scaleLength) * NOISE_DIM;
+
+
+
+ float value = 0.0f, size = NOISE_SIZE, div = 0.0;
+
+
+
+ //Add together smooth noise of increasingly smaller size.
+
+ while(size >= 1.0f)
+
+ {
+
+ value += smoothNoise(x / size, y / size, z / size) * size;
+
+ div += size;
+
+ size /= 2.0f;
+
+ }
+
+ value /= div;
+
+
+
+ return value;
+
+}
+
+
+
+// Calculate the wood color given the position
+
+float3 woodColor(float3 position)
+
+{
+
+ float x = position.x, y = position.y, z = position.z;
+
+
+
+ // Get the distance of the point from the y-axis to identify whether it will be a ring or not.
+
+ // Get the smooth value for that point to add some randomness to the rings and scale the
+
+ // randomness by a factor called turbulence. Use the cosine function to make the rings and
+
+ // interpolate between the two wood ring colors.
+
+ float distanceValue = sqrt(x*x + z*z) + turbulence * noise3D(x, y, z);
+
+ float cosineValue = fabs(cos(2.0f * numberOfRings * distanceValue * PI));
+
+
+
+ float3 finalColor = darkBrown + cosineValue * lightBrown;
+
+ return finalColor;
+
+}
+
+
+
+// Wood vertex shader function
+
+vertex ColorInOut wood_vertex(device packed_float3* vertices [[ buffer(0) ]],
+
+ device packed_float3* normals [[ buffer(1) ]],
+
+ constant AAPL::uniforms_t& uniforms [[ buffer(2) ]],
+
+ unsigned int vid [[ vertex_id ]])
+
+{
+
+ ColorInOut out;
+
+
+
+ float4x4 model_matrix = uniforms.model_matrix;
+
+ float4x4 view_matrix = uniforms.view_matrix;
+
+ float4x4 projection_matrix = uniforms.projection_matrix;
+
+ float4x4 mvp_matrix = projection_matrix * view_matrix * model_matrix;
+
+ float4x4 model_view_matrix = view_matrix * model_matrix;
+
+
+
+ // Calculate the position of the object from the perspective of the camera
+
+ float4 vertex_position_modelspace = float4(float3(vertices[vid]), 1.0f);
+
+ out.position = mvp_matrix * vertex_position_modelspace;
+
+ out.position_modelspace = vertices[vid];
+
+
+
+ // Calculate the normal from the perspective of the camera
+
+ float3 normal = normals[vid];
+
+ out.normal_cameraspace = (normalize(model_view_matrix * float4(normal, 0.0f))).xyz;
+
+
+
+ // Calculate the view vector from the perspective of the camera
+
+ float3 vertex_position_cameraspace = ( view_matrix * model_matrix * vertex_position_modelspace ).xyz;
+
+ out.eye_direction_cameraspace = float3(0.0f,0.0f,0.0f) - vertex_position_cameraspace;
+
+
+
+ // Calculate the direction of the light from the position of the camera
+
+ float3 light_position_cameraspace = ( view_matrix * float4(light_position,1.0f)).xyz;
+
+ out.light_direction_cameraspace = light_position_cameraspace + out.eye_direction_cameraspace;
+
+
+
+ return out;
+
+}
+
+
+
+// Wood fragment shader function
+
+fragment half4 wood_fragment(ColorInOut in [[stage_in]])
+
+{
+
+ half4 color(1.0f);
+
+
+
+ // Get the woods base color using the woodColor function
+
+ float3 baseColor = woodColor(in.position_modelspace);
+
+
+
+ // Generate material ambient, difuse, and specular colors derived from the base color of the wood
+
+ float3 material_ambient_color = 0.5f * baseColor;
+
+ float3 material_diffuse_color = baseColor;
+
+ float3 material_specular_color = float3(0.4f);
+
+
+
+ // Calculate the ambient color
+
+ float3 ambient_component = material_ambient_color;
+
+
+
+ // Calculate the diffuse color
+
+ float3 n = normalize(in.normal_cameraspace);
+
+ float3 l = normalize(in.light_direction_cameraspace);
+
+ float n_dot_l = saturate( dot(n, l) );
+
+
+
+ float3 diffuse_component = light_color.xyz * n_dot_l * material_diffuse_color;
+
+
+
+ // Calculate the specular color
+
+ float3 e = normalize(in.eye_direction_cameraspace);
+
+ float3 r = -l + 2.0f * n_dot_l * n;
+
+ float e_dot_r = saturate( dot(e, r) );
+
+ float3 specular_component = material_specular_color * light_color.xyz * pow(e_dot_r, materialShine);
+
+
+
+ // Combine the ambient, specular and diffuse colors to get the final color
+
+ color.rgb = half3(ambient_component + diffuse_component + specular_component);
+
+
+
+ return color;
+
+};
\ No newline at end of file
diff --git a/languages.json b/languages.json
index 0808af9f..5806cc8b 100644
--- a/languages.json
+++ b/languages.json
@@ -3982,6 +3982,33 @@
"multi_line": [],
"quotes": []
},
+ "Metal": {
+ "complexitychecks": [
+ "for ",
+ "for(",
+ "if ",
+ "if(",
+ "switch ",
+ "switch(",
+ "while ",
+ "while(",
+ "else ",
+ "|| ",
+ "&& ",
+ "!= ",
+ "== "
+ ],
+ "extensions": ["metal"],
+ "line_comment": ["//"],
+ "multi_line": [["/*", "*/"]],
+ "quotes": [
+ {
+ "end": "\"",
+ "start": "\""
+ }
+ ]
+ },
+
"Meson": {
"complexitychecks": [
"foreach ",
diff --git a/processor/constants.go b/processor/constants.go
index 37ac1170..b9cd3115 100644
--- a/processor/constants.go
+++ b/processor/constants.go
@@ -2,5 +2,5 @@
package processor
const (
- languages = `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`
+ languages = `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`
)
diff --git a/test-all.sh b/test-all.sh
index dadbeb64..2c0befba 100755
--- a/test-all.sh
+++ b/test-all.sh
@@ -971,6 +971,7 @@ specificLanguages=(
'LLVM IR '
'Luna '
'Makefile '
+ 'Metal '
'Monkey C '
'Moonbit '
'Nushell '