diff --git a/src/app/src/components/landing/BrowserCheck.tsx b/src/app/src/components/landing/BrowserCheck.tsx index 49d9103c..ab2ce85b 100644 --- a/src/app/src/components/landing/BrowserCheck.tsx +++ b/src/app/src/components/landing/BrowserCheck.tsx @@ -1,3 +1,4 @@ +import { emitEvent } from "@/lib/plausible"; import { Alert } from "antd"; import { useEffect, useState } from "react"; @@ -6,9 +7,18 @@ export const BrowserCheck: React.FC<{}> = () => { useEffect(() => { const gl = document.createElement("canvas").getContext("webgl2"); + const requiredSize = 8192; + const maxTextureSize = gl ? gl.getParameter(gl.MAX_TEXTURE_SIZE) : 0; if (!gl) { setWarnings((x) => [...x, "WebGL2 not available"]); + } else if (maxTextureSize < requiredSize) { + setWarnings((x) => [ + ...x, + `WebGL2 max texture size (${maxTextureSize}) is smaller than required (${requiredSize})`, + ]); } + + emitEvent({ kind: "webgl", maxTextureSize }); }, []); useEffect(() => { diff --git a/src/app/src/features/eu4/SavePage.tsx b/src/app/src/features/eu4/SavePage.tsx index a8346166..0427fd9d 100644 --- a/src/app/src/features/eu4/SavePage.tsx +++ b/src/app/src/features/eu4/SavePage.tsx @@ -4,6 +4,7 @@ import { useSelector } from "react-redux"; import { Alert } from "antd"; import { AppHeader } from "@/components/layout/AppHeader"; import { AppLoading } from "@/components/AppLoading"; +import { BrowserCheck } from "@/components/landing/BrowserCheck"; interface SaveProps { saveId: string; @@ -19,6 +20,7 @@ export const SavePage: React.FC = ({ saveId }) => { return ( <> + {engineError && ( <> diff --git a/src/app/src/features/skanderbeg/SkanderbegSavePage.tsx b/src/app/src/features/skanderbeg/SkanderbegSavePage.tsx index 467aaece..2b85ba4b 100644 --- a/src/app/src/features/skanderbeg/SkanderbegSavePage.tsx +++ b/src/app/src/features/skanderbeg/SkanderbegSavePage.tsx @@ -4,6 +4,7 @@ import { useSelector } from "react-redux"; import { Alert } from "antd"; import { AppHeader } from "@/components/layout/AppHeader"; import { AppLoading } from "@/components/AppLoading"; +import { BrowserCheck } from "@/components/landing/BrowserCheck"; interface SkanRoute { skanId: string; @@ -19,6 +20,7 @@ export const SkanderbegSavePage: React.FC = ({ skanId }) => { return ( <> + {engineError && ( <> diff --git a/src/app/src/lib/plausible.ts b/src/app/src/lib/plausible.ts index 5377900c..65bffd2d 100644 --- a/src/app/src/lib/plausible.ts +++ b/src/app/src/lib/plausible.ts @@ -31,6 +31,10 @@ export type Event = | { kind: "download"; game: DetectedDataType; + } + | { + kind: "webgl"; + maxTextureSize: number; }; export function emitEvent(event: Event) {