assets: original KB-RPCS3 branding and release artwork
Add the KB-RPCS3 visual identity built on the original stylised numeral-3 mark: a transparent logo, a square app icon, a wide README banner, a 2:1 GitHub social-preview image and release artwork. The SVGs are the editable source of truth; render.py reproduces every PNG. None of the artwork derives from Sony, PlayStation or upstream RPCS3 branding.
No files matched your search
@@ -0,0 +1,51 @@
|
||||
# KB-RPCS3 visual identity
|
||||
|
||||
Original artwork for KB-RPCS3. None of it is derived from Sony or PlayStation
|
||||
branding, and none of it is upstream RPCS3 artwork.
|
||||
|
||||
The mark is an original stylised numeral **3**: two right-facing bowls joined by a
|
||||
short middle stroke, drawn from primitives in `kb-rpcs3-mark.svg` and
|
||||
`port/make-kb-icon.py` (the console title icon).
|
||||
|
||||
## Files
|
||||
|
||||
| File | Use | Size |
|
||||
|---|---|---|
|
||||
| `kb-rpcs3-mark.svg` / `.png` | the numeral-3 mark on its own, transparent | 1024×1024 |
|
||||
| `kb-rpcs3-app-icon.svg` / `.png` | square app/tile icon with wordmark and version | 1024×1024 |
|
||||
| `kb-rpcs3-banner.svg` / `.png` | wide README banner | 1600×500 |
|
||||
| `kb-rpcs3-social-preview.svg` / `.png` | GitHub social-preview image (2:1) | 1280×640 |
|
||||
| `kb-rpcs3-release.svg` / `.png` | release artwork | 1280×640 |
|
||||
|
||||
The `.svg` files are the editable source of truth. Regenerate every PNG with:
|
||||
|
||||
```sh
|
||||
python3 -m venv .venv
|
||||
.venv/bin/pip install cairosvg Pillow
|
||||
.venv/bin/python assets/branding/render.py
|
||||
```
|
||||
|
||||
## Palette
|
||||
|
||||
| Role | Hex |
|
||||
|---|---|
|
||||
| Ink (background gradient) | `#0B111C` → `#18284C` |
|
||||
| Cyan (mark, accents) | `#00D6E8` / `#00A8CF` |
|
||||
| Border cyan | `#00BED6` |
|
||||
| Foreground | `#E8F6FF` |
|
||||
| Muted text | `#96CDDC` / `#9DBECE` / `#6E93A3` |
|
||||
|
||||
## Type
|
||||
|
||||
Bold sans for the wordmark and headings, regular sans for support text. The SVGs
|
||||
name `Arial, Helvetica, sans-serif` so they render consistently anywhere a
|
||||
Helvetica-metric font is available.
|
||||
|
||||
## Usage
|
||||
|
||||
- Keep the mark cyan-on-dark or cyan-on-transparent; do not place it on a light
|
||||
background without a dark plate.
|
||||
- Do not add a Sony, PlayStation or RPCS3 logo to the artwork, and do not imply
|
||||
endorsement by either.
|
||||
- Keep the wordmark "KB-RPCS3" as one word with hyphens; the product name is never
|
||||
spelled "KB RPCS3" or "KBRPCS3".
|
||||
|
After Width: | Height: | Size: 66 KiB |
@@ -0,0 +1,25 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="KB-RPCS3 app icon">
|
||||
<!-- KB-RPCS3 original app icon: dark gradient tile, cyan border, stylised 3, wordmark. -->
|
||||
<defs>
|
||||
<linearGradient id="tileBg" x1="0" y1="0" x2="0.35" y2="1">
|
||||
<stop offset="0" stop-color="#0E1620"/>
|
||||
<stop offset="1" stop-color="#18284C"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="tileMark" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#5BEDF7"/>
|
||||
<stop offset="1" stop-color="#00A8CF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1024" height="1024" fill="url(#tileBg)"/>
|
||||
<rect x="56.32" y="56.32" width="911.36" height="911.36" rx="174.08"
|
||||
fill="none" stroke="#00BED6" stroke-width="18.43"/>
|
||||
<g fill="none" stroke="url(#tileMark)" stroke-width="56.32" transform="translate(0 -122.88)">
|
||||
<path d="M469.76 266.24 A153.6 122.88 0 0 1 469.76 512"/>
|
||||
<path d="M469.76 512 A153.6 122.88 0 0 1 469.76 757.76"/>
|
||||
<path d="M400.64 512 H623.36"/>
|
||||
</g>
|
||||
<text x="512" y="820" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-weight="bold" font-size="112" letter-spacing="1" fill="#E8F6FF">KB-RPCS3</text>
|
||||
<text x="512" y="906" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-size="52" letter-spacing="6" fill="#96CDDC">ALPHA 0.1.0</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 120 KiB |
@@ -0,0 +1,50 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="500" viewBox="0 0 1600 500" role="img" aria-label="KB-RPCS3 banner">
|
||||
<!-- KB-RPCS3 wide README banner. Original artwork. -->
|
||||
<defs>
|
||||
<linearGradient id="banBg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#0B111C"/>
|
||||
<stop offset="0.55" stop-color="#101B30"/>
|
||||
<stop offset="1" stop-color="#16284A"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="banGlow" gradientUnits="userSpaceOnUse" cx="270" cy="250" r="320">
|
||||
<stop offset="0" stop-color="#00D6E8" stop-opacity="0.30"/>
|
||||
<stop offset="1" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="banMark" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#5BEDF7"/>
|
||||
<stop offset="1" stop-color="#00A8CF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="banRule" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
<stop offset="0.5" stop-color="#00D6E8" stop-opacity="0.9"/>
|
||||
<stop offset="1" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect width="1600" height="500" fill="url(#banBg)"/>
|
||||
<rect width="1600" height="500" fill="url(#banGlow)"/>
|
||||
<rect x="0" y="0" width="1600" height="4" fill="url(#banRule)"/>
|
||||
<rect x="0" y="496" width="1600" height="4" fill="url(#banRule)"/>
|
||||
|
||||
<rect x="140" y="120" width="260" height="260" rx="60" fill="#0D1727" fill-opacity="0.72"
|
||||
stroke="#00BED6" stroke-opacity="0.45" stroke-width="3"/>
|
||||
<g fill="none" stroke="url(#banMark)" stroke-width="56.32"
|
||||
transform="translate(270 250) scale(0.34) translate(-497.92 -389.12)">
|
||||
<path d="M469.76 266.24 A153.6 122.88 0 0 1 469.76 512"/>
|
||||
<path d="M469.76 512 A153.6 122.88 0 0 1 469.76 757.76"/>
|
||||
<path d="M400.64 512 H623.36"/>
|
||||
</g>
|
||||
|
||||
<text x="478" y="228" font-family="Arial, Helvetica, sans-serif" font-weight="bold"
|
||||
font-size="118" letter-spacing="1.5" fill="#E8F6FF">KB-RPCS3</text>
|
||||
<text x="482" y="292" font-family="Arial, Helvetica, sans-serif" font-size="40"
|
||||
fill="#9DBECE">Unofficial RPCS3 Port for PlayStation 5</text>
|
||||
|
||||
<rect x="482" y="330" width="510" height="62" rx="31" fill="#00D6E8" fill-opacity="0.10"
|
||||
stroke="#00D6E8" stroke-opacity="0.55" stroke-width="2"/>
|
||||
<text x="737" y="370" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-weight="bold" font-size="26" letter-spacing="2.5" fill="#7FE6F2">ALPHA 0.1.0 · SOURCE RELEASE</text>
|
||||
|
||||
<text x="482" y="446" font-family="Arial, Helvetica, sans-serif" font-size="26"
|
||||
letter-spacing="1" fill="#6E93A3">PPSA99303 · Vulkan / RADV · PS5 homebrew</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,15 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="KB-RPCS3 mark">
|
||||
<!-- KB-RPCS3 original stylised numeral 3. Drawn from primitives; not derived from any
|
||||
Sony or PlayStation logo, nor from the upstream RPCS3 artwork. -->
|
||||
<defs>
|
||||
<linearGradient id="markGrave" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#5BEDF7"/>
|
||||
<stop offset="1" stop-color="#00A8CF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill="none" stroke="url(#markGrave)" stroke-width="56.32">
|
||||
<path d="M469.76 266.24 A153.6 122.88 0 0 1 469.76 512"/>
|
||||
<path d="M469.76 512 A153.6 122.88 0 0 1 469.76 757.76"/>
|
||||
<path d="M400.64 512 H623.36"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 728 B |
|
After Width: | Height: | Size: 137 KiB |
@@ -0,0 +1,49 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640" role="img" aria-label="KB-RPCS3 Alpha 0.1.0 release artwork">
|
||||
<!-- KB-RPCS3 release artwork (1280x640). Original artwork. -->
|
||||
<defs>
|
||||
<linearGradient id="relBg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#0A0F1A"/>
|
||||
<stop offset="0.55" stop-color="#101B30"/>
|
||||
<stop offset="1" stop-color="#182B50"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="relGlow" gradientUnits="userSpaceOnUse" cx="980" cy="200" r="620">
|
||||
<stop offset="0" stop-color="#00D6E8" stop-opacity="0.24"/>
|
||||
<stop offset="1" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="relMark" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#5BEDF7"/>
|
||||
<stop offset="1" stop-color="#00A8CF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="relRule" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#00D6E8" stop-opacity="0.9"/>
|
||||
<stop offset="1" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect width="1280" height="640" fill="url(#relBg)"/>
|
||||
<rect width="1280" height="640" fill="url(#relGlow)"/>
|
||||
<rect x="96" y="140" width="5" height="360" rx="2.5" fill="url(#relRule)"/>
|
||||
|
||||
<text x="140" y="210" font-family="Arial, Helvetica, sans-serif" font-weight="bold"
|
||||
font-size="30" letter-spacing="6" fill="#6E93A3">KB-RPCS3</text>
|
||||
|
||||
<text x="140" y="360" font-family="Arial, Helvetica, sans-serif" font-weight="bold"
|
||||
font-size="120" letter-spacing="1" fill="#E8F6FF">Alpha 0.1.0</text>
|
||||
<text x="143" y="420" font-family="Arial, Helvetica, sans-serif" font-size="40"
|
||||
fill="#9DBECE">First public source release</text>
|
||||
|
||||
<rect x="142" y="462" width="470" height="60" rx="30" fill="#00D6E8" fill-opacity="0.10"
|
||||
stroke="#00D6E8" stroke-opacity="0.55" stroke-width="2"/>
|
||||
<text x="377" y="501" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-weight="bold" font-size="26" letter-spacing="2.5" fill="#7FE6F2">TAG v0.1.0-alpha · SOURCE</text>
|
||||
|
||||
<text x="143" y="576" font-family="Arial, Helvetica, sans-serif" font-size="26"
|
||||
letter-spacing="1" fill="#6E93A3">Unofficial PS5 port of the RPCS3 PlayStation 3 emulator</text>
|
||||
|
||||
<g fill="none" stroke="url(#relMark)" stroke-width="56.32"
|
||||
transform="translate(1000 300) scale(0.34) translate(-497.92 -389.12)">
|
||||
<path d="M469.76 266.24 A153.6 122.88 0 0 1 469.76 512"/>
|
||||
<path d="M469.76 512 A153.6 122.88 0 0 1 469.76 757.76"/>
|
||||
<path d="M400.64 512 H623.36"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 133 KiB |
@@ -0,0 +1,48 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="640" viewBox="0 0 1280 640" role="img" aria-label="KB-RPCS3">
|
||||
<!-- KB-RPCS3 GitHub social preview (1280x640). Original artwork. -->
|
||||
<defs>
|
||||
<linearGradient id="spBg" x1="0" y1="0" x2="0.6" y2="1">
|
||||
<stop offset="0" stop-color="#0A0F1A"/>
|
||||
<stop offset="0.6" stop-color="#101B30"/>
|
||||
<stop offset="1" stop-color="#17284A"/>
|
||||
</linearGradient>
|
||||
<radialGradient id="spGlow" gradientUnits="userSpaceOnUse" cx="640" cy="150" r="520">
|
||||
<stop offset="0" stop-color="#00D6E8" stop-opacity="0.22"/>
|
||||
<stop offset="1" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="spMark" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stop-color="#5BEDF7"/>
|
||||
<stop offset="1" stop-color="#00A8CF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="spRule" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
<stop offset="0.5" stop-color="#00D6E8" stop-opacity="0.85"/>
|
||||
<stop offset="1" stop-color="#00D6E8" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<rect width="1280" height="640" fill="url(#spBg)"/>
|
||||
<rect width="1280" height="640" fill="url(#spGlow)"/>
|
||||
<rect x="0" y="0" width="1280" height="5" fill="url(#spRule)"/>
|
||||
<rect x="0" y="635" width="1280" height="5" fill="url(#spRule)"/>
|
||||
|
||||
<g fill="none" stroke="url(#spMark)" stroke-width="56.32"
|
||||
transform="translate(640 196) scale(0.30) translate(-497.92 -389.12)">
|
||||
<path d="M469.76 266.24 A153.6 122.88 0 0 1 469.76 512"/>
|
||||
<path d="M469.76 512 A153.6 122.88 0 0 1 469.76 757.76"/>
|
||||
<path d="M400.64 512 H623.36"/>
|
||||
</g>
|
||||
|
||||
<text x="640" y="412" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-weight="bold" font-size="128" letter-spacing="2" fill="#E8F6FF">KB-RPCS3</text>
|
||||
<text x="640" y="474" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-size="40" fill="#9DBECE">Unofficial RPCS3 Port for PlayStation 5</text>
|
||||
|
||||
<rect x="400" y="500" width="480" height="58" rx="29" fill="#00D6E8" fill-opacity="0.10"
|
||||
stroke="#00D6E8" stroke-opacity="0.55" stroke-width="2"/>
|
||||
<text x="640" y="538" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-weight="bold" font-size="25" letter-spacing="2.5" fill="#7FE6F2">ALPHA 0.1.0 · SOURCE RELEASE</text>
|
||||
|
||||
<text x="640" y="602" text-anchor="middle" font-family="Arial, Helvetica, sans-serif"
|
||||
font-size="26" letter-spacing="1" fill="#6E93A3">github.com/kamb205/KB-RPCS3</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
"""Render the KB-RPCS3 branding SVGs to PNG.
|
||||
|
||||
The SVG files in this folder are the editable source of truth. This script only
|
||||
rasterises them, so a change to a source file plus a re-run reproduces every PNG
|
||||
deterministically.
|
||||
|
||||
python3 -m venv .venv && .venv/bin/pip install cairosvg Pillow
|
||||
.venv/bin/python assets/branding/render.py
|
||||
|
||||
Requires cairosvg (and, for PNG optimisation, Pillow).
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
try:
|
||||
import cairosvg
|
||||
except ImportError: # pragma: no cover
|
||||
sys.exit("cairosvg is required: pip install cairosvg")
|
||||
|
||||
HERE = Path(__file__).resolve().parent
|
||||
|
||||
# source SVG -> (output PNG, width, height)
|
||||
TARGETS = {
|
||||
"kb-rpcs3-mark.svg": ("kb-rpcs3-mark.png", 1024, 1024),
|
||||
"kb-rpcs3-app-icon.svg": ("kb-rpcs3-app-icon.png", 1024, 1024),
|
||||
"kb-rpcs3-banner.svg": ("kb-rpcs3-banner.png", 1600, 500),
|
||||
"kb-rpcs3-social-preview.svg": ("kb-rpcs3-social-preview.png", 1280, 640),
|
||||
"kb-rpcs3-release.svg": ("kb-rpcs3-release.png", 1280, 640),
|
||||
}
|
||||
|
||||
|
||||
def optimise(path: Path) -> None:
|
||||
"""Re-save as an optimised, flattened PNG (branding art has no transparency)."""
|
||||
try:
|
||||
from PIL import Image
|
||||
except ImportError:
|
||||
return
|
||||
with Image.open(path) as im:
|
||||
im.convert("RGB").save(path, format="PNG", optimize=True)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
for svg_name, (png_name, width, height) in TARGETS.items():
|
||||
src = HERE / svg_name
|
||||
if not src.exists():
|
||||
sys.exit(f"missing source: {src}")
|
||||
dst = HERE / png_name
|
||||
cairosvg.svg2png(
|
||||
url=str(src), write_to=str(dst), output_width=width, output_height=height
|
||||
)
|
||||
optimise(dst)
|
||||
print(f"{svg_name} -> {png_name} ({width}x{height}, {dst.stat().st_size:,} bytes)")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||