1
Projects / Re: Paradox - Power Pinball - Remake
« on: June 22, 2024 »
really well done
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.










Change = MP_GetChannelVUV2M(channel, @left.f, @right.f)Fragment$ + " float angle = iTime * speed * frequency *" + Change +"+(shift + uv.x) * 2.0; " + Chr(10);:
;: PureBasic Version 5.43 LTS x86
;:
;:
;: get the MP3D Lib from here:
;: inc-games-design.de/Tools/Mp3dLib_installer.rar
;:
;:
Enumeration
#Main
EndEnumeration
Enumeration
#leftbar
#rightbar
#Gad_OpenGL
#Exit_btn
#Gadget_exit
#textgadget
#Infobar_Font
EndEnumeration
#GL_VERTEX_SHADER = $8B31
#GL_FRAGMENT_SHADER = $8B30
#GL_BGR = $80E0
#GL_BGRA = $80E1
DataSection
Song:
IncludeBinary "Sound\mpl.v2m"
SongEnd:
EndDataSection
;:handle the GLSL needs
XIncludeFile "include\cm_opengl_uni.pbi" : UseModule cm_opengl
Define IsPlaying, EndOfTrackReached, EventGadget
Define.i Event
;:V2M Music File Main Out - left / right
Define MainVULeft.f,MainVURight.f
;:Channels V2M Music File - no need yet
Define Ch0VULeft.f, Ch0VURight.f
Define Ch1VULeft.f, Ch1VURight.f
Define Ch2VULeft.f, Ch2VURight.f
Define Ch3VULeft.f, Ch3VURight.f
Define Ch4VULeft.f, Ch4VURight.f
Define Ch5VULeft.f, Ch5VURight.f
Define Ch6VULeft.f, Ch6VURight.f
Define Ch7VULeft.f, Ch7VURight.f
Define Ch8VULeft.f, Ch8VURight.f
Define Ch9VULeft.f, Ch9VURight.f
Define Ch10VULeft.f, Ch10VURight.f
Define Ch11VULeft.f, Ch11VURight.f
Define Ch12VULeft.f, Ch12VURight.f
Define Ch13VULeft.f, Ch13VURight.f
Define Ch14VULeft.f, Ch14VURight.f
Define Ch15VULeft.f, Ch15VURight.f
Procedure Open_MainScreen()
CreateImage(#Exit_btn,16,16)
StartDrawing(ImageOutput(#Exit_btn))
FillArea(1,1,-1,RGB(137,187,229))
Line(0,16,16,-17,RGB(45, 45, 45))
Line(0,0,16,16,RGB(45, 45, 45))
StopDrawing()
OpenWindow(#Main, 0 , 0, 640, 480,"",#PB_Window_ScreenCentered|#PB_Window_BorderLess|#PB_Window_Invisible)
SetWindowColor(#Main, RGB(137,187,229))
SetClassLongPtr_(WindowID(#Main), #GCL_STYLE, #CS_DROPSHADOW)
;:exit button
ImageGadget(#Gadget_exit,WindowWidth(0)-22,2,16,16,ImageID(#Exit_btn))
TextGadget(#textgadget,5, 1, 567, 20, "GLSL Shader Test: inc 2019",#SS_CENTERIMAGE)
SetGadgetFont(#textgadget, LoadFont(#Infobar_Font, "Microsoft Sans Serif", 8, #PB_Font_HighQuality))
SetGadgetColor(#textgadget , #PB_Gadget_BackColor, RGB(137,187,229))
SetGadgetColor(#textgadget , #PB_Gadget_FrontColor, RGB(15, 15, 15))
OpenGLGadget(#Gad_OpenGL, 0, 20, 640, 460, #PB_OpenGL_Keyboard)
Init_OpenGL(#Gad_OpenGL, 640, 420)
HideWindow(#Main, #False)
EndProcedure
Open_MainScreen()
MP_CatchV2M(?Song) ;LOAD SONG
MP_PlayV2M(0) ;0 START SOUND FROM THE BEGINNING
MP_SetVolumeV2M(1)
MP_GetMainVUV2M(@MainVULeft.f,@MainVURight.f)
;channel = -1
;Change = MP_GetChannelVUV2M(channel, @left.f, @right.f)
;Change = MP_GetChannelVUV2M(channel, @MainVULeft.f, @MainVURight.f)
;SetGadgetState(#ProgressBar_6,(Ch1VULeft + Ch1VURight)*20)
;:----------------------------------------------------------------------------------------
;:The plain Shader Code
;{
Vertex$ = "attribute vec3 position;"
Vertex$ + "attribute vec2 surfacePosAttrib;"
Vertex$ + "varying vec2 surfacePosition;"
Vertex$ + " void main() {"
Vertex$ + " surfacePosition = surfacePosAttrib;"
Vertex$ + " gl_Position = vec4( position, 1.0 );"
Vertex$ + " }"
Fragment$ = " #ifdef GL_ES " + Chr(10)
Fragment$ + " precision mediump float; " + Chr(10)
Fragment$ + " #endif " + Chr(10)
Fragment$ + " #extension GL_OES_standard_derivatives : enable " + Chr(10)
Fragment$ + " uniform float time; " + Chr(10)
Fragment$ + " uniform vec2 mouse; " + Chr(10)
Fragment$ + " uniform vec2 resolution; " + Chr(10)
Fragment$ + " const vec3 top = vec3(0.318, 0.831, 1.0); " + Chr(10)
Fragment$ + " const vec3 bottom = vec3(0.094, 0.141, 0.424); " + Chr(10)
Fragment$ + " const float widthFactor = 1.5; " + Chr(10)
Fragment$ + " #define iTime time " + Chr(10)
Fragment$ + " #define iResolution resolution " + Chr(10)
Fragment$ + " vec3 calcSine(vec2 uv, float speed, " + Chr(10)
Fragment$ + " float frequency, float amplitude, float shift, float offset, " + Chr(10)
Fragment$ + " vec3 color, float width, float exponent, bool dir) " + Chr(10)
Fragment$ + " { " + Chr(10)
Fragment$ + " float angle = iTime * speed * frequency *" + Change +"+(shift + uv.x) * 2.0; " + Chr(10)
Fragment$ + " float y = sin(angle) * amplitude + offset; " + Chr(10)
Fragment$ + " float clampY = clamp(0.0, y, y); " + Chr(10)
Fragment$ + " float diffY = y - uv.y; " + Chr(10)
Fragment$ + " float dsqr = distance(y, uv.y); " + Chr(10)
Fragment$ + " float scale = 1.0; " + Chr(10)
Fragment$ + " if(dir && diffY > 0.0) " + Chr(10)
Fragment$ + " { " + Chr(10)
Fragment$ + " dsqr = dsqr * 4.0; " + Chr(10)
Fragment$ + " } " + Chr(10)
Fragment$ + " else if(!dir && diffY < 0.0) " + Chr(10)
Fragment$ + " { " + Chr(10)
Fragment$ + " dsqr = dsqr * 4.0; " + Chr(10)
Fragment$ + " } " + Chr(10)
Fragment$ + " scale = pow(smoothstep(width * widthFactor, 0.0, dsqr), exponent); " + Chr(10)
Fragment$ + " return min(color * scale, color); " + Chr(10)
Fragment$ + " } " + Chr(10)
Fragment$ + " void mainImage( out vec4 fragColor, in vec2 fragCoord ) " + Chr(10)
Fragment$ + " { " + Chr(10)
Fragment$ + " vec2 uv = fragCoord.xy / iResolution.xy; " + Chr(10)
Fragment$ + " vec3 color = vec3(mix(bottom, top, uv.y)); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.2, 0.20, 0.2, 0.0, 0.5, vec3(0.3, 0.3, 0.3), 0.1, 15.0,false); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.4, 0.40, 0.15, 0.0, 0.5, vec3(0.3, 0.3, 0.3), 0.1, 17.0,false); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.3, 0.60, 0.15, 0.0, 0.5, vec3(0.3, 0.3, 0.3), 0.05, 23.0,false); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.1, 0.26, 0.07, 0.0, 0.3, vec3(0.3, 0.3, 0.3), 0.1, 17.0,true); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.3, 0.36, 0.07, 0.0, 0.3, vec3(0.3, 0.3, 0.3), 0.1, 17.0,true); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.5, 0.46, 0.07, 0.0, 0.3, vec3(0.3, 0.3, 0.3), 0.05, 23.0,true); " + Chr(10)
Fragment$ + " color += calcSine(uv, 0.2, 0.58, 0.05, 0.0, 0.3, vec3(0.3, 0.3, 0.3), 0.2, 15.0,true); " + Chr(10)
Fragment$ + " fragColor = vec4(color,1.0); " + Chr(10)
Fragment$ + " } " + Chr(10)
Fragment$ + " void main( void ) { " + Chr(10)
Fragment$ + " mainImage(gl_FragColor, gl_FragCoord.xy); " + Chr(10)
Fragment$ + " } " + Chr(10)
;}
CreateShader(1, Vertex$, Fragment$)
UseShader(1)
Repeat
Event = WindowEvent()
EventGadget = EventGadget()
Render_OpenGL()
;: LOOP FUNCTION V2M SOUND
If MP_IsPlayingV2M()
IsPlaying=1 ;CHECK IF SONG IS PLAYING
Else
EndOfTrackReached=1 ;IF SONG REACHED ITS END
MP_PlayV2M(0) ;0 STARTs SONG At THE BEGINNING
EndIf
Select Event
Case #WM_LBUTTONDOWN
If WindowMouseX(#Main) >= 0 And WindowMouseX(#Main) <= 640 And WindowMouseY(#Main) >= 0 And WindowMouseY(#Main) <= 61
SendMessage_(WindowID(#Main), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget_exit
End
EndSelect
EndSelect
;ESC END PROGRAM
If GetAsyncKeyState_(#VK_ESCAPE)
End
EndIf
Until Event = #PB_Event_CloseWindow
End







Hi there,
i subscribed in February 20, 2016 but i haven't written anything about me till now.
I'm coming from germany.
In the early 80th i got an c64 and i started coding gfx and animations on it.
Sadly i never had an Amiga.
In the beginning 90th i started to code on PC.
I studied IT and became a professional coder. My languages are VB.Net, C/ C++, C#. For hobby Blitz3D, BlitzMax, FreeBasic, PureBasic, C++ with SFML, OpenGL, DX9.
I want to code demos, cracktros keygens but i still train gfx effects ;-).
Best regards,
Spliffer

Will you be making this tool open source at some point? Just curious.
Anyway, I'll be looking forward to the initial release that produces usable code. It's looking to be a convenient little time saver.
I really like being able to adjust the various values and see how it looks so quickly and easily.
looking forward.. and yes, later it would be possible to export the settings into PureBasic SourceCode.