Compare commits

...

15 Commits

Author SHA1 Message Date
Dean Herbert
044aa0cb86 Merge pull request #370 from nekodex/ssv2-sfx
Add sample for SSv2 group open/close
2025-07-05 01:09:40 +09:00
Jamie Taylor
2d97c42847 Add sample for SSv2 group open/close 2025-07-04 20:35:19 +09:00
Dean Herbert
bc57cc1cb9 Merge pull request #368 from frenzibyte/noto-bopomofo
Add Bopomofo characters
2025-06-25 20:55:06 +09:00
Salman Alshamrani
4203ad0606 Generate assets for Bopomofo characters 2025-06-18 15:18:31 +03:00
Salman Alshamrani
fb7da180ba Add font configuration for Bopomofo characters 2025-06-18 15:17:18 +03:00
Salman Alshamrani
e58d90ffd1 Adjust CJK configurations to actually match generated assets
Font does not contain 100% all glyphs, but it's the closest thus far.
2025-06-18 15:08:31 +03:00
Dan Balasescu
f8898bc75d Add build workflow 2025-06-05 14:58:40 +09:00
Dan Balasescu
7285d9247a Remove appveyor workflows 2025-06-05 14:58:33 +09:00
Dan Balasescu
bc451a4856 Add GHA deploy workflow 2025-06-05 14:44:35 +09:00
Dean Herbert
3c0184059b Merge pull request #367 from minetoblend/feature/ghost-shader
Add animated ghost shader
2025-06-05 13:51:07 +09:00
marvin
94c42a9cc9 Use more descriptive parameter names 2025-06-04 21:45:37 +02:00
marvin
91fe0794f9 Rename falloff_radius to corner_radius 2025-06-04 20:31:09 +02:00
marvin
a20237478c Add highp 2025-06-04 20:30:50 +02:00
marvin
0d23c81b43 Extract strength variable 2025-06-04 20:26:56 +02:00
marvin
21f0e584b6 Add ghost shader 2025-06-04 20:05:57 +02:00
12 changed files with 332 additions and 98 deletions

18
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Build
on: [push, pull_request]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install .NET 8.0.x
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Build
run: dotnet build -c Release osu.Game.Resources

70
.github/workflows/deploy.yml vendored Normal file
View File

@@ -0,0 +1,70 @@
name: Pack and nuget
on:
push:
tags:
- '*'
jobs:
notify_pending_production_deploy:
runs-on: ubuntu-latest
steps:
-
name: Submit pending deployment notification
run: |
export TITLE="Pending osu-resources Production Deployment: $GITHUB_REF_NAME"
export URL="https://github.com/ppy/osu-resources/actions/runs/$GITHUB_RUN_ID"
export DESCRIPTION="Awaiting approval for building NuGet packages for tag $GITHUB_REF_NAME:
[View Workflow Run]($URL)"
export ACTOR_ICON="https://avatars.githubusercontent.com/u/$GITHUB_ACTOR_ID"
BODY="$(jq --null-input '{
"embeds": [
{
"title": env.TITLE,
"color": 15098112,
"description": env.DESCRIPTION,
"url": env.URL,
"author": {
"name": env.GITHUB_ACTOR,
"icon_url": env.ACTOR_ICON
}
}
]
}')"
curl \
-H "Content-Type: application/json" \
-d "$BODY" \
"${{ secrets.DISCORD_INFRA_WEBHOOK_URL }}"
pack:
name: Pack
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set artifacts directory
id: artifactsPath
run: echo "::set-output name=nuget_artifacts::${{github.workspace}}/artifacts"
- name: Install .NET 8.0.x
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Pack
run: dotnet pack -c Release osu.Game.Resources /p:Version=${{ github.ref_name }} /p:GenerateDocumentationFile=true /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg -o ${{steps.artifactsPath.outputs.nuget_artifacts}}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: osu-resources
path: |
${{steps.artifactsPath.outputs.nuget_artifacts}}/*.nupkg
${{steps.artifactsPath.outputs.nuget_artifacts}}/*.snupkg
- name: Publish packages to nuget.org
run: dotnet nuget push ${{steps.artifactsPath.outputs.nuget_artifacts}}/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json

View File

@@ -1,11 +0,0 @@
clone_depth: 1
version: '{build}'
image: Visual Studio 2022
configuration: Release
platform: Any CPU
before_build:
- ps: if($env:appveyor_repo_tag -eq 'True') { Update-AppveyorBuild -Version $env:appveyor_repo_tag_name }
build_script:
- cmd: dotnet pack osu.Game.Resources /p:Version=%APPVEYOR_BUILD_VERSION%
artifacts:
- path: osu.Game.Resources/bin/Any CPU/Release/**/*.nupkg

View File

@@ -1,17 +0,0 @@
clone_depth: 1
version: '{build}'
skip_non_tags: true
image: Visual Studio 2022
configuration: Release
platform: Any CPU
before_build:
- ps: if($env:appveyor_repo_tag -eq 'True') { Update-AppveyorBuild -Version $env:appveyor_repo_tag_name }
build_script:
- cmd: dotnet pack osu.Game.Resources /p:Version=%APPVEYOR_BUILD_VERSION%
artifacts:
- path: osu.Game.Resources/bin/Any CPU/Release/**/*.nupkg
deploy:
- provider: Environment
name: nuget
- provider: Environment
name: github

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -0,0 +1,55 @@
# AngelCode Bitmap Font Generator configuration file
fileVersion=1
# font settings
fontName=Noto Sans SC Medium
fontFile=
charSet=0
fontSize=100
aa=4
scaleH=100
useSmoothing=1
isBold=1
isItalic=0
useUnicode=1
disableBoxChars=1
outputInvalidCharGlyph=0
dontIncludeKerningPairs=0
useHinting=1
renderFromOutline=0
useClearType=0
# character alignment
paddingDown=0
paddingUp=0
paddingRight=0
paddingLeft=0
spacingHoriz=4
spacingVert=4
useFixedHeight=0
forceZero=0
# output file
outWidth=1024
outHeight=1024
outBitDepth=32
fontDescFormat=0
fourChnlPacked=0
textureFormat=png
textureCompression=0
alphaChnl=0
redChnl=4
greenChnl=4
blueChnl=4
invA=0
invR=0
invG=0
invB=0
# outline
outlineThickness=0
# selected chars
chars=12549-12591,12704-12731
# imported icon images

View File

@@ -0,0 +1,55 @@
# AngelCode Bitmap Font Generator configuration file
fileVersion=1
# font settings
fontName=Noto Sans SC Medium
fontFile=
charSet=0
fontSize=100
aa=4
scaleH=100
useSmoothing=1
isBold=1
isItalic=0
useUnicode=1
disableBoxChars=1
outputInvalidCharGlyph=0
dontIncludeKerningPairs=0
useHinting=1
renderFromOutline=0
useClearType=0
# character alignment
paddingDown=0
paddingUp=0
paddingRight=0
paddingLeft=0
spacingHoriz=4
spacingVert=4
useFixedHeight=0
forceZero=0
# output file
outWidth=1024
outHeight=1024
outBitDepth=32
fontDescFormat=0
fourChnlPacked=0
textureFormat=png
textureCompression=0
alphaChnl=0
redChnl=4
greenChnl=4
blueChnl=4
invA=0
invR=0
invG=0
invB=0
# outline
outlineThickness=0
# selected chars
chars=12688-12730,12736-12771,12784-12830,12832-13054,13056-13099,13101-13311,19968-40912,65072-65103
# imported icon images

View File

@@ -0,0 +1,55 @@
# AngelCode Bitmap Font Generator configuration file
fileVersion=1
# font settings
fontName=Noto Sans SC Medium
fontFile=
charSet=0
fontSize=100
aa=4
scaleH=100
useSmoothing=1
isBold=1
isItalic=0
useUnicode=1
disableBoxChars=1
outputInvalidCharGlyph=0
dontIncludeKerningPairs=0
useHinting=1
renderFromOutline=0
useClearType=0
# character alignment
paddingDown=0
paddingUp=0
paddingRight=0
paddingLeft=0
spacingHoriz=4
spacingVert=4
useFixedHeight=0
forceZero=0
# output file
outWidth=1024
outHeight=1024
outBitDepth=32
fontDescFormat=0
fourChnlPacked=0
textureFormat=png
textureCompression=0
alphaChnl=0
redChnl=4
greenChnl=4
blueChnl=4
invA=0
invR=0
invG=0
invB=0
# outline
outlineThickness=0
# selected chars
chars=13312-19893,63744-64109,65072-65103
# imported icon images

View File

@@ -1,70 +0,0 @@
# AngelCode Bitmap Font Generator configuration file
fileVersion=1
# font settings
fontName=Noto Sans CJK JP Medium
fontFile=
charSet=0
fontSize=100
aa=4
scaleH=100
useSmoothing=1
isBold=1
isItalic=0
useUnicode=1
disableBoxChars=1
outputInvalidCharGlyph=0
dontIncludeKerningPairs=0
useHinting=1
renderFromOutline=0
useClearType=0
# character alignment
paddingDown=0
paddingUp=0
paddingRight=0
paddingLeft=0
spacingHoriz=4
spacingVert=4
useFixedHeight=0
forceZero=0
# output file
outWidth=1024
outHeight=1024
outBitDepth=32
fontDescFormat=0
fourChnlPacked=0
textureFormat=png
textureCompression=0
alphaChnl=0
redChnl=4
greenChnl=4
blueChnl=4
invA=0
invR=0
invG=0
invB=0
# outline
outlineThickness=0
# selected chars
chars=0-126,160-259,272-275,282-283,296-299,323-324,327-328,332-335,338-339,360-365,402,416-417,431-432
chars=461-476,504-505,593,609,711,713-715,729,913-929,931-937,945-961,963-969,1025,1040-1103,1105,4352
chars=4353-4607,7742-7743,7840-7929,8194-8195,8208-8214,8216-8218,8220-8222,8224-8226,8229-8231,8240,8242
chars=8243,8245,8249-8252,8258,8263-8265,8273,8361,8363-8364,8413-8414,8448,8451,8453,8457-8458,8463,8467
chars=8470,8481-8482,8486-8487,8491,8494,8501,8507,8544-8555,8560-8571,8592-8601,8632-8633,8644-8646,8651
chars=8652,8656,8658,8660,8678-8681,8693,8704,8706-8707,8709-8715,8719,8721-8723,8725,8730,8733-8736,8739
chars=8741-8750,8756-8759,8765,8771,8773,8776,8780,8786,8800-8802,8804-8807,8810-8811,8814-8815,8818-8819
chars=8822-8823,8834-8839,8842-8843,8853-8857,8864,8869,8895,8922-8923,8943,8965-8967,8978,8984,9001-9002
chars=9136-9137,9150-9164,9166,9178-9179,9251,9312-9643,9649-9651,9654-9655,9660-9661,9664-9665,9670-9676
chars=9678-9683,9698-9702,9711,9728-9731,9733-9734,9737,9742-9743,9750-9751,9756-9759,9775,9792-9794,9824
chars=9825-9839,9842-9853,9888,9917-9918,9986,10003,10010,10045,10047-10048,10070,10102-10111,10145,10548
chars=10549,10687,10746-10747,11013-11015,11034,11834-11835,11904-11929,11931-12019,12032-12245,12272
chars=12273-12283,12288-12351,12353-12438,12441-12543,12549-12589,12593-12686,12688-12730,12736-12771
chars=12784-12830,12832-13054,13056-13099,13101-19893,19968-40912,43360-43388,44032-55203,55216-55238
chars=55243-55291,63744-64109,64256-64260,65040-65049,65072-65106,65108-65126,65128-65131,65281-65470
chars=65474-65479,65482-65487,65490-65495,65498-65500,65504-65510,65512-65518
# imported icon images

Binary file not shown.

View File

@@ -0,0 +1,79 @@
#ifndef GHOST_FS
#define GHOST_FS
#undef HIGH_PRECISION_VERTEX
#define HIGH_PRECISION_VERTEX
#include "sh_Utils.h"
#include "sh_Masking.h"
layout(location = 2) in highp vec2 v_TexCoord;
layout(std140, set = 0, binding = 0) uniform m_GhostParameters
{
highp float g_Time;
};
layout(location = 0) out vec4 o_Colour;
const float pi = 3.14159265359;
highp float distanceToBox(in vec2 pos, in vec2 size)
{
vec2 d = abs(pos) - size;
return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);
}
highp float easeInCirc(in float x) {
return 1.0 - sqrt(1.0 - x * x);
}
highp float mainBody(in vec2 pos) {
highp float topCircle = distance(pos, vec2(0.5, 0.375)) - 0.375;
highp float box = distanceToBox(pos - vec2(0.5, 0.75), vec2(0.375, 0.375));
return min(topCircle, box);
}
highp float eyes(in vec2 pos) {
const vec2 eye_position = vec2(0.125, 0.375);
return distance(vec2(abs(pos.x - 0.5), pos.y), eye_position) - 0.0625;
}
highp float zigzag(in vec2 pos) {
const int num_spikes = 4;
const float scale = pi * 2 * num_spikes;
const float corner_radius = 0.0625;
highp float strength = sin(pos.x * pi);
highp float threshold = 0.875 + (cos((pos.x - g_Time) * scale) * 0.5 + 0.5) * 0.125 * strength;
highp float distanceToEdge = 0.375 - abs(pos.x - 0.5);
if (distanceToEdge < corner_radius) {
threshold -= easeInCirc(1.0 - distanceToEdge / corner_radius) * corner_radius;
}
return pos.y - threshold;
}
void main(void)
{
highp float blendRange = v_BlendRange.x / v_TexRect.z;
vec2 pos = v_TexCoord;
highp float dst = mainBody(pos);
dst = max(dst, -eyes(pos));
dst = max(dst, zigzag(pos));
highp float alpha = blendRange.x == 0.0 ? float(dst < 0.0) : (clamp(-dst, 0.0, blendRange.x) / blendRange.x);
o_Colour = getRoundedColor(vec4(vec3(1.0), alpha), vec2(0.0));
}
#endif