So did a bit of reading last night, based on what you have said your graphics is integrated - Vega 7. It is supposed to be half decent. Is this correct?
So you said the
water demo - this is the name of the indoor water demo, however what you describe with performance is more like the
collection demo which has the ocean
or the
terrain demo which also has water. For the water demo I get around 6 or 7 hundred fps whereas the other 2 I get around 2 hundred fps. Can you clarify which demo?
I have guessed its the terrain demo water based on your game project appears to have terrain? In any case using largish terrains might be whats causing the poor performance no matter which of any of the water demos if you set them up with a terrain.
For example, with the terrain demo uses a 1024 * 1024 image - that means the terrain itself is over 2 million triangles - 2 triangles per square tile, 1024*1024 point heights is 1023 rows/columns ie 1023*1023 tiles- over a million, so twice that as its 2 triangles per tile.
It also only has a split of 4 * 4 which is just 16 meshes so AppGameKit screen culling is not culling as many as it would if it had a 8 or 16 split size. I want to point out though that I may have changed my demo's so it may be less than a 1024 * 1024 size or more than 4 * 4 split when installed, you would have to check your own install. So over 2 million tri's per render - DOF enabled plus reflect and refract, well thats a whole lot of tris! Even if the height map was 512 * 512 it is still a lot of tris.
I have GTX750 card on my desktop PC with a dual core amd APU cpu.(I don't use it a lot my lappy specs are in my sig). First thing I noticed about your cpu is that it also is APU? A mate once told me they are more suited to office work than games. How true or relevant that actually is is up for debate! That said yours will poop on mine and then some lol! But the GPU according to benchmarks is comparable to a degree. From my attempt at "research" which is just google lol, well your integrated card is a rough equivalence to the nvidia mx250, when I looked at benchmark comparisons between that and my GTX750 mine did better on some things but not others, but which sites to trust info from I don't know.
Overall though I kept reading your machine is for good light gaming.
I mention the comparison because I can tell you I remember when I first tried the terrain/water demo with the GTX750 it too had fairly high frames overall but with drops as low as 45 fps at times. But it also did not surprise me because I know that terrains even slightly large that do not have culling or LOD optimizations are very expensive on performance because of the triangle total, especially when a full screen render is required more than once per frame.
There are things that can be done though for example ensuring my laptop
power plan is set for performance, having the accuracy value in the sync rate command set on with the frame rate uncapped, changing the split value to either 8 or 16 - just these things alone gets me from 190 to 200 fps all the way up to 245 to 255 fps.
Now your terrain in the project you posted has a short view distance always? If so you can hide all those terrain meshes in the distance that you don't see. Potentially that will give you massive performance increase. When I applied just a basic level of it to the terrain/water demo I found it was a large boost, obviously dependent on how far the view distance is set. Here is a crude version from when I first picked up AGK(just use images from shader pack):
SetSyncRate( 60,0 )
SetVirtualResolution( 1024, 768 )
SetScissor(0,0,0,0)
va=CreateVector3()
vb=CreateVector3()
terrworldsize#=2000.0
terrworldheight#=100.0
split#=32.0
splitsz#=terrworldsize#/split#
centeroff#=splitsz#/2.0
distfar#=terrworldsize#/4
SetSkyBoxVisible( 1 )
SetGenerateMipmaps(1)
LoadImage( 1, "detail.png" )
SetImageWrapU( 1, 1 )
SetImageWrapV( 1, 1 )
CreateObjectFromHeightMap( 1, "terr1024.png", terrworldsize#, terrworldheight#, terrworldsize#, 0, split# )
res=GetImageSizeFromFile( "terr1024.png" )
SetObjectImage( 1, 1, 0 )
SetObjectUVScale( 1, 0, res, res)
addvirtualbutton( 1, GetScreenBoundsRight()-45,GetScreenBoundsBottom()-45,80 )
addvirtualbutton( 2, GetScreenBoundsRight()-45,GetScreenBoundsBottom()-130,80 )
addvirtualbutton( 3, GetScreenBoundsLeft()+45,GetScreenBoundsBottom()-45,80 )
SetCameraPosition(1, terrworldsize#/2, terrworldheight#*1.5, terrworldsize#/2)
SetCameraLookAt( 1, 0,0,0,0 )
do
speed# = 1.0
if ( GetRawKeyState( 16 ) ) then speed# = 0.1
if ( cameraMode = 1 ) then speed# = 0.25
if ( GetRawKeyState( 87 ) ) then MoveCameraLocalZ( 1, speed# )
if ( GetRawKeyState( 83 ) ) then MoveCameraLocalZ( 1, -speed# )
if ( GetRawKeyState( 65 ) ) then MoveCameraLocalX( 1, -speed# )
if ( GetRawKeyState( 68 ) ) then MoveCameraLocalX( 1, speed# )
if ( GetRawKeyState( 81 ) ) then MoveCameraLocalY( 1, -speed# )
if ( GetRawKeyState( 69 ) ) then MoveCameraLocalY( 1, speed# )
if ( getvirtualbuttonstate(1) = 1 ) then MoveCameraLocalZ( 1, -speed# )
if ( getvirtualbuttonstate(2) = 1 ) then MoveCameraLocalZ( 1, speed# )
if ( GetPointerPressed() )
startx# = GetPointerX()
starty# = GetPointerY()
angx# = GetCameraAngleX(1)
angy# = GetCameraAngleY(1)
pressed = 1
endif
if ( GetPointerState() = 1 )
fDiffX# = (GetPointerX() - startx#)/4.0
fDiffY# = (GetPointerY() - starty#)/4.0
newX# = angx# + fDiffY#
if ( newX# > 89 ) then newX# = 89
if ( newX# < -89 ) then newX# = -89
SetCameraRotation( 1, newX#, angy# + fDiffX#, 0 )
endif
if ( GetVirtualButtonPressed(3) = 1 ) then cameraMode = 1-cameraMode
if ( cameraMode = 1 )
x# = GetCameraX(1)
z# = GetCameraZ(1)
SetCameraPosition( 1, x#, GetObjectHeightMapHeight(1,x#,z#)+0.5, z# )
endif
gosub targets
Print( "FPS: " + str(ScreenFPS(),1) )
Sync()
loop
targets:
xid=0
zid=0
for x= 1 to split#
tgtx#=x*splitsz#-centeroff#
xid=xid+1
for z= 1 to split#
zid=split#-z
meshid=xid+(zid*split#)
tgtz#=z*splitsz#-centeroff#
gosub dist#
if distance#>distfar#
SetObjectMeshVisible(1,meshid,0)
else
SetObjectMeshVisible(1,meshid,1)
endif
next z
next x
return
dist#:
SetVector3(va,tgtx#,0.0,tgtz#)
SetVector3(vb,GetCameraX(1),0.0,GetCameraZ(1))
distance#=GetVector3Distance(va,vb)
return
Win 10 Home 64, Intel(R) Core(TM) i5-10300H, 8GB DDR4, NVidia GeForce GTX 1650 4GB GDDR6