mirror of
https://github.com/godotengine/issue-stats.git
synced 2026-01-01 01:48:12 +03:00
314 lines
12 KiB
HTML
314 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Godot GitHub issue statistics</title>
|
|
<link rel="stylesheet" href="thirdparty/water.min.css">
|
|
<style>
|
|
body {
|
|
line-height: 1.6;
|
|
}
|
|
|
|
h2 {
|
|
border-top: 0.125rem solid hsla(0, 0%, 50%, 0.4);
|
|
padding-top: 0.5rem;
|
|
}
|
|
</style>
|
|
<script src="thirdparty/frappe-charts.umd.min.js"></script>
|
|
<script src="thirdparty/ky.umd.min.js"></script>
|
|
<script type="module">
|
|
const capitalizeStringRemaps = {
|
|
macos: "macOS",
|
|
ios: "iOS",
|
|
|
|
amd: "AMD",
|
|
intel: "Intel",
|
|
nvidia: "NVIDIA",
|
|
|
|
// CPU x86 features.
|
|
avx512: "AVX-512",
|
|
avx2: "AVX2",
|
|
avx: "AVX",
|
|
"sse4.2": "SSE 4.2",
|
|
|
|
// AMD GPU generations.
|
|
dedicated_rdna3: "Dedi. RDNA3",
|
|
dedicated_rdna2: "Dedi. RDNA2",
|
|
dedicated_rdna1: "Dedi. RDNA1",
|
|
"dedicated_gcn5.0": "Dedi. GCN 5.0",
|
|
"dedicated_gcn4.0": "Dedi. GCN 4.0",
|
|
"dedicated_gcn3.0": "Dedi. GCN 3.0",
|
|
"dedicated_gcn2.0": "Dedi. GCN 2.0",
|
|
"dedicated_gcn1.0": "Dedi. GCN 1.0",
|
|
"dedicated_vliw4": "Dedi. VLIW4",
|
|
integrated_rdna3: "IGP RDNA3",
|
|
integrated_rdna2: "IGP RDNA2",
|
|
"integrated_gcn5.0": "IGP GCN 5.0",
|
|
|
|
unknown: "Other/Unknown",
|
|
};
|
|
|
|
const chartColors = {
|
|
android: "#84CC16",
|
|
ios: "#A855F7",
|
|
linux: "#EAB308",
|
|
macos: "#A8A29E",
|
|
web: "#F97316",
|
|
windows: "#0EA5E9",
|
|
|
|
amd: "#b91c1c",
|
|
intel: "#2074d9",
|
|
nvidia: "#65a30d",
|
|
|
|
// Windows versions.
|
|
7: "#0C4A6E",
|
|
8: "#075985",
|
|
8.1: "#0369A1",
|
|
10: "#0284C7",
|
|
11: "#38BDF8",
|
|
|
|
// macOS versions.
|
|
10.12: "#1C1917",
|
|
10.13: "#292524",
|
|
10.14: "#44403C",
|
|
10.15: "#57534E",
|
|
// 11 is already taken for Windows 11.
|
|
12: "#78716C",
|
|
13: "#A8A29E",
|
|
14: "#D6D3D1",
|
|
|
|
// Linux distributions.
|
|
ubuntu: "#EA580C",
|
|
fedora: "#1E40AF",
|
|
debian: "#BE123C",
|
|
mint: "#65A30D",
|
|
arch: "#0891B2",
|
|
|
|
// Android versions (some are already reserved above).
|
|
5: "#365314",
|
|
6: "#3F6212",
|
|
9: "#84CC16",
|
|
|
|
// iOS versions (some are already reserved above).
|
|
15: "#C026D3",
|
|
16: "#D946EF",
|
|
17: "#E879F9",
|
|
|
|
// Web browsers.
|
|
firefox: "#EA580C",
|
|
chrome: "#65A30D",
|
|
edge: "#0EA5E9",
|
|
safari: "#64748B",
|
|
opera: "#DC2626",
|
|
|
|
// CPU x86 features.
|
|
avx512: "#F9A8D4",
|
|
avx2: "#EC4899",
|
|
avx: "#BE185D",
|
|
"sse4.2": "#831843",
|
|
|
|
// GPU feature support.
|
|
yes: "#84CC16",
|
|
no: "#DC2626",
|
|
|
|
unknown: "#808080",
|
|
|
|
// TODO: Add CPU/GPU generation and VRAM size colors.
|
|
};
|
|
|
|
const ChartDatatype = {
|
|
// Values are a sum of all subvalues.
|
|
AGGREGATE: 0,
|
|
|
|
// Values are reported individually.
|
|
INDIVIDUAL: 1,
|
|
}
|
|
|
|
function getRemappedString(label) {
|
|
// Capitalize string (like_this => Like This) if not found in the remaps table.
|
|
// Replace "Dedicated" and "Integrated" with shorter forms if not using the remaps table (useful for NVIDIA GPUs).
|
|
// Replace " Gb" for VRAM sizes.
|
|
return capitalizeStringRemaps[label] ?? label.replaceAll("_", " ").replace(/\b\w/g, l => l.toUpperCase()).replace("Dedicated", "Dedi.").replace("Integrated", "IGP").replace(" Gb", " GB");
|
|
}
|
|
|
|
function getChartColor(label) {
|
|
return chartColors[label] ?? '#' + (0x1000000 + (Math.random()) * 0xffffff).toString(16).substr(1, 6);
|
|
}
|
|
|
|
// Function that sums all values in an array (use with `reduce()`).
|
|
const sum = (partialSum, value) => partialSum + value;
|
|
|
|
// Creates a Frappe chart (automatically added to the DOM).
|
|
function createChart(id, chartDatatype, dataset) {
|
|
new frappe.Chart(id, {
|
|
data: {
|
|
labels: Object.keys(dataset).map(label => getRemappedString(label)),
|
|
datasets: [{ values: chartDatatype == ChartDatatype.INDIVIDUAL ? Object.values(dataset) : Object.values(dataset).map(subObject => Object.values(subObject).reduce(sum, 0)) }],
|
|
},
|
|
type: "percentage",
|
|
colors: Object.keys(dataset).map(label => getChartColor(label)),
|
|
});
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", async function () {
|
|
const statistics = await ky.get('statistics.json').json();
|
|
|
|
document.getElementById("num-reports").innerText = statistics.num_reports;
|
|
|
|
createChart("#chart-operating-system", ChartDatatype.AGGREGATE, statistics.os);
|
|
createChart("#chart-windows-version", ChartDatatype.INDIVIDUAL, statistics.os.windows);
|
|
createChart("#chart-macos-version", ChartDatatype.INDIVIDUAL, statistics.os.macos);
|
|
createChart("#chart-linux-distribution", ChartDatatype.INDIVIDUAL, statistics.os.linux);
|
|
createChart("#chart-android-version", ChartDatatype.INDIVIDUAL, statistics.os.android);
|
|
createChart("#chart-ios-version", ChartDatatype.INDIVIDUAL, statistics.os.ios);
|
|
createChart("#chart-web-browser", ChartDatatype.INDIVIDUAL, statistics.os.web);
|
|
|
|
createChart("#chart-cpu-vendor", ChartDatatype.AGGREGATE, statistics.cpu);
|
|
createChart("#chart-cpu-amd", ChartDatatype.INDIVIDUAL, statistics.cpu.amd);
|
|
createChart("#chart-cpu-intel", ChartDatatype.INDIVIDUAL, statistics.cpu.intel);
|
|
|
|
createChart("#chart-cpu-core-count", ChartDatatype.INDIVIDUAL, statistics.cpu_core_count);
|
|
createChart("#chart-cpu-x86-features", ChartDatatype.INDIVIDUAL, statistics.cpu_x86_features);
|
|
//createChart("#chart-cpu-passmark-multi", ChartDatatype.INDIVIDUAL, statistics.cpu_passmark_score.multi_thread);
|
|
//createChart("#chart-cpu-passmark-single", ChartDatatype.INDIVIDUAL, statistics.cpu_passmark_score.single_thread);
|
|
|
|
createChart("#chart-gpu-vendor", ChartDatatype.AGGREGATE, statistics.gpu);
|
|
createChart("#chart-gpu-amd", ChartDatatype.INDIVIDUAL, statistics.gpu.amd);
|
|
createChart("#chart-gpu-intel", ChartDatatype.INDIVIDUAL, statistics.gpu.intel);
|
|
createChart("#chart-gpu-nvidia", ChartDatatype.INDIVIDUAL, statistics.gpu.nvidia);
|
|
|
|
createChart("#chart-gpu-vram", ChartDatatype.INDIVIDUAL, statistics.gpu_vram);
|
|
createChart("#chart-gpu-raytracing-dedicated", ChartDatatype.INDIVIDUAL, statistics.gpu_raytracing.dedicated);
|
|
createChart("#chart-gpu-raytracing-integrated", ChartDatatype.INDIVIDUAL, statistics.gpu_raytracing.integrated);
|
|
createChart("#chart-gpu-vrs-dedicated", ChartDatatype.INDIVIDUAL, statistics.gpu_vrs.dedicated);
|
|
createChart("#chart-gpu-vrs-integrated", ChartDatatype.INDIVIDUAL, statistics.gpu_vrs.integrated);
|
|
createChart("#chart-gpu-mesh-shaders-dedicated", ChartDatatype.INDIVIDUAL, statistics.gpu_mesh_shaders.dedicated);
|
|
createChart("#chart-gpu-mesh-shaders-integrated", ChartDatatype.INDIVIDUAL, statistics.gpu_mesh_shaders.integrated);
|
|
//createChart("#chart-gpu-passmark", ChartDatatype.INDIVIDUAL, statistics.gpu_passmark_score);
|
|
});
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<h1>Godot GitHub issue statistics</h1>
|
|
<p>
|
|
This page lists hardware and software information reported by users on the
|
|
<a href="https://github.com/godotengine/godot/issues">issue tracker of the main Godot repository</a>.
|
|
As such, these statistics are <em>not</em> representative of the entire Godot community,
|
|
but they allow seeing what kind of hardware and software is popular among issue reporters.
|
|
</p>
|
|
<p>
|
|
These statistics were compiled from
|
|
<strong><span id="num-reports">----</span></strong> recent user reports.
|
|
</p>
|
|
<p>
|
|
<strong>Note:</strong> The total number of reported hardware/software
|
|
metrics does not add up to this number, as a user may report several
|
|
issues with identical hardware/software configuration.
|
|
</p>
|
|
|
|
<h2>Operating system</h2>
|
|
<div id="chart-operating-system"></div>
|
|
|
|
<h3>Windows version</h3>
|
|
<div id="chart-windows-version"></div>
|
|
|
|
<h3>macOS version</h3>
|
|
<div id="chart-macos-version"></div>
|
|
|
|
<h3>Linux distribution</h3>
|
|
<div id="chart-linux-distribution"></div>
|
|
|
|
<h3>Android version</h3>
|
|
<div id="chart-android-version"></div>
|
|
|
|
<h3>iOS version</h3>
|
|
<div id="chart-ios-version"></div>
|
|
|
|
<h3>Web browser</h3>
|
|
<em>The web browser used when reporting issues related to the web editor or web export.</em>
|
|
<div id="chart-web-browser"></div>
|
|
|
|
<h2>CPU vendor</h2>
|
|
<div id="chart-cpu-vendor"></div>
|
|
|
|
<h3>AMD CPU generation</h3>
|
|
<div id="chart-cpu-amd"></div>
|
|
|
|
<h3>Intel CPU generation</h3>
|
|
<em>Laptop CPUs are currently categorized as "Other/Unknown".</em>
|
|
<div id="chart-cpu-intel"></div>
|
|
|
|
<h2>CPU physical core count</h2>
|
|
<em>For CPUs with hybrid (big.LITTLE) topologies, both "big" cores and "little" cores are summed together.</em>
|
|
<div id="chart-cpu-core-count"></div>
|
|
|
|
<h2>Highest supported x86 CPU instruction set</h2>
|
|
<em>
|
|
Support for a new instruction set implies support for older instruction sets. For instance, supporting AVX-512 implies supporting AVX2, AVX and SSE4.2.<br>
|
|
Godot currently only requires SSE2 for official binaries, which is supported on all x86_64 CPUs.
|
|
</em>
|
|
<div id="chart-cpu-x86-features"></div>
|
|
|
|
<!-- <h2>CPU multi-thread performance score</h2>
|
|
<em>Scores sourced from <a href="https://www.cpubenchmark.net/">PassMark</a>.</em>
|
|
<div id="chart-cpu-passmark-multi"></div>
|
|
|
|
<h2>CPU single-thread performance score</h2>
|
|
<em>Scores sourced from <a href="https://www.cpubenchmark.net/">PassMark</a>.</em>
|
|
<div id="chart-cpu-passmark-single"></div> -->
|
|
|
|
<h2>GPU vendor</h2>
|
|
<div id="chart-gpu-vendor"></div>
|
|
|
|
<h3>AMD GPU generation</h3>
|
|
<div id="chart-gpu-amd"></div>
|
|
|
|
<h3>Intel GPU generation</h3>
|
|
<div id="chart-gpu-intel"></div>
|
|
|
|
<h3>NVIDIA GPU generation</h3>
|
|
<div id="chart-gpu-nvidia"></div>
|
|
|
|
<h2>GPU video memory</h2>
|
|
<em>Only dedicated GPUs are taken into account.</em>
|
|
<div id="chart-gpu-vram"></div>
|
|
|
|
<h2>GPU hardware-accelerated raytracing support</h2>
|
|
<em>
|
|
Raytracing is currently not used in Godot.<br>
|
|
This metric only checks whether it's supported in hardware, not whether the GPU is fast enough for hardware-accelerated raytracing to be viable for gaming.
|
|
</em>
|
|
<h3>Dedicated GPUs</h3>
|
|
<div id="chart-gpu-raytracing-dedicated"></div>
|
|
<h3>Integrated GPUs</h3>
|
|
<div id="chart-gpu-raytracing-integrated"></div>
|
|
|
|
<h2>GPU variable rate shading support</h2>
|
|
<em>Variable rate shading can be optionally used in Godot 4.</em>
|
|
<h3>Dedicated GPUs</h3>
|
|
<div id="chart-gpu-vrs-dedicated"></div>
|
|
<h3>Integrated GPUs</h3>
|
|
<div id="chart-gpu-vrs-integrated"></div>
|
|
|
|
<h2>GPU mesh shaders support</h2>
|
|
<em>Mesh shaders are currently not used in Godot.</em>
|
|
<h3>Dedicated GPUs</h3>
|
|
<div id="chart-gpu-mesh-shaders-dedicated"></div>
|
|
<h3>Integrated GPUs</h3>
|
|
<div id="chart-gpu-mesh-shaders-integrated"></div>
|
|
|
|
<!-- <h2>GPU performance score</h2>
|
|
<em>Scores sourced from <a href="https://www.videocardbenchmark.net/">PassMark</a>.</em>
|
|
<div id="chart-gpu-passmark"></div> -->
|
|
|
|
<footer>
|
|
© 2023-present Hugo Locurcio and contributors<br>
|
|
<a href="https://github.com/godot-issues-stats/godot-issues-stats.github.io">Website source on GitHub</a>
|
|
</footer>
|
|
</body>
|
|
|
|
</html>
|