def affiche_rendu_shaders(cls): window_size=Demo.rendu.GetDefaultOutputWindow().GetSize() Demo.rendu.SetViewport(gs.fRect(0, 0, window_size.x, window_size.y)) # fit viewport to window dimensions Demo.rendu.Clear(gs.Color(0.,0.,0.,0.)) Demo.rendu.EnableBlending(False) Demo.rendu.SetShader(cls.shader_terrain) Demo.rendu.SetShaderTexture("texture_terrain", cls.texture_terrain1) Demo.rendu.SetShaderTexture("texture_terrain2", cls.texture_terrain2) Demo.rendu.SetShaderTexture("texture_terrain3", cls.texture_terrain3) Demo.rendu.SetShaderFloat("ratio_ecran",window_size.y/window_size.x) Demo.rendu.SetShaderFloat("distanceFocale",Demo.calcul_distance_focale(cls.camera)) #cls.camera.GetCamera().GetZoomFactor()/2.) cam=cls.camera.GetTransform() camPos=cam.GetPosition() Demo.rendu.SetShaderFloat3("obs_pos",camPos.x,camPos.y,camPos.z) Demo.rendu.SetShaderMatrix3("obs_mat_normale",cam.GetWorld().GetRotationMatrix()) Demo.rendu.SetShaderFloat2("facteur_echelle_terrain",1./cls.facteur_echelle_terrain_l1.x,1./cls.facteur_echelle_terrain_l1.y) Demo.rendu.SetShaderFloat2("facteur_echelle_terrain2",1./cls.facteur_echelle_terrain_l2.x,1./cls.facteur_echelle_terrain_l2.y) Demo.rendu.SetShaderFloat2("facteur_echelle_terrain3",1./cls.facteur_echelle_terrain_l3.x,1./cls.facteur_echelle_terrain_l3.y) Demo.rendu.SetShaderFloat("amplitude_terrain",cls.amplitude_l1) Demo.rendu.SetShaderFloat("amplitude_terrain2",cls.amplitude_l2) Demo.rendu.SetShaderFloat("amplitude_terrain3",cls.amplitude_l3) Demo.rendu.SetShaderFloat("facteur_precision_distance",cls.facteur_precision_distance) Demo.rendu.SetShaderFloat("altitude_eau",cls.altitude_eau) Demo.rendu.SetShaderFloat("intensite_ambiante",cls.terrain_intensite_ambiante) Demo.rendu.SetShaderFloat3("couleur_zenith",cls.couleur_zenith.r,cls.couleur_zenith.g,cls.couleur_zenith.b) Demo.rendu.SetShaderFloat3("couleur_horizon",cls.couleur_horizon.r,cls.couleur_horizon.g,cls.couleur_horizon.b) Demo.rendu.SetShaderFloat3("couleur_neige",cls.couleur_neige.r,cls.couleur_neige.g,cls.couleur_neige.b) Demo.rendu.SetShaderFloat3("couleur_eau",cls.couleur_eau.r,cls.couleur_eau.g,cls.couleur_eau.b) l_dir=cls.lumiere_soleil.GetTransform().GetWorld().GetRotationMatrix().GetZ() Demo.drapeau_erreur=True Demo.message_erreur={"x:"+str(l_dir.x),"y:"+str(l_dir.y),"z:"+str(l_dir.z)} Demo.rendu.SetShaderFloat3("l1_direction",l_dir.x,l_dir.y,l_dir.z) l_couleur=cls.lumiere_soleil.GetLight().GetDiffuseColor() Demo.rendu.SetShaderFloat3("l1_couleur",l_couleur.r,l_couleur.g,l_couleur.b) l_dir=cls.lumiere_ciel.GetTransform().GetWorld().GetRotationMatrix().GetZ() Demo.rendu.SetShaderFloat3("l2_direction",l_dir.x,l_dir.y,l_dir.z) l_couleur=cls.lumiere_ciel.GetLight().GetDiffuseColor()*cls.lumiere_ciel.GetLight().GetDiffuseIntensity() Demo.rendu.SetShaderFloat3("l2_couleur",l_couleur.r,l_couleur.g,l_couleur.b) Demo.rendu.SetShaderFloat2("zFrustum",cls.camera.GetCamera().GetZNear(),cls.camera.GetCamera().GetZFar()) Demo.affiche_texture_rendu() pass
def affiche_donnees_camera(la_camera,xPos,c=gs.Color.White): yPos=850 e=16 cam=la_camera.GetCamera() render.text2d(xPos,yPos,"Caméra: "+la_camera.GetName(),16, c) render.text2d(xPos,yPos-2*e,"Zoom: "+str(round(cam.GetZoomFactor(),3)),16, c) Fov=gs.ZoomFactorToFov(cam.GetZoomFactor()) render.text2d(xPos,yPos-3*e,"Fov: "+str(round(Fov/pi*180,3)),16, c) distanceFocale=Demo.calcul_distance_focale(la_camera) render.text2d(xPos,yPos-4*e,"Distance focale: "+str(round(distanceFocale,3)),16, c) render.text2d(xPos,yPos-5*e,"Z near: "+str(round(cam.GetZNear(),3)),16,c) render.text2d(xPos,yPos-6*e,"Z far: "+str(round(cam.GetZFar(),3)),16, c) affiche_matrice(la_camera.GetTransform(),xPos,yPos-8*e,c)
# ================================================================ # Départ programme # ================================================================ # -----------Initialisation du système de fichiers: gs.GetFilesystem().Mount(gs.StdFileDriver()) # Racine du projet gs.GetFilesystem().Mount(gs.StdFileDriver("pkg.core"), "@core") # Resources du runtime # ------------Inits des moteurs de rendu: render.init(1600, 900,"@core", 1) #x,y, main path, antialiasing (1 à 8) Demo.init() Demo.signal_scene=Scene_base.SIG_RIEN # -----------Init des scènes: Scene_01.init() Scene_Terrain_Marching.init() Demo.Scene_actuelle=Scene_Terrain_Marching # ----------- Positionnement initial: active_scene_actuelle() Demo.Scene_actuelle.restart() scene.update_scene(Demo.Scene_actuelle.scene3d, 1 / 60)
def affiche_rendu_shaders(cls): window_size = Demo.rendu.GetDefaultOutputWindow().GetSize() Demo.rendu.SetViewport( gs.fRect(0, 0, window_size.x, window_size.y)) # fit viewport to window dimensions Demo.rendu.Clear(gs.Color(0., 0., 0., 0.)) Demo.rendu.EnableBlending(False) Demo.rendu.SetShader(cls.shader_terrain) Demo.rendu.SetShaderTexture("texture_terrain", cls.texture_terrain1) Demo.rendu.SetShaderTexture("texture_terrain2", cls.texture_terrain2) Demo.rendu.SetShaderTexture("texture_terrain3", cls.texture_terrain3) Demo.rendu.SetShaderFloat("ratio_ecran", window_size.y / window_size.x) Demo.rendu.SetShaderFloat( "distanceFocale", Demo.calcul_distance_focale( cls.camera)) #cls.camera.GetCamera().GetZoomFactor()/2.) cam = cls.camera.GetTransform() camPos = cam.GetPosition() Demo.rendu.SetShaderFloat3("obs_pos", camPos.x, camPos.y, camPos.z) Demo.rendu.SetShaderMatrix3("obs_mat_normale", cam.GetWorld().GetRotationMatrix()) Demo.rendu.SetShaderFloat2("facteur_echelle_terrain", 1. / cls.facteur_echelle_terrain_l1.x, 1. / cls.facteur_echelle_terrain_l1.y) Demo.rendu.SetShaderFloat2("facteur_echelle_terrain2", 1. / cls.facteur_echelle_terrain_l2.x, 1. / cls.facteur_echelle_terrain_l2.y) Demo.rendu.SetShaderFloat2("facteur_echelle_terrain3", 1. / cls.facteur_echelle_terrain_l3.x, 1. / cls.facteur_echelle_terrain_l3.y) Demo.rendu.SetShaderFloat("amplitude_terrain", cls.amplitude_l1) Demo.rendu.SetShaderFloat("amplitude_terrain2", cls.amplitude_l2) Demo.rendu.SetShaderFloat("amplitude_terrain3", cls.amplitude_l3) Demo.rendu.SetShaderFloat("facteur_precision_distance", cls.facteur_precision_distance) Demo.rendu.SetShaderFloat("altitude_eau", cls.altitude_eau) Demo.rendu.SetShaderFloat("intensite_ambiante", cls.terrain_intensite_ambiante) Demo.rendu.SetShaderFloat3("couleur_zenith", cls.couleur_zenith.r, cls.couleur_zenith.g, cls.couleur_zenith.b) Demo.rendu.SetShaderFloat3("couleur_horizon", cls.couleur_horizon.r, cls.couleur_horizon.g, cls.couleur_horizon.b) Demo.rendu.SetShaderFloat3("couleur_neige", cls.couleur_neige.r, cls.couleur_neige.g, cls.couleur_neige.b) Demo.rendu.SetShaderFloat3("couleur_eau", cls.couleur_eau.r, cls.couleur_eau.g, cls.couleur_eau.b) l_dir = cls.lumiere_soleil.GetTransform().GetWorld().GetRotationMatrix( ).GetZ() Demo.drapeau_erreur = True Demo.message_erreur = { "x:" + str(l_dir.x), "y:" + str(l_dir.y), "z:" + str(l_dir.z) } Demo.rendu.SetShaderFloat3("l1_direction", l_dir.x, l_dir.y, l_dir.z) l_couleur = cls.lumiere_soleil.GetLight().GetDiffuseColor() Demo.rendu.SetShaderFloat3("l1_couleur", l_couleur.r, l_couleur.g, l_couleur.b) l_dir = cls.lumiere_ciel.GetTransform().GetWorld().GetRotationMatrix( ).GetZ() Demo.rendu.SetShaderFloat3("l2_direction", l_dir.x, l_dir.y, l_dir.z) l_couleur = cls.lumiere_ciel.GetLight().GetDiffuseColor( ) * cls.lumiere_ciel.GetLight().GetDiffuseIntensity() Demo.rendu.SetShaderFloat3("l2_couleur", l_couleur.r, l_couleur.g, l_couleur.b) Demo.rendu.SetShaderFloat2("zFrustum", cls.camera.GetCamera().GetZNear(), cls.camera.GetCamera().GetZFar()) Demo.affiche_texture_rendu() pass
# ================================================================ # Départ programme # ================================================================ # -----------Initialisation du système de fichiers: gs.GetFilesystem().Mount(gs.StdFileDriver()) # Racine du projet gs.GetFilesystem().Mount(gs.StdFileDriver("pkg.core"), "@core") # Resources du runtime # ------------Inits des moteurs de rendu: render.init(1600, 900, "@core", 1) #x,y, main path, antialiasing (1 à 8) Demo.init() Demo.signal_scene = Scene_base.SIG_RIEN # -----------Init des scènes: Scene_01.init() Scene_Terrain_Marching.init() Demo.Scene_actuelle = Scene_Terrain_Marching # ----------- Positionnement initial: active_scene_actuelle() Demo.Scene_actuelle.restart() scene.update_scene(Demo.Scene_actuelle.scene3d, 1 / 60)