Page 2 sur 2

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

Publié : sam. 18/mars/2023 20:26
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)

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

Publié : sam. 18/mars/2023 20:42
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 !

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

Publié : sam. 18/mars/2023 21:33
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

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

Publié : sam. 18/mars/2023 21:45
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)

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

Publié : sam. 18/mars/2023 21:55
par falsam
Guillot a écrit : sam. 18/mars/2023 21:45 cette fois, je crois que j'ai trouvé
Image

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

Publié : sam. 18/mars/2023 22:03
par Guillot
ben merci les gars,
en fait je comprend pas pourquoi ça marchais chez moi…
enfin résolu ces problèmes de shaders

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

Publié : sam. 18/mars/2023 22:07
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.

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

Publié : sam. 18/mars/2023 22:39
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

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

Publié : dim. 19/mars/2023 22:10
par SPH
Cette fois, ton tore rouge fonctionne sans problème.

:D

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

Publié : dim. 26/mars/2023 12:36
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 :)

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

Publié : dim. 26/mars/2023 22:45
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)