-
{yearData.year}
+
+ {yearData.url ? (
+
+ {yearData.title}
+
+ ) : (
+ yearData.title
+ )}
+
diff --git a/app/data/aboutContent.ts b/app/data/aboutContent.ts
new file mode 100644
index 0000000..150793a
--- /dev/null
+++ b/app/data/aboutContent.ts
@@ -0,0 +1,14 @@
+/**
+ * Main About section content
+ * Single source of truth for About page and AboutSection component
+ */
+
+export const aboutParagraphs = [
+ "DevSH Graphics Programming Sp. z O.O is a specialized collective of graphics engineers and mathematicians focused entirely on GPU architecture, rendering, and High-Performance Computing. We are not a traditional software house. We don't build CRUD apps, and we don't do repetitive contract work. Instead, our consultants integrate directly alongside our clients' engineering teams to architect renderers, simulations, and compilers at the frontier of what hardware can do.",
+
+ "DevSH has been a remote-first company since its inception, while building unparalleled credibility amongst GPU engineers thanks to how we innovate on every project, resulting in a constant backlog of applications to our company even when it involves a pay cut. We capture top-tier engineering talent, including PhDs, ex-IHV driver developers, and AAA rendering architects, who wouldn't even consider applying for a FAANG/MANGO job posting if it required relocation. Becoming our client lets you tap this pool of otherwise unreachable talent, sending a signal to everyone else that real engineering gets done at your company.",
+
+ "We invest heavily in our own R&D and Open Source middleware, most notably Nabla, our rapid prototyping framework designed to deliver a CUDA-like programming experience within the Vulkan ecosystem. By committing to open-source infrastructure, we eliminate boilerplate and ensure we never have to solve the same foundational problems twice.",
+
+ "Because we hire the absolute best wherever they live, our globally distributed team maintains regular working hours that overlap all the way from San Francisco to Sydney. We train and work with the elite. Our alumni have gone on to drive the industry forward at Intel, ARM, and Apple as core driver and dev-tech engineers, as well as architecting engines for AAA games."
+];
diff --git a/app/data/vulkanised.json b/app/data/vulkanised.json
index f0dffd7..5d6a855 100644
--- a/app/data/vulkanised.json
+++ b/app/data/vulkanised.json
@@ -1,15 +1,23 @@
[
{
- "year": 2026,
+ "title": "Shading Languages Symposium 2026",
+ "url": "https://www.khronos.org/events/shading-languages-symposium-2026",
"videos": [
"L-oRcQ1NU58",
- "u-6HDxKRgiI",
+ "u-6HDxKRgiI"
+ ]
+ },
+ {
+ "title": "Vulkanised 2026",
+ "url": null,
+ "videos": [
"H39hUNiweYg",
"0hvLRsPFAbQ"
]
},
{
- "year": 2024,
+ "title": "Vulkanised 2024",
+ "url": null,
"videos": [
"Ol_sHFVXvC0",
"M-IMQT7yKVI",
@@ -17,7 +25,8 @@
]
},
{
- "year": 2023,
+ "title": "Vulkanised 2023",
+ "url": null,
"videos": [
"JGiKTy_Csv8",
"x8v656d3pc4",
diff --git a/app/globals.css b/app/globals.css
index cc6076e..24b7264 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -5,30 +5,48 @@
:root {
--background: #000000;
--foreground: #ffffff;
- --list-check: url(/list/check.svg)
+ --list-check: url(/list/check.svg);
+ --brand-deep: #1c3a3b;
+ --brand-deep-soft: #20484a;
+ --brand-accent: #55b5a6;
+ --brand-accent-bright: #7dcdb9;
+ --brand-accent-glow: rgba(85, 181, 166, 0.35);
+ --surface: #071111;
+ --surface-soft: #0b1919;
+ --line-soft: rgba(255, 255, 255, 0.09);
+}
+
+* {
+ box-sizing: border-box;
+}
+
+html {
+ scroll-behavior: smooth;
+ scroll-padding-top: 4.5rem;
+ overflow-x: clip;
}
body {
color: var(--foreground);
background: var(--background);
font-family: Arial, Helvetica, sans-serif;
- max-height: 100dvh;
+ min-width: 0;
+ overflow-x: clip;
}
::marker {
color: #ffffff;
- width: 16px;
}
@layer base {
h1 {
- @apply text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight my-6
+ @apply text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight my-6 tracking-normal
}
h2 {
- @apply text-3xl sm:text-4xl lg:text-5xl font-semibold leading-snug my-6
+ @apply text-3xl sm:text-4xl lg:text-5xl font-semibold leading-snug my-6 tracking-normal
}
h3 {
- @apply text-2xl sm:text-3xl lg:text-4xl font-medium leading-normal my-4
+ @apply text-2xl sm:text-3xl lg:text-4xl font-medium leading-normal my-4 tracking-normal
}
h4 {
@apply text-xl sm:text-2xl font-medium leading-relaxed my-4
@@ -43,11 +61,108 @@ body {
@apply text-base sm:text-lg leading-relaxed
}
.devsh-link {
- @apply no-underline text-teal-600 hover:text-teal-300 transition-colors duration-300
+ @apply no-underline text-[var(--brand-accent)] hover:text-[var(--brand-accent-bright)] transition-colors duration-300
+ }
+}
+
+@layer components {
+ .site-container {
+ @apply w-full max-w-7xl mx-auto px-5 sm:px-6 lg:px-8;
+ }
+
+ .site-container-narrow {
+ @apply w-full max-w-4xl mx-auto px-5 sm:px-6 lg:px-8;
+ }
+
+ .section-pad {
+ @apply py-14 sm:py-20 lg:py-24;
+ }
+
+ .section-head {
+ @apply mx-auto flex max-w-4xl flex-col items-center gap-3 text-center;
+ }
+
+ .section-heading {
+ @apply !m-0 text-3xl sm:text-4xl lg:text-5xl font-semibold leading-tight text-balance;
+ }
+
+ .section-kicker {
+ @apply !m-0 text-xs sm:text-sm font-semibold uppercase tracking-widest text-[var(--brand-accent-bright)];
+ }
+
+ .section-lede {
+ @apply !m-0 max-w-3xl text-base leading-relaxed text-neutral-300 sm:text-lg;
+ }
+
+ .muted-copy {
+ @apply text-neutral-300 leading-relaxed;
+ }
+
+ .surface-panel {
+ @apply rounded-lg border border-[var(--line-soft)] bg-[var(--surface-soft)];
+ background:
+ linear-gradient(180deg, rgba(13, 31, 31, 0.96), rgba(5, 14, 14, 0.98));
+ }
+
+ .section-band {
+ position: relative;
+ overflow: hidden;
+ border-top: 1px solid var(--line-soft);
+ border-bottom: 1px solid var(--line-soft);
+ background:
+ linear-gradient(180deg, #000 0%, #041010 18%, #0b2424 52%, #020707 100%);
+ }
+
+ .section-band::before {
+ content: "";
+ position: absolute;
+ inset: 0;
+ pointer-events: none;
+ background:
+ linear-gradient(90deg, rgba(125, 205, 185, 0.08), transparent 24%, transparent 76%, rgba(125, 205, 185, 0.06)),
+ repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.024) 0 1px, transparent 1px 5.5rem);
+ opacity: 0.45;
+ }
+
+ .section-band > * {
+ position: relative;
+ }
+
+ .brand-hover {
+ transition:
+ border-color 300ms ease,
+ box-shadow 300ms ease,
+ transform 300ms ease;
+ will-change: transform;
+ }
+
+ .brand-hover:hover {
+ border-color: rgba(125, 205, 185, 0.55);
+ box-shadow: 0 0 2rem var(--brand-accent-glow);
+ transform: translateY(-0.25rem);
+ }
+
+ .brand-button {
+ box-shadow: 0 0 1.1rem rgba(85, 181, 166, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.14);
+ }
+
+ .brand-button:hover {
+ box-shadow: 0 0 1.8rem rgba(85, 181, 166, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.2);
+ }
+
+ .media-hover {
+ @apply transition duration-300;
+ will-change: transform;
+ }
+
+ .media-hover:hover {
+ border-color: rgba(125, 205, 185, 0.5);
+ box-shadow: 0 0 1.75rem rgba(85, 181, 166, 0.22);
+ transform: translateY(-0.15rem);
}
}
.youtube-container {
isolation: isolate;
z-index: 1;
-}
\ No newline at end of file
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index a54f5f6..70c86e0 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,7 +1,6 @@
import type { Metadata, Viewport } from "next";
import localFont from "next/font/local";
import "./globals.css";
-import "@/app/components/Navbar"
import Navbar from "./components/Navbar";
import Footer from "./components/Footer";
@@ -21,6 +20,21 @@ const futuraPT = localFont({
path: './fonts/FuturaPT/FuturaCyrillicBook.woff2',
weight: '300',
style: 'normal'
+ },
+ {
+ path: './fonts/FuturaPT/FuturaCyrillicDemi.woff2',
+ weight: '600',
+ style: 'normal'
+ },
+ {
+ path: './fonts/FuturaPT/FuturaCyrillicBold.woff2',
+ weight: '700',
+ style: 'normal'
+ },
+ {
+ path: './fonts/FuturaPT/FuturaCyrillicExtraBold.woff2',
+ weight: '800',
+ style: 'normal'
}
]
})
@@ -39,9 +53,7 @@ export const metadata: Metadata = {
export const viewport: Viewport = {
width: "device-width",
- initialScale: 1,
- maximumScale: 1,
- userScalable: false
+ initialScale: 1
}
export default function RootLayout({
@@ -52,10 +64,10 @@ export default function RootLayout({
return (
-
+
{children}
diff --git a/app/nabla/page.tsx b/app/nabla/page.tsx
index ac341f1..4f5970d 100644
--- a/app/nabla/page.tsx
+++ b/app/nabla/page.tsx
@@ -7,7 +7,7 @@ import { Paragraph } from "../components/TextUtils"
import Link from "next/link"
import fluidGif from "@/public/nabla/fluid.gif"
-import imguiPng from "@/public/nabla/imgui.png"
+import imguiIntegrationJpg from "@/public/nabla/imguiintegration.jpg"
import rt_screenshotJpg from "@/public/nabla/rt_screenshot.jpg"
import rt_screenshot1Jpg from "@/public/nabla/rt_screenshot1.jpg"
import sdf_function_manipGif from "@/public/nabla/sdf_func_manip.gif"
@@ -18,29 +18,31 @@ import { StaticImport } from "next/dist/shared/lib/get-img-props"
function GridImage({ src, unoptimized }: { src: string | StaticImport, unoptimized?: boolean }) {
return (
-
+
+
+
)
}
export default function Page() {
return (
-
+
-
+
-
- Showcase
-
+
+ Showcase
+
-
+
@@ -49,21 +51,21 @@ export default function Page() {
-
- About
+
+ About
Nabla (previously IrrlichtBaW) started as a fork and renovation of the Irrlicht engine, it has since become the Ship of Theseus. Nabla is Vulkan-only thread agnostic, free of singletons and was redesigned with interoperability and headless rendering, allowing you to use it un-intrusively within other engines and share resources from them.
- Most importantly it bridges C++ and HLSL allowing Single Source Programming and compiling most HLSL both for the CPU Host and GPU Device, giving you a CUDA-like experience with Vulkan. Furthermore it provides header only libraries for HLSL such as; unit tested BxDFs, FFTs, parts of C++ STL and much more!
+ Most importantly it bridges C++ and HLSL allowing Single Source Programming and compiling most HLSL both for the CPU Host and GPU Device, giving you a CUDA-like experience with Vulkan. Furthermore it provides header only libraries for HLSL such as: unit tested BxDFs, FFTs, parts of C++ STL and much more!
It's the perfect choice for building Vulkan middlewares.
-
- Main Features
-
+
+ Main Features
+
Curated List of Vulkan Features and Extensions the Nabla Core Profile
Easy filtering of Vulkan Physical Devices by capabilities
SPIR-V and Vulkan as first class citizens
diff --git a/app/nabla/slide.tsx b/app/nabla/slide.tsx
index 4cdfc62..4ee46fc 100644
--- a/app/nabla/slide.tsx
+++ b/app/nabla/slide.tsx
@@ -14,10 +14,10 @@ export default function Slide({ children, className }: { children?: React.ReactN
ref={ref}
animate={ isInView ? { opacity: 100, x: 0 } : { opacity: 0, x: -100 } }
transition={{ duration: 0.5 }}
- className={`flex flex-col items-center ${className ?? ""}`}
+ className={`flex min-w-0 flex-col items-center ${className ?? ""}`}
>
{children}
)
-}
\ No newline at end of file
+}
diff --git a/app/page.tsx b/app/page.tsx
index 33a8099..017237d 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,22 +1,23 @@
-import VulkanisedGallery from "./components/VulkanisedGallery";
-import { Chapter, DimmedParagraph } from "./components/TextUtils";
-import Link from "next/link";
+import HeroHeader from "./components/HeroHeader";
+import ExpertiseGrid from "./components/ExpertiseGrid";
+import PartnerLogos from "./components/Partners";
+import ProjectsSection from "./components/ProjectsSection";
+import TestimonialsSection from "./components/TestimonialsSection";
+import NablaSection from "./components/NablaSection";
+import EcosystemSection from "./components/EcosystemSection";
+import AboutSection from "./components/AboutSection";
export default function Home() {
return (
-
-
-
-
- DevSH Graphics Programming Sp. z O.O is a company focused on Graphics, GPU and High Performance Computing. Our consultants develop and maintain Renderers, Simulations and Compilers for our Clients, integrated into or working alongside their teams. We are not a Software House, we work very closely and synergize with our Clients' engineers.
- We also conduct our own R&D developing our own Open Source Middleware and Libraries, the most prominent being Nabla, as well as contributing to existing ones.
-
-
- Learn more here →
-
- Check out our Vulkanised videos below
-
- and MINE GameDev video
+
+
+
+
+
+
+
+
+
);
}
diff --git a/app/presentations/page.tsx b/app/presentations/page.tsx
new file mode 100644
index 0000000..90808f0
--- /dev/null
+++ b/app/presentations/page.tsx
@@ -0,0 +1,56 @@
+import { YouTubeEmbed } from "@next/third-parties/google";
+import vulkanisedData from "@/app/data/vulkanised.json";
+
+function VideoGrid({ videos }: { videos: string[] }) {
+ return (
+
+ {videos.map((ytId) => (
+
+ ))}
+
+ );
+}
+
+export default function PresentationsPage() {
+ return (
+
+
+
Our Presentations
+
+ Talks and presentations by DevSH at Vulkanised, SIGGRAPH, GDC, and
+ Khronos workshops, sharing our research with the graphics community.
+
+
+
+
+ {vulkanisedData.map((event) => (
+
+ ))}
+
+
+ );
+}
diff --git a/app/services/page.tsx b/app/services/page.tsx
index 426aa8c..5340835 100644
--- a/app/services/page.tsx
+++ b/app/services/page.tsx
@@ -1,217 +1,140 @@
-import Link from "next/link"
-import Image, { type StaticImageData } from "next/image"
-import { Paragraph, Chapter } from "../components/TextUtils"
-import OptimizedLoopVideo from "../components/OptimizedLoopVideo"
+"use client";
-// baw
-import volumeReconstruct from "@/public/clients/baw/volume_reconstruct.png";
-import baw1 from "@/public/clients/baw/baw1.jpg";
-import baw2 from "@/public/clients/baw/baw2.jpg";
-import baw3 from "@/public/clients/baw/baw3.jpg";
-import baw4 from "@/public/clients/baw/baw4.jpg";
-import baw5 from "@/public/clients/baw/baw5.jpg";
-import baw6 from "@/public/clients/baw/baw6.jpg";
-import baw7 from "@/public/clients/baw/baw7.jpg";
+import { useState } from "react";
+import { Paragraph, Chapter } from "../components/TextUtils";
-// n4ce
-import n4ce_1 from "@/public/clients/apps_in_cadd/n4ce_1.jpg";
+function ContactEmail() {
+ const [isShown, setIsShown] = useState(false);
+ const [copied, setCopied] = useState(false);
+ const email = "newclients@devsh.eu";
-// ditt
-import nablaScreenshot1 from "@/public/nabla_screenshot1.jpg";
-import ditt1 from "@/public/clients/ditt/ditt1.jpg";
-import ditt2 from "@/public/clients/ditt/ditt2.jpg";
-import ditt3 from "@/public/clients/ditt/ditt3.jpg";
-import ditt4 from "@/public/clients/ditt/ditt4.png";
-import ditt5 from "@/public/clients/ditt/ditt5.jpg";
+ const handleCopy = async () => {
+ if (!isShown) {
+ setIsShown(true);
+ return;
+ }
+ try {
+ await navigator.clipboard.writeText(email);
+ setCopied(true);
+ setTimeout(() => setCopied(false), 2000);
+ } catch (err) {
+ console.error("Failed to copy!", err);
+ }
+ };
-// imverse
-import imverse1 from "@/public/clients/imverse/imverse1.webp";
-
-// wild
-import wild1 from "@/public/clients/wild/wild1.jpg";
-import wild2 from "@/public/clients/wild/wild2.jpg";
-import wild3 from "@/public/clients/wild/wild3_v2.jpg";
-import wild4 from "@/public/clients/wild/wild4.jpg";
-import wildGif1 from "@/public/clients/wild/wild_gif1.gif";
-import wildGif2 from "@/public/clients/wild/wild_gif2.gif";
-
-type PastProjectProps =
-{
- company: string,
- companyWebsite?: string,
- images?: StaticImageData[] | string[],
- videos?: string[],
- projects: React.ReactNode[]
-}
-
-function PastProject({company, companyWebsite, images, videos, projects}: PastProjectProps) {
return (
-
-
- For {companyWebsite ?
- {company}
- : <>{company}>
- }
-
-
- {projects.map((project, index) => {project} )}
-
- {(images || videos) &&
-
- {images && images.map((image, index) => {
- const blur = typeof image !== "string" && image.blurDataURL ? "blur" : "empty";
- return (
-
-
-
-
- );
- })}
- {videos && videos.map((video, index) =>
-
-
+
+
+
+
+ {isShown ? (
+
+
{email}
+
+ {copied ? "Copied!" : "Click to Copy"}
- )}
-
- }
+
+ ) : (
+
+ Show Email Address
+
+
+
+
+
+ )}
+
- )
+ );
}
+
+
export default function Page() {
return (
-
-
-
-
- We have worked on several long-term projects for companies such as Build A World Aps., Imverse S.A., S Ditt B.V., and Applications In CADD.
-
-
- Also we have conducted Graphics Performance Appraisals and outsourced R&D for RELEX Solutions and Synera GmbH. Most of our work is in the CAD space, with occasional game development in between.
-
-
- You may find our GitHub profiles within the Khronos adjacent ecosystem, with contributions to Validation Layers, SPIR-V Cross, and over 100 bug reports and test cases for the DirectX Shader Compiler.
-
-
- We are 8 time Vulkanised and 2 time Shading Language Symposium conference speakers in the 2023, 2024 and 2026 years.
-
- For the 2026 edition we were the Platinum Sponsors.
-
-
- Collectively we’re experienced in Vulkan, SPIR-V, OpenGL (ES and WebGL included), DirectX12 and 11, CUDA, OpenCL, WebGPU, and NVN for GPU APIs as well as CMake, Docker, Jenkins, Python, SWIG, .Net7 and WASM, Emscripten, Typescript, CI/CD, Kubernetes, Terraform, AWS, Proxmox and Language Engineering.
-
-
- Finally, many of us have Mathematics Degrees.
-
-
-
-
-
Interactive GPU Path Tracer (OpenCL and OptiX) ingesting existing Mitsuba scenes>,
- <>Maintenance of in-house interior design tool>,
- <>Integration of new Real-Time rendering techniques for rapid previews in the design tool>,
- <>Denoisers (AI, RWMC, etc.) and Image Processing (e.g. FFT Convolution Bloom)>,
- <>Consulting w.r.t. existing Mitsuba render farm>,
- <>Ongoing Vulkan Real-Time Path Tracer development>
- ]}
- />
- Photogrammetry (generating point clouds from drone flythroughs)>,
- <>LiDAR Point Cloud Processing and Volume Reconstruction (3D game worlds from aerial scans)>,
- <>Maintaining and Extending the existing OpenGL engine>,
- <>GLSL Shader Development (ocean simulation, particle simulation)>,
- <>Distributed Networked Fluid Simulation>,
- <>Physics Engine Development (high performance voxel connectivity for destruction)>
- ]}
- />
- Development of a tailor-made, GPU-driven graphics engine for n4ce v5.0 using the Nabla platform>,
- <>Engineered for extremely large point cloud datasets and modern large-scale civil engineering projects>,
- <>Significant performance improvements over the legacy n4ce renderer, designed to remain scalable for the next years>,
- <>Close collaboration to integrate the new renderer seamlessly into the n4ce v5.0 product>,
- <>Design and implementation of a modern build system, including shader preprocessing & embedded SPIR-V tooling>,
- <>Ongoing optimisation and support during the lead-up to the public BETA release>
- ]}
- />
- Solving Vulkan synchronization issues>,
- <>Implementing bindless rendering>,
- <>Work around DXC and Adreno 600 limitations to allow the usage of Buffer Device Address>,
- <>Implementation gpu driven rendering>,
- <>Occlusion culling with a novel algorithm specifically designed for mobile TBDR GPUs (see our Vulkanised 2026 talk)>,
- <>And much more>
- ]}
- />
- GPGPU Consulting and Contracting to solve Computer Vision problems>,
- <>GPU Accelerated Silhouette Carving from RGB+D real-time video inputs>
- ]}
- />
- Investigation of the new .Net 6 WASM and Blazor SDKs (example issues reported to Microsoft)>,
- <>Feasibility studies of TypeScript and C# interoperation and Unified Web & Native Renderer>
- ]}
- />
- Deep performance analysis identifying Rendering bottlenecks on complex scenes>,
- <>Plan of action and initial design for a new Renderer>
- ]}
- />
-
-
-
-
- We provide an unbeatable offering with consultants dedicated to your project while also benefitting
- from heavy 50%+ discounts on co-development and maintenance of Vulkan Utilities used in
- your project similar to those present in the CUDA space such as CUB.
- Finally our Consultants constantly benefit from each other’s experience and insights delivering
- solutions a step above those devisable in solitude, even if a project has a singular Consultant.
-
-
+
+
+
+
+
+ Discuss your project with Us
+
+
+
+
+
+
+
+
+ When you partner with DevSH, you aren't just hiring isolated consultants. You gain the collective expertise of our entire team. Our engineers constantly share insights and experience, ensuring that every solution we deliver is battle-tested and a step above what isolated developers can achieve. Whether you bring on a single dedicated developer or a specialized task force, we constantly share knowledge, research, and invent new algorithms together.
+
+
+
+
+
+ We build long-term technical partnerships, stepping in to solve complex architectural challenges and rendering bottlenecks that require deep, highly specialized focus.
+
+
+ Long-Term R&D & Co-Development: Trusted by industry innovators including Imverse S.A., Ditt B.V., and Applications In CADD to architect and maintain critical rendering infrastructure.
+ Performance Appraisals & Outsourced R&D: Delivered comprehensive graphics performance diagnostics, providing actionable short-term performance wins and long-term architectural roadmaps for RELEX Solutions and Synera GmbH.
+
+
+
+
+
+ We don't just use modern graphics APIs. We help shape the ecosystem. We are active contributors to the graphics programming community.
+
+
+ Open Source Contributions: You can find our GitHub profiles highly active within the Khronos ecosystem. Our direct contributions span the Vulkan and SPIR-V specifications, SPIR-V Tools, Vulkan Validation Layers, CMake, Mesa, and LLVM.
+ Compiler Hardening: We stress-test shader compilers to the absolute extreme, submitting hundreds of bug reports and test cases across the DirectX Shader Compiler, Slang, and the SPIR-V specification.
+ 8-Time Speakers: Vulkanised Conference (2023, 2024, 2026)
+ 2-Time Speakers: Shading Language Symposium
+ Platinum Sponsors: Vulkanised 2026
+
+
+
+
+
+ We utilize a bleeding-edge, highly optimized stack to deliver scalable, cross-platform results.
+
+
+ Graphics & Compute APIs: Vulkan, DirectX 12, DirectX 11, CUDA, OpenCL, WebGPU, OpenGL (including ES & WebGL), NVN, SYCL.
+ Shading & Architecture: SPIR-V, HLSL 202x, Slang, GLSL and WHSL.
+ Build Systems: CMake, Conan, Python, SWIG, MCJIT, ORCJIT, Clang Customizations, LLVM Toolchains.
+ Infrastructure, CI/CD & Tooling: Docker, Jenkins, Kubernetes, Terraform, AWS, Proxmox, vGPUs, virGL, venus, virtIO, QEMU.
+ Delivering Web Experiences: WASM, Emscripten, TypeScript, .NET 7, Venus-Protocol, ChromeOS native APK development.
+ Delivering AR/XR/VR Experiences: OpenXR, HorizonOS development.
+ GPU Driver & Layer Development: Turnip, llvmpipe, virtIO, Venus, virGL, Zink, MoltenVK, KosmicKrisp.
+
+
+
+
+
+ When two or more of our clients use the same FOSS project and wish to extend it with the same features (e.g., SPIR-V Tools or the Nabla HLSL Standard Template Library), we facilitate cost-sharing. This results in massive 30-75% discounts on our billed hourly rates, significantly reducing your development overhead while advancing the core tools your project relies on.
+
+
+
+
- )
+ );
}
diff --git a/eslint.config.mjs b/eslint.config.mjs
index e69eb9b..1a88112 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -10,7 +10,7 @@ const compat = new FlatCompat({
});
const eslintConfig = [{
- ignores: ["node_modules/**", ".next/**", "out/**", "build/**", "next-env.d.ts"]
+ ignores: ["node_modules/**", ".next/**", "out/**", "build/**", "tmp/**", "next-env.d.ts"]
}, ...compat.extends("next/core-web-vitals", "next/typescript"),
{
rules: {
diff --git a/next.config.ts b/next.config.ts
index 193011b..e10861e 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -25,7 +25,11 @@ const nextConfig: NextConfig = {
pathname: '/img/**'
}
]
- }
+ },
+ allowedDevOrigins: [
+ 'localhost',
+ '127.0.0.1'
+ ],
};
export default nextConfig;
diff --git a/package.json b/package.json
index ace514b..f14b455 100644
--- a/package.json
+++ b/package.json
@@ -3,9 +3,9 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "dev": "next dev",
+ "dev": "next dev -p 24631 -H 0.0.0.0",
"build": "next build",
- "start": "next start",
+ "start": "next start -p 24631 -H 0.0.0.0",
"lint": "eslint ."
},
"dependencies": {
diff --git a/public/clients/apps_in_cadd/drawing1.jpg b/public/clients/apps_in_cadd/drawing1.jpg
new file mode 100644
index 0000000..db2ab2e
Binary files /dev/null and b/public/clients/apps_in_cadd/drawing1.jpg differ
diff --git a/public/clients/apps_in_cadd/drawing2.jpg b/public/clients/apps_in_cadd/drawing2.jpg
new file mode 100644
index 0000000..d82f01e
Binary files /dev/null and b/public/clients/apps_in_cadd/drawing2.jpg differ
diff --git a/public/clients/apps_in_cadd/drawing3.jpg b/public/clients/apps_in_cadd/drawing3.jpg
new file mode 100644
index 0000000..7d1521d
Binary files /dev/null and b/public/clients/apps_in_cadd/drawing3.jpg differ
diff --git a/public/clients/apps_in_cadd/offset_curve.gif b/public/clients/apps_in_cadd/offset_curve.gif
new file mode 100644
index 0000000..3c2aa81
Binary files /dev/null and b/public/clients/apps_in_cadd/offset_curve.gif differ
diff --git a/public/clients/apps_in_cadd/scene1.png b/public/clients/apps_in_cadd/scene1.png
new file mode 100644
index 0000000..5e527b2
Binary files /dev/null and b/public/clients/apps_in_cadd/scene1.png differ
diff --git a/public/clients/apps_in_cadd/scene1_cropped.png b/public/clients/apps_in_cadd/scene1_cropped.png
new file mode 100644
index 0000000..5433279
Binary files /dev/null and b/public/clients/apps_in_cadd/scene1_cropped.png differ
diff --git a/public/clients/apps_in_cadd/scene2.png b/public/clients/apps_in_cadd/scene2.png
new file mode 100644
index 0000000..32861df
Binary files /dev/null and b/public/clients/apps_in_cadd/scene2.png differ
diff --git a/public/nabla-glow.svg b/public/nabla-glow.svg
new file mode 100644
index 0000000..9d0898f
--- /dev/null
+++ b/public/nabla-glow.svg
@@ -0,0 +1,17 @@
+
+
+
+
diff --git a/public/nabla/2d_csg.gif b/public/nabla/2d_csg.gif
new file mode 100644
index 0000000..6a8e404
Binary files /dev/null and b/public/nabla/2d_csg.gif differ
diff --git a/public/nabla/Iridescence.png b/public/nabla/Iridescence.png
new file mode 100644
index 0000000..659211e
Binary files /dev/null and b/public/nabla/Iridescence.png differ
diff --git a/public/nabla/fft_bloom_heart.gif b/public/nabla/fft_bloom_heart.gif
new file mode 100644
index 0000000..a3c4cfd
Binary files /dev/null and b/public/nabla/fft_bloom_heart.gif differ
diff --git a/public/nabla/fluid_sim.gif b/public/nabla/fluid_sim.gif
new file mode 100644
index 0000000..3c4ac55
Binary files /dev/null and b/public/nabla/fluid_sim.gif differ
diff --git a/public/nabla/imguiintegration.jpg b/public/nabla/imguiintegration.jpg
new file mode 100644
index 0000000..0b9efa6
Binary files /dev/null and b/public/nabla/imguiintegration.jpg differ
diff --git a/public/nabla/nsc.png b/public/nabla/nsc.png
new file mode 100644
index 0000000..99c63ac
Binary files /dev/null and b/public/nabla/nsc.png differ
diff --git a/public/nabla/rt_screenshot_both.jpg b/public/nabla/rt_screenshot_both.jpg
new file mode 100644
index 0000000..a5c30d9
Binary files /dev/null and b/public/nabla/rt_screenshot_both.jpg differ
diff --git a/public/nabla/stipples.gif b/public/nabla/stipples.gif
new file mode 100644
index 0000000..0674055
Binary files /dev/null and b/public/nabla/stipples.gif differ
diff --git a/public/partners/appscadd.png b/public/partners/appscadd.png
new file mode 100644
index 0000000..30a607b
Binary files /dev/null and b/public/partners/appscadd.png differ
diff --git a/public/partners/ditt.png b/public/partners/ditt.png
new file mode 100644
index 0000000..fccddf5
Binary files /dev/null and b/public/partners/ditt.png differ
diff --git a/public/partners/imverse.png b/public/partners/imverse.png
new file mode 100644
index 0000000..f2c7e1f
Binary files /dev/null and b/public/partners/imverse.png differ
diff --git a/public/partners/relex.png b/public/partners/relex.png
new file mode 100644
index 0000000..e66459f
Binary files /dev/null and b/public/partners/relex.png differ
diff --git a/public/partners/synera.png b/public/partners/synera.png
new file mode 100644
index 0000000..3aedae0
Binary files /dev/null and b/public/partners/synera.png differ
diff --git a/public/partners/wild.jpg b/public/partners/wild.jpg
new file mode 100644
index 0000000..e9d7bc0
Binary files /dev/null and b/public/partners/wild.jpg differ
diff --git a/public/testimonials/phil.jpg b/public/testimonials/phil.jpg
new file mode 100644
index 0000000..16a0ede
Binary files /dev/null and b/public/testimonials/phil.jpg differ
diff --git a/public/testimonials/yoran.jpg b/public/testimonials/yoran.jpg
new file mode 100644
index 0000000..c41300b
Binary files /dev/null and b/public/testimonials/yoran.jpg differ