Que fait slug-font-rendering ?
Implémentations de référence des shaders HLSL pour l'algorithme de rendu de polices Slug, permettant un rendu vectoriel de haute qualité des polices et glyphes accéléré par GPU.
Présentation
Cette compétence contient des implémentations de référence de shaders HLSL pour l'algorithme de rendu de polices Slug. Slug est une technique de rendu de polices vectorielles optimisée pour le GPU qui garantit un rendu net et anticrénelé à toutes les échelles, avec des performances adaptées aux applications en temps réel.
Caractéristiques clés
- Rendu vectoriel : Les glyphes sont convertis en textures distance field (SDF) pour un rendu net et indépendant de la résolution.
- HLSL natif : Implémentations en HLSL, prêtes pour DirectX et compatibles avec d'autres API graphiques via SPIR-V.
- Anti-aliasing intégré : Anticrénelage lissé pour un rendu de texte doux sans artefacts.
- Performances GPU : Exploitation de la parallélisation GPU pour un rendu simultané de nombreux glyphes.
- Référence de code : Exemples de shaders pour l'initialisation, le rendu et la gestion des polices dans un pipeline de rendu.
Utilisation
Pour utiliser ces shaders, intégrez les fichiers dans votre projet HLSL ou DirectX. Configurez votre pipeline de rendu pour charger les polices vectorielles et les convertir en textures distance field avant d'utiliser les shaders de rendu fournis.
Prérequis
- Compilateur HLSL (ex.
fxc.exeou DirectXShaderCompiler) - Moteur de rendu compatible DirectX 11+ ou Vulkan (via SPIR-V)
Exemple de configuration
// Exemple de shader de rendu de glyphe
Texture2D<float> g_SDFTexture : register(t0);
SamplerState g_Sampler : register(s0);
float4 PixelShaderFunction(float2 texCoord : TEXCOORD) : SV_TARGET
{
float distance = g_SDFTexture.Sample(g_Sampler, texCoord);
float alpha = smoothstep(0.5 - fwidth(distance), 0.5 + fwidth(distance), distance);
return float4(1.0, 1.0, 1.0, alpha);
}
Structure du projet
/shaders/— Contient les fichiers HLSL d'exemple./docs/— Documentation supplémentaire sur l'algorithme Slug./examples/— Projets de démonstration montrant l'intégration.
Licence
Ce projet est distribué sous licence MIT. Voir le fichier LICENSE pour plus de détails.