Prof Party - Stread Tek

Musique d'ambiance
 
AccueilFAQRechercherS'enregistrerConnexion

Partagez | 
 

 ShaderCreator

Aller en bas 
AuteurMessage
Snaky
Admin
avatar

Nombre de messages : 538
Localisation : Lyon, France
Date d'inscription : 26/01/2008

MessageSujet: ShaderCreator   Ven 14 Mar - 20:40

Bonsoir!

Voici l'un des premiers outils annexes au jeu!
Ce petit plug-in, qui sera intégré au jeu à sa sortie, permet de générer rapidement ses propres fichiers *.shader, qui sont les "scripts/programmes de code" des textures du jeu.
Il sera ainsi aisé de générer des milliers de lignes de codes pour intégrer rapidement des centaines de nouvelles textures, réutilisables par la suite dans votre propre carte de jeu, ou pour vos propres skins par exemple.

1) Structure

Comme tous les outils du genre, il se présente sous la forme d'un fichier-script, qui possède le seul défaut d'être mal digéré par la plupart des anti-virus. En tentant de le lancer, en double-cliquant dessus, votre anti-virus risque de vous renvoyer une alerte.




Exemples d'alertes


En tous les cas, si le fichier a été téléchargé du site officiel, il n'y a aucun risque pour votre machine.
Vous pouvez, de toute manière, vérifier très rapidement si le fichier télécharger est l'original, ou un faux outil. Pour cela, il vous suffira de comparer ce fichier avec le code source qui sera donné dans ce topic. Pour visualiser le code source, faites un clic droit sur le fichier *.vbs (manœuvre sans risque), puis "Modifier". Le bloc note s'aouvre avec le code source.

Vous avez également la possibilité de copier le code source de ce topic, et de le coller dans un nouveau fichier texte. Il vous suffira alors de renommer ce fichier texte en fichier *.vbs (normalement, l'icone change), et de le lancer!


Icône d'un fichier Visual Basic Script (VBS)



2) Utilisation de base

Placez tout d'abord les images, que vous désirez voir codées dans le fichier shader, dans un dossier de votre choix. Dans ce même dossier, placez une copie du plug-in (la copie évite les pertes de données, inhérentes à tout programme).

Au lancement, vous avez la possibilité de voir le numéro de version du plug-in. Si un plug-in de version supérieur est disponible sur le site officiel, il est recommandé de le télécharger et de remplacer l'ancienne version.


Le numéro de version est donné au départ


Ensuite, il se peut que le programme vous indique qu'il redémarre en mode 'console', ce qui permet de suivre les actions effectuée par le plug-in.


Lancement en mode 'console'


A ce moment-là, une fenetre (généralement gris sur fond noir) apparait. Elle contiendra les informations d'arrière-plan du programme, vous permettant de garder un oeil sur ce qu'il fait.


La console du programme est en arrière plan. Ce message 'options de la ligne de commande enregistrées' est parfaitement normal



Vous devez maintenant indiquer le nom du dossier dans lequel se trouveront vos images de texture. Utilisez la syntaxe:
textures/nom_dun_eventuel_dossier/autre_dossier_possible/

N'oubliez pas le "/" final! Validez...


Indiquez le dossier, ici, textures/Affiches/ est pris en exemple


Le programme va maintenant analyser le contenu du dossier local (du dossier où le fichier du programme est placé), et repérer les images en JPG et en TGA. Seuls ces fichiers seront codés en tant que textures, dans le shader. Une fois cela fait, il vous en informe:


Déroulement de l'opération



Le programme supprime alors le fichier BAT qu'il avait créé pour se lancer, et se ferme ensuite. L'opération est terminée!
Vous obtenez alors un fichier nommé Shader.shader, situé dans le dossier où le programme a été placé et lancé. Ce shader contient toutes vos lignes de codes pour les textures. Vous pouvez le renommer (exemple: Affiches.shader), puis vous devez le placer dans le dossier "scripts" du dossier "main" du répertoire de jeu (rappel: le répertoire de jeu est le dossier contenant l'executable lançant le jeu; le dossier où vous avez installé votre jeu).


3) Utilisation plus poussée

Le plug-in est programme pour générer des fichiers shader en masse, mais il se peut que votre shader ne soit pas "classique". Un shader classique contient un nom, une image et un mot-clef pour le logiciel de mapping, le code pour l'image de la texture de base, et le code pour l'éclairage dynamique.
Or, certains programmeurs aiments rajouter des effets sur leurs textures, et un plug-in de shader en masse ne faisant que des shaders "classiques" leur est parfaitement inutile.

Il vous est donc possible de changer l'exemple-type utilisé par le plug-in.
Par défaut, le plugin utilise ce shader:

Citation :

&&&
{
qer_editorimage &&&
qer_keyword Others
{
map &&&
rgbgen identity
}
{
map $lightmap
rgbgen identity
blendfunc GL_DST_COLOR GL_ZERO
}
}

Cet exemple par défaut est chargé par le programme. Lors de la création des lignes de code du shader, le programme va accéder à cet exemple, le lire, et remplacer tous les caractères "&&&" par le nom de l'image jpg/tga qu'il est en train d'ajouter. Ainsi, si vous avez 3 images nommées "Img1.jpg", "Img2.tga" et "Img3.jpg", le shader sera:

Citation :

textures/Img1.jpg
{
qer_editorimage textures/img1.jpg
qer_keyword Others
{
map textures/Img1.jpg
rgbgen identity
}
{
map $lightmap
rgbgen identity
blendfunc GL_DST_COLOR GL_ZERO
}
}
textures/Img2.tga
{
qer_editorimage textures/img2.tga
qer_keyword Others
{
map textures/Img2.tga
rgbgen identity
}
{
map $lightmap
rgbgen identity
blendfunc GL_DST_COLOR GL_ZERO
}
}
textures/Img3.jpg
{
qer_editorimage textures/img3.jpg
qer_keyword Others
{
map textures/Img3.jpg
rgbgen identity
}
{
map $lightmap
rgbgen identity
blendfunc GL_DST_COLOR GL_ZERO
}
}

Mais il est possible de changer aisément le shader d'exemple utilisé! Pour cela, créer un nouveau fichier texte, et nommez-le en "ShaderExample.txt". Placez-le dans le même dossier que le fichier du plug-in que vous allez lancer (donc, dans un dossier quelconque, vous avez: les images jpg/tga, le fichier "shaderexample.txt", et une copie de "ShaderCreator.vbs" que vous allez lancer).
Editez ensuite ce fichier texte. Donnez le shader-type de votre choix, en mettant "&&&" partout où le nom de l'image en cours de traitement doit apparaitre. Voici une idée de shader-type possible:

Citation :
&&&
{
qer_editorimage &&&
surfaceparm paper
qer_keyword Affiches
qer_keyword Posters
{
map &&&
rgbgen identity
}
{
map $lightmap
rgbgen identity
blendfunc GL_DST_COLOR GL_ZERO
}
}

Il est basique aussi, mais donne plusieurs mots-clef au shader, et un "surfaceparm" (type de surface) précis.
Le fichier de shader-type n'est pas supprimé une fois le programme terminé!

_________________
Snaky, chef du projet 'Prof Party'


Dernière édition par Snaky le Ven 14 Mar - 20:51, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://profparty.forumpro.fr
Snaky
Admin
avatar

Nombre de messages : 538
Localisation : Lyon, France
Date d'inscription : 26/01/2008

MessageSujet: Re: ShaderCreator   Ven 14 Mar - 20:41

Code source:

Code:

dim FSO, WSS, BatFile, Self, SelfBat, Suppression

set WSS = Wscript.CreateObject("WScript.Shell")
set FSO = CreateObject("Scripting.FileSystemObject")

msgbox "Shader Creator v 0.301" & chr(10) & "Par Snaky" & chr(10) & "Destiné à ProfParty" & chr(13) & "Veuillez désactiver votre antivirus, ou au moins autoriser les scripts, pour assurer le bon déroulement du programme", 64, "Présentation"

set Self = FSO.GetFile(WScript.ScriptFullName)

if not FSO.FileExists(WScript.ScriptFullName & ".bat") Then
   msgbox "Le programme va etre relancé en mode 'console' pour plus de facilité!", 48, "Relance"
   set BatFile = FSO.CreateTextFile(WScript.ScriptFullName & ".bat")
   BatFile.WriteLine "@echo off"
   BatFile.WriteLine "cscript //S /Nologo"
   BatFile.WriteLine (chr(34) & WScript.ScriptFullName & chr(34))
   BatFile.Close
   WScript.Sleep 1000
   if not FSO.FileExists(WScript.ScriptFullName & ".bat") Then
      msgbox "Le fichier de lancement n'a pu être créé, veuillez vérifier que votre anti-virus n'est pas paranoïaque!" & chr(10) & "Désactivez-le pour réessayer le logiciel." & chr(10) & "Si vous n'y arrivez toujours pas, demandez sur le forum officiel du jeu ProfParty", 16, "Erreur"
   End If
   set SelfBat = FSO.GetFile(WScript.ScriptFullName & ".bat")
   WSS.Run (SelfBat.ShortName)
   WScript.Quit
End If

WScript.Echo "Chargement du dossier local..."
dim LocalFolder
set LocalFolder = FSO.GetFolder(Self.ParentFolder)
WScript.Echo "Le dossier local '" & LocalFolder.Name & "' a été chargé!"

Wscript.Echo "Chargement de l'exemple..."
dim FileEx, Example
if not FSO.FileExists(LocalFolder & "/ShaderExample.txt") Then
   msgbox "Aucun fichier shader d'exemple n'a été trouvé! Un exemple basic, par défaut, va petre utilisé", 48, "Pas d'exemple trouvé"
   Example = "&&&" & chr(10) & "{" & chr(10) & "qer_editorimage &&&" & chr(10) & "qer_keyword Others" & chr(10) & "{" & chr(10) & "map &&&" & chr(10) & "rgbgen identity" & chr(10) & "}" & chr(10) & "{" & chr(10) & "map $lightmap" & chr(10) & "rgbgen identity" & chr(10) & "blendfunc GL_DST_COLOR GL_ZERO" & chr(10) & "}" & chr(10) & "}"
Else
   set FileEx = FSO.OpenTextFile(LocalFolder & "/ShaderExample.txt")
   Example = FileEx.ReadAll
   FileEx.Close
End If

WScript.Echo "Exemple utilisé:"
WScript.Echo Example
WScript.Sleep 500

WScript.Echo "Création du fichier shader..."
dim Shader

If FSO.FileExists(LocalFolder & "/Shader.shader") Then
   Suppression = msgbox("Un fichier '" & LocalFolder & "/Shader.shader' existe déjà!!" & chr(10) & "Veuillez de déplacer, le renommer ou le supprimmer pour pouvoir continuer!" & chr(10) & "'Abandonner' pour quitter le programme" & chr(10) & "'Recommencer' pour écrire par dessus le fichier déjà présent (ecraser le fichier)" & chr(10) & "'Ignorer' pour écrire à la suite du fichier présent", 18, "Fichier déjà existant")
   If Suppression = 3 Then
      Clear()
      WScript.Quit
   ElseIf Suppression = 4 Then
      set Shader = FSO.CreateTextFile(LocalFolder & "/Shader.shader", TRUE)
   Else
      set Shader = FSO.OpenTextFile(LocalFolder & "/Shader.shader", 8)
   End If
Else
   set Shader = FSO.CreateTextFile(LocalFolder & "/Shader.shader", TRUE)
End If

Wscript.Sleep 500

WScript.Echo "Chemin d'accès futur"
Dim Prefix
Prefix = inputbox("Veuillez indiquer dans quel dossier se trouveront vos textures." & chr(10) & "Veuillez préciser le dossier 'textures/'" & chr(10) & "Veuillez terminer ce chemin d'accès par un slash '/'", "Chemin d'accès", "textures/")

WScript.Echo "Chargement des fichiers"
dim Files, File, Write, Exp
set Files = LocalFolder.Files
set Exp = New RegExp
Exp.Pattern = "&&&"
Exp.IgnoreCase = TRUE
Exp.Global = TRUE

WScript.Echo Files.Count & " fichiers trouvés"
Shader.WriteLine "//------------------------------------------------------------"
Shader.WriteLine "//Shader Creator v0.3"
Shader.WriteLine "//Par Snaky"
Shader.WriteLine "//Histoire de faire des shaders rapidement!"
Shader.WriteLine "//Réservé exclusivement pour ProfParty"
Shader.WriteLine "//------------------------------------------------------------"

for each File in Files
   
   if Right(File.Name, 3) = "jpg" or Right(File.Name, 3) = "tga" Then
      Shader.WriteLine (Exp.Replace(Example, Prefix & File.Name))
      Shader.WriteLine ""
   Else
      WScript.Echo File.Name & " n'est pas une image compatible!"
   End If
Next
Shader.WriteLine "//Fin du shader!"
Shader.WriteLine "//En vous remerçiant! :)"
Clear()

WScript.Quit

Sub Clear()
   if FSO.FileExists(WScript.ScriptFullName & ".bat") Then
      FSO.DeleteFile (WScript.ScriptFullName & ".bat")
      WScript.Sleep 1000
      msgbox "Le fichier de lancement console a été supprimé avec succès!", 64, "Supression avec succès"
   End if
End Sub

_________________
Snaky, chef du projet 'Prof Party'
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://profparty.forumpro.fr
 
ShaderCreator
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Prof Party - Stread Tek :: Le Jeu :: Améliorations :: Améliorations Techniques-
Sauter vers: