Historique des modifications - Message

Message #11817

Sujet: Changer la coloration de la texture d'une skybox


Type Date Auteur Contenu
Création du message 29-05-2017 20:03:41 Magun
tu sait, cela prend du temp (~une aprem) et je ne serait vraiment disponible qu'qpres fin juin, mais j'ai commencer a ecrire un petit code
si tu as d'avantage de temp, au lieu d'attendre la reponsse miracle, commence a realiser quelque chose : CMapReflexion
cette classe seras une implementation de ILightManager

en gros le but est de filter les nodes a rendre, c'est a dire : pour chaque "pass" du drawAll du scene manager, si un ILightManager est set il va apeller une fonction de l'objet referenecent un ILightManager

par exemple, en fouillant dans le code source d'irrlicht on trouve cela:

Code c++ :

	// render skyboxes
	{
		IRR_PROFILE(CProfileScope psSkyBox(EPID_SM_RENDER_SKYBOXES);)
		CurrentRenderPass = ESNRP_SKY_BOX;
		Driver->getOverrideMaterial().Enabled = ((Driver->getOverrideMaterial().EnablePasses & CurrentRenderPass) != 0);

		if (LightManager)
		{
			LightManager->OnRenderPassPreRender(CurrentRenderPass);
			for (i=0; i<SkyBoxList.size(); ++i)
			{
				ISceneNode* node = SkyBoxList[i];
				LightManager->OnNodePreRender(node);
				node->render();
				LightManager->OnNodePostRender(node);
			}
		}
		else
		{
			for (i=0; i<SkyBoxList.size(); ++i)
				SkyBoxList[i]->render();
		}

		SkyBoxList.set_used(0);

		if (LightManager)
			LightManager->OnRenderPassPostRender(CurrentRenderPass);
	}
idem pourles objets solide, l'ombre, les objets transparent, ... etc

donc tu peut selectionner grace au type de la "pass" actuel ce que tu veut rendre ou pas, et, meme selectionner les nodes a rendre en fonction de leurs types
toi normalement tu va rendre uniquement les skybox et les objets solides. Parmit les objets solide, tu va naturelement exclure le terrain et d'autre "babiole" en fonction du gain de performance que tu souhaite

du coup tu va pouvoir utiliser cela, conjointement avec ce que tu avais deja dans CMapWater tu setLightManager avans le smgr->drawAll et tu l'unset apres (nullptr)

l'etape d'apres c'est d'ecrire cette class CMapWater correctement !! -> tu ajoute pas un ISceneNode dans un ISceneNode pour gerer ce dernier, tu fait un vrai scene node dedier a l'eau
tu donne le path des shader dans le constructeur, tu lui donne un vrai type (getType devrait retourner ESNT_WATER_SURFACE), bref on peut trouver pas mal de truc a faire avec ces deux/trois element

ce n'est que mon avis evidement, mais sa a un but : avoir un code claire, debuter une architecture, et donner de la coherence pour pouvoir l'utiliser plus tard
apres y a plus simple, mais j'aime bien experimenter, et je pensse que sa peut donner un truc pas trop mal, en offrant des possibiliter pour plus tard smile

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
155 invités en ligne
membre en ligne: -
RSS Feed