PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>>

Généralités sur la programmation 3D
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par Guillot »

en plus l'animation du gif est bouclée !
le bump est correcte

ci dessous un exemple minimaliste (color en perpixel)
est ce qu'il y a cette p... d'ombre noir ?

Code : Tout sélectionner

;  ----------------------------------------------------------------------------------------------------------
;   color perpixel mini
; ----------------------------------------------------------------------------------------------------------

InitEngine3D():InitSprite():InitKeyboard():InitMouse()

ExamineDesktops()
OpenWindow(0, 0,0, DesktopWidth(0)*0.8,DesktopHeight(0)*0.8, "CreateShader - [Esc] quit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)

CreateCamera(0, 0, 0, 100, 100):MoveCamera(0,0,3,-6):CameraLookAt(0,0,0,0)
CreateLight(0,$ffffff, -10000, 10000, 0)
AmbientColor($111111*8)
CameraBackColor(0,$444488)

Define.s vert_pg,frag_pg
vert_pg="%%#version 130%%uniform mat4 worldviewproj_matrix;//+24%uniform vec4 camera_pos_os;//+77%uniform vec4 light_pos_os;//+44 0%%varying vec3 oviewdir;%varying vec3 olightdir;%varying vec3 onormal;%%void main()%{%oviewdir = normalize(camera_pos_os.xyz - gl_Vertex.xyz);%olightdir = normalize(light_pos_os.xyz - gl_Vertex.xyz);%onormal = gl_Normal;%gl_Position = worldviewproj_matrix * gl_Vertex;%}%%%%%%"
frag_pg="%%#version 130%%uniform vec4 diffuse_ml;//+69 0%uniform vec4 specular_ml;//+70 0%uniform vec4 ambient_ml;//+67 0%uniform float shininess;//+36%%varying vec3 oviewdir;%varying vec3 olightdir;%varying vec3 onormal;%%void main()%{%vec3 normal=normalize(onormal);if (gl_FrontFacing==false) normal*=-1;%vec3 viewdir=normalize(oviewdir);%vec3 lightdir=normalize(olightdir);%float dif=max(dot(lightdir, normal), 0);%float spe=pow(dot(normalize(lightdir + viewdir), normal),shininess);%gl_FragColor=(ambient_ml + diffuse_ml * dif) + specular_ml* spe;%}%%%%%%"

CreateShader(0,vert_pg,frag_pg)
CreateShaderMaterial(0,0)
DisableMaterialLighting(0,1)
SetMaterialColor(0,#PB_Material_AmbientColor|#PB_Material_DiffuseColor,$ff)
MaterialShininess(0,64,$ffffff)

CreateTorus(0,2,1,32,32)
CreateEntity(0,MeshID(0),MaterialID(0))

Define.f MouseX,Mousey,depx,depz,dist,val,blend

Repeat
	While WindowEvent():Wend
	ExamineKeyboard()
	ExamineMouse()
	RotateEntity(0,0.2,0.2,0.2, #PB_Relative)
	RenderWorld()
	FlipBuffers()    
Until KeyboardReleased(#PB_Key_Escape) Or MouseButton(3)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par SPH »

Guillot a écrit : sam. 18/mars/2023 20:26 en plus l'animation du gif est bouclée !
le bump est correcte

ci dessous un exemple minimaliste (color en perpixel)
est ce qu'il y a cette p... d'ombre noir ?
Oui, l'ombre est très net sur ce tore rouge !

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par falsam »

Guillot a écrit : sam. 18/mars/2023 20:26 ci dessous un exemple minimaliste (color en perpixel)
est ce qu'il y a cette p... d'ombre noir ?
Ha oui elle est noire :mrgreen:

En rouge et noir, j'exilerai ma peur
J'irai plus haut que ces montagnes de douleur ...

Image
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par Guillot »

cette fois, je crois que j'ai trouvé

Code : Tout sélectionner

;  ----------------------------------------------------------------------------------------------------------
;   color perpixel mini
; ----------------------------------------------------------------------------------------------------------

InitEngine3D():InitSprite():InitKeyboard():InitMouse()

ExamineDesktops()
OpenWindow(0, 0,0, DesktopWidth(0)*0.8,DesktopHeight(0)*0.8, "CreateShader - [Esc] quit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)

CreateCamera(0, 0, 0, 100, 100):MoveCamera(0,0,3,-6):CameraLookAt(0,0,0,0)
CreateLight(0,$ffffff, -10000, 10000, 0)
AmbientColor($111111*8)
CameraBackColor(0,$444488)

Define.s vert_pg,frag_pg
vert_pg="%%%#version 130%%uniform mat4 worldviewproj_matrix;//+24%uniform vec4 camera_pos_os;//+77%uniform vec4 light_pos_os;//+44 0%%varying vec3 oviewdir;%varying vec3 olightdir;%varying vec3 onormal;%%void main()%{%oviewdir = normalize(camera_pos_os.xyz - gl_Vertex.xyz);%olightdir = normalize(light_pos_os.xyz - gl_Vertex.xyz);%onormal = gl_Normal;%gl_Position = worldviewproj_matrix * gl_Vertex;%}%%%%%%%"
frag_pg="%%%#version 130%%uniform vec4 diffuse_ml;//+69 0%uniform vec4 specular_ml;//+70 0%uniform vec4 ambient_ml;//+67 0%uniform float shininess;//+36%%varying vec3 oviewdir;%varying vec3 olightdir;%varying vec3 onormal;%%void main()%{%vec3 normal=normalize(onormal);%vec3 viewdir=normalize(oviewdir);%vec3 lightdir=normalize(olightdir);%float dif=max(dot(lightdir, normal), 0);%float spe=pow(max(dot(normalize(lightdir + viewdir), normal),0),shininess);%gl_FragColor=(ambient_ml + diffuse_ml * dif) + specular_ml* spe;%}%%%%%%%"

CreateShader(0,vert_pg,frag_pg)
CreateShaderMaterial(0,0)
DisableMaterialLighting(0,1)
SetMaterialColor(0,#PB_Material_AmbientColor|#PB_Material_DiffuseColor,$ff)
MaterialShininess(0,64,$ffffff)

CreateTorus(0,2,1,32,32)
CreateEntity(0,MeshID(0),MaterialID(0))

Define.f MouseX,Mousey,depx,depz,dist,val,blend

Repeat
	While WindowEvent():Wend
	ExamineKeyboard()
	ExamineMouse()
	RotateEntity(0,0.2,0.2,0.2, #PB_Relative)
	RenderWorld()
	FlipBuffers()    
Until KeyboardReleased(#PB_Key_Escape) Or MouseButton(3)
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par falsam »

Guillot a écrit : sam. 18/mars/2023 21:45 cette fois, je crois que j'ai trouvé
Image
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par Guillot »

ben merci les gars,
en fait je comprend pas pourquoi ça marchais chez moi…
enfin résolu ces problèmes de shaders
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par falsam »

Guillot a écrit : sam. 18/mars/2023 22:03 en fait je comprend pas pourquoi ça marchais chez moi…
Carte ATI peut être ?

En fait ca serait bien de voir ta configuration dans ta signature.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>> ou presque !!

Message par Guillot »

je viens de m'acheter un mini pc
intel celeron n5105 - Graphiques UHD Intel
(50% à 100% plus rapide que mon vieux core i3)

ça fout un peu les boules de savoir qu'un code peu marcher chez soi, et foiré ailleurs
je pensais que c'était une question de version d'opengl, mais le dernier bug à montré que non
on est tous en 4.6 et chez moi tout était correcte...

si y'en a qui sont interessé par la programmation des shaders, j'ai fais un petit éditeur, pas vraiment terminé, mais il fait gagner bcp de temps
je peux vous le poster
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>>

Message par SPH »

Cette fois, ton tore rouge fonctionne sans problème.

:D

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>>

Message par blendman »

salut

J,'ai testé tes exemples, ça fonctionne bien.

TU avais fait un exemple en 2020 (paysage), mais je ne l'ai pas trouvé.
si y'en a qui sont interessé par la programmation des shaders, j'ai fais un petit éditeur, pas vraiment terminé, mais il fait gagner bcp de temps
je peux vous le poster
il sort du code glsl (vs et ps) ?

Si oui, ça m'intéresse :)
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: PB 6.00 - Exemples 3D - Shaders <<< Corrigés >>>

Message par Guillot »

paysage v7 :
viewtopic.php?p=211201#p211201
mais y'a pas le source
(je vais pas tarder de vous montrer la v8, c'est bcp mieux)

concernant mon éditeur de shader : faut pas te faire d'illusions c'est un editeur en mode text, faudra aprendre le glsl ! (il simplifie juste le boulot)
Répondre