#engine-source
1 messages ยท Page 24 of 1
I mean
Cache is shared per project
before it was different projects too
maybe it breaks when you have 2 installs of the same engine version?
let's try opening that one again then
Actually now that you say it that's the issue I have too
4.19 vs 4.19-texture arrays
well hope it's not going to take another 3 months before the next update to va

this seems like the kind of bug deserving a hotfix

Hehe
I wonder if it's because it's fucking up the symbols
so now it's far slower because there's already 1 million things in the cache
omg it's still going
Usually takes around 5 mins for me
it finished
so I have 3 test solutions now
the action rpg thing using launcher 4.20
my project on 4.19
and 4.20 source build
the first 2 are not fucked up
after parsing all 3
the 4.20 source build has loaded the symbols of the action rpg solution
well
the engine parts of it
not the project symbols
is there a simple way to disable building a project with source build building the shader compiler every single time? kind of pointless
@elder falcon Launch your project directly from its .uproject shortcut. That shader compiler not built warning happens almost every time and isn't accurate, you could also check the box to not show it again when it appears if you still want to launch your game through VS (although not recommended as it's prone to crash frequently).
not warning, every time you build a project using a source build in vs it first builds the shader compiler (and after 2 seconds figures out it doesn't need to be built since it already is)
while installing prerequisites for source 4.20, it restarted my pc O_o
never happened before
I can't load any maps in 4.20 - stuck at 75% - or even make my own besides the default one that I have. Is anyone else experiencing an issue like this?
@next mason maybe its shader compilation? I'd check logs
my PC also restarted while installing prequisites ๐ค
same here
problem here. the following code in .Build.cs now produces an error:
PublicIncludePaths.AddRange(
new string[] {
"VaRestPlugin",
"VaRestPlugin/Public"
// ... add public include paths required here ...
});
it now thinks this path is supposed to be pointing to engine and not to project, which is wrong:
https://i.gyazo.com/e87ee1f82edf33bf2767ba361293cb27.png
4.20 is broken... every time I add a new file to my project, regen project files and attempt to build this happens: https://i.imgur.com/Rvqit88.png
why does UE4 restart my PC while installing prequisites???
does anybody know what loberoughness changed to in the source shaders?
why does UE4 restart my PC while installing prequisites??? because windows...
Anyone here using VS2015 with, say, 4.19?
According to the docs here https://docs.unrealengine.com/en-us/Programming/Development/VisualStudioSetup you should use VS2017 for 4.15+.
Just curious why, and if there's any easy way to get 4.19 source and VS2015 to play nice.
Afaict, so long as VS2015's updated to update 3 it should work fine.
it should work fine. I'm wondering if I can use clang and vulkan for everything . why use directx and visual studio at all?
What's the biggest impact of building from source over the binary build?
With windows I'm building with source because spatialos requires it. With Linux you have to build ue4 from source.
Hi guys, I have a problem where the WorldGridMaterial.uasset is failing to get recompiled when trying to start the editor. This happens after an upgrade from 4.14 to 4.17. What can I do to solve this?
had to install new visual studio for 4.20 and everything works fine. But my older projects on 4.19 won't build now
anyone had this?
somehow both old and new winsdk are being used?
looks like you didn't install the VS modules for C++ and Windows development
they are now optional. just installing VS is no longer sufficient
go to Start Menu -> Apps and Features -> Visual Studio -> Modify
select and install the additional components
if you're building some of the C# programs, you'll need the C# component, too
i simply updated VS2017 and I am building 4.20 engine and 4.20 projects fine
what i can't build is 4.19 projects now
so I don't think it can be VS modules?
what it looks like is two versions of winsdk being included into build paths
and conflicting
@stable hemlock I had to revert my project back to 4.19 as well, and I'm also stuck unable to build. My error is different than yours, but maybe related
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\INCLUDE\vcruntime_new.h(67): error C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
2>UnrealBuildTool : error : UBT ERROR: Failed to produce item: F:\ue_project_buffer\ProESports\Binaries\Win64\ProESportsClient.pdb
2>Total build time: 6.82 seconds (Local executor: 0.00 seconds)
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(44,5): error MSB3075: The command "C:\ue\419-UETOPIA\Engine\Build\BatchFiles\Build.bat ProESportsClient Win64 Development "F:\ue_project_buffer\ProESports\ProESports.uproject" -WaitMutex -FromMsBuild" exited with code 5. Please verify that you have sufficient rights to run this command.
2>Done building project "ProESports.vcxproj" -- FAILED.
Any idea what would cause this to suddenly happen? Before the 4.20 update, this was working.
@wanton tartan i solved it by regererating project files for the engine, rebuilding it, then clearing out intermediate etc in the project, and rebuilding the project from scratch
Some coworkers will be switching over to UE4 from Unity versions that only support vs2015. Since they're using paid versions of VS, they'd like to keep just one VS (2015) installed.
Assuming it's not much work, could anyone here give me some heads-up on what changes need to be made to get 4.20 to work with vs2015?
I've only got 2017 installed, so can't reproduce the issue and figure out what needs to be done to fix it without installing 2015.
For 4.17~4.19 only thing I could find is disabling squiggles and disabling errors from showing in the error list. Wondering what else needs to be done for 4.20
Look at this post above made by : "kusokuso1 - Last Friday at 3:21 AM
Afaict, so long as VS2015's updated to update 3 it should work fine." @formal flower
Just confirm it worked with that user I compiled with 17 and clang 5 for linux
Oh wait sorry he did 4.19
ya you can do it 2015 update 3
"Visual Studio 2015 is still being supported, but requires some configuration. Additionally, weโve added support for the Windows 10 SDK. " it say's it half way down the page
@unborn bay Thanks. Ah, that's actually my other, work account. Sorry for the confusion.
Ah cool. Thanks. I wonder what they mean by configuration. Wonder if it's just the squiggles and the error log stuff. I'll dig around for that. Thanks a lot!
I don't se what version of Windows 10 SDK check with microsoft i guess
I have 4.19, 4.20 from the launcher, and a clone of each branch. I've been able to build my projects accordingly. Have you built the engine itself in the past or are you using the Game Launcher?
hello, could you please help with understanding how and where in the source the unreal c++ becomes javascript for HTML5?
it's not trivial to generate a flow chart, I suggest looking at a simple example with emscriptem
note date, it may be stale
p sure it uses webassembly and never "becomes javascript" ?
@elder falcon thank you, and where can I find the webassembly, please? I mean, for instance, there is the c++ code for the Media module, but where is the webassembly for that?
@hollow kernel VS2015 is still default option for 4.19 when building from source
(and yes, it works just fine)
for 4.20, VS2015 works as well (I compiled once with it) but issues arise when you haven't yet set VS2015 as default compiler and UE4 tries to compile things on VS2017 on c++ game projects
in my case it corrupted the whole engine build so badly that even rebuild couldn't fix it
it's kinda silly that UBT can't detect what the engine was compiled with before it stuffs everything to the default compiler
@stable mantle It's transcompilers
Basically translating C++ to webassembly
Or smthg like that
ah, a I see, thank you @spiral mortar I still don't have a clue on how to get media (both video and sound) in HTML5 ๐
@spiral mortar its a LLVM backend
ue4 already supports LLVM for PS4 and switch, so they essentially switch the backend layer to generate webasm instead of ps4 machine code
ive tried to experiment a bit with that stuff myself. Its super interesting to be able to compile code for the web. Sadly you are quite limited in a few things
for example, no threading whatsoever
wich fucks extremelly hard with any kind of asset loading
what would be truly interesting, is webasm in ue4 for game scripting
that would allow nearly every lenguage you want to compile for ue4 on scripting
no
there is some LLVM IR to C
but its like beyondhorrible C, and i think that backend is near abandoned if not fully abandoned
Right indeed
main issue is that LLVM IR is more low level than C
so there are a bunch of things that are very complicated to translate
Ah?
and they are weird as balls chips
Right lol
at the moment there doesnt seem to be a proper "embeddable JIT" for webasm
but if a popular one appears, having that in UE4 would be pure gold
i would love to be able to use Dlang or Rust on UE4
Interesting
I don't get it though
and its like "c++ but done sanely"
Can't you do that already
no
it does compile to LLVM
there are 2 compilers
there is one compiler that goes straight to machine code, and an LLVM compiler
Ok
also Jai i think (the jonathan blow lenguage)
Well can't you use that then?
Well idk
clusterfuck of epic proportions
But it's IR in the end
Soooo
๐
Like if you use the USmthg stuff as annotations
You could generate bindings or smthg
isnt that what the python backend does?
is there a place in the code that is called every time a new map is loading no matter what the travel method is?
im trying to call an event in gameinstance from there to trigger a load screen
@brisk silo and @spiral mortar thank you and sorry for the LLVM naive question. As far as I understood you, the C++ gets complied to a sorte of almost machine code that runs on the browser? If so, would it be feasible to integrate, for instance, media element (https://www.mediaelementjs.com/) by getting it's machine code for, lets say, video playing, and putting it somehow in the UE4 web compilation? Still, I am confused about how c++ becomes javascript. I can't visualise where this happens in the dource code
*source code
@stable mantle it doesn't happen in the source code
When you compile for Windows/Linux/OSX you use a compiler (MSVC/clang)
Here you use a compiler too that outputs webassembly
So I'm not sure you can do what you want with that js thing, the same way you can't really add assembly directly to C++ code
i see, thank you
the only option I find then is to edit directly the javascript on the html file of the deployment?
use <video> etc tags in a smart way?
maybe communicate between JS and C++ when necessary to make it work?
I have a videotexture on the Unreal side. I have already the communicating functions between c++ and JS... I dont know if I can add a video with mediaelement.js on the JS side and then send iit to the material on the C++ side.. and even if I managed to do so.. how could I avoid the massive copying of data? I mean, could I "send the video" through the functions without duplicating its data?
I don't know anything about that ๐ค
But pretty sure you can already do that in UE directly?
yes, I also have that feeling, it doesn't make sense.. everything works, the Media framework is beautifully coded... am I missing some detail maybe and that's why I cant get my videos to play on HTML5 deploy?
also, the new audio framework... its beatiful.. but I can't get the sounds on the HTLM5 deployment too
I dont even know what to upt in HTLM5Engine.ini to get the new audio framework
*what to put
already did, no answers yet ๐ข
I make the download from github the unreal engine 4.19.2 and now i want upgrade my engine to New version its possibel upgrade to New version i dont want do everytime the New version its realese
I download from github the file in rar i think
please keep it to english on public channels
if you want to talk in native language, take it to DMs
@stable mantle i think to make a dedicad server i need use the engine by the source
ah, sorry, maybe, I don't know, I have no idea about server stuph
this kinda pains me
occasionally when I do clean reset (wipe all files from git folder expect .git and do "git reset --hard HEAD"), I still get some modified files once it's done
I think it's a result for UE4 repo automatically fetching stuff on reset
this is typical result then: ```
D:\Dev\UnrealEngine>git status
On branch 4.20-GameWorks
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Templates/TP_Flying/Config/DefaultInput.ini
modified: Templates/TP_ThirdPersonBP/TP_ThirdPersonBP.uproject```
I have no idea why those two template files get modified
when I look at the diffs, they are just same files with everything added again, leading me to think it's some char encoding diff
it's probably some issue originating from the nvidia gameworks repos tho
what's even more funny, that goes away if you just call "git checkout" and "git reset --hard HEAD" like 2 times in a series, just once will not make it go away ๐
there probably isn't any app or way out there where one could directly modify the files through the commit data? like edit the commit lines directly?
I'd need to get half of the changes from one commit into another commit, it would be dead simple if I could just cherry pick the actual linechanges ๐
having to go through actual files will make it tedious
the solution to this is git -clean right ๐ค
git clean -fd ๐
I use that sometimes too but the issue with that when using UE4 is that it wipes some dependencies as well
so then you need to run setup again and then you might get those same issues back
if this were plain basic git repo, issues like these wouldn't exist (if you are talking about the screenshot I posted)
it all originates from having to use these automated tools that download x amount of files from remote places
hmmm, apparently you can do commit splits
anyone found a fix for this type of crash? [File:E:\\GB\\Engine\\Source\\Runtime\\Windows\\D3D11RHI\\Private\\D3D11Util.cpp] [Line: 182] Unreal Engine is exiting due to D3D device being lost. (Error: 0x887A0006 - 'HUNG')"
That was a bigggg issue in 4.14. Later versions reduced the chance of that happening but i'd also suggest updating your GPU drivers if you haven't already @lavish topaz
@ocean inlet we are on 4.19 and I myself cannot replicate this but we get probably 100 crash reports a day from this with NVIDIA devices or integrated intel graphics
Hmm, drivers all up to date?
Might be worth enabling Nvidia aftermath to track down the actual cause (if you haven't already)
https://www.unrealengine.com/en-US/blog/tracking-down-gpu-hangs-with-nvidia-aftermath-and-4-15-2
https://docs.unrealengine.com/en-us/Engine/Rendering/Nvidia/NVIDIAAftermath
https://issues.unrealengine.com/issue/UE-51650
It is one of the top rated issues and until recently 4.20 was the target fix, they changed it last minute which kind of sucks.
Hello every one guys, thx for helping. Sry, for my english it's not my mother tongue language. I start learning unreal engine 4 and try to write simple dialoge system. In tutorial what i'm learning all lesson will present for me using .csv file created by excel. But when i create structure and try import .csv file just drop to me exception expected column "" not found in input. Thx for any helping
what a kind of problem it will be?
so i just did the mother of all hacks
and implemented a skip ticking behavior on the TickFunction, the core one
i will have every actor tick at half framerate except the VR hands and head
@brisk silo neat lol
still compiling
Isn't there a way to do it without engine change?
Using the actor tick parameters or smthg
you could use the already built in tick time thing
but i wanted to have code that very specifically ticks only 1 out of every N ticks
and its randomized
i mean, randomized as offset
so not all actors tick at once
I see
50% tick on even, and 50% tick on odd
i did that on the characters and it was an upgrade
im now checking if it can be done on EVERYTHING by default
except the player hands
So a bit like checkerboard rendering
yes
I guess you're calling with a different Delta time etc
Ah
if its one out of every 4 frames, then it gets a x4
thats fine becouse im completely vsynced, being vr
Shouldn't you store it?
so its basically locked framerate
i did 30 fps characters running in the 120 fps game and worked great
but when they got close to you you would see them jitter lol
๐
it works
a reduction of 20 something percent
tick times are lowered from 8-9 to 6-7
Nice!
gonna see if i can lower animations too
Which actors were ticking?
And couldn't use timers instead?
no
Well a timer executing every 2 frames
sadly (and this is a fucking pain) debugging this is super hard
becouse its on Release
Right
I see
gonna now split it on the different tick sections
Doesn't work when you have lots of counters though
Oh right
and if i forced it, it would slow down stuff
stat unit is also worthless even if that one does work. Its not very accurate
Stat stuff is per frame right?
Always kinda hard to understand the stats when doing multithreaded stuff
damn this is interesting
very interesting
this is a perf capture in pc
from stat tickgroups
pre-physics 3 ms, duringphysics (ai) 1 ms
meanwhile on ps4
first number is "pre physics", then "during physics", then" after physics", and then"all"
times since the first clock
you can see how instead of a 3 to 1 ratio, its like 95% + on pre-physics
nativization + release optimizations
also this puts clear the power differential...
ps4 why you so trash
might be benchmarking wrong tho
What's pre/during/post physics?
the tick groups
Oh
but i think there is a flaw on the benchmark code, im only grabbing the last world
wich might be why the numbers beetween the first and the last are so close
not being able to run the stat startfile stuff is pain
Isn't ps4 CPU being 3 times slower than a PC one expected?
also, 3 ms tick time vs 8 ms tick time on a unoptimized editor build vs a release build
Single core performance that is
Which CPU?
So not amazing single core perf
its barely a few things moving come on
no
Cuz release
Can't you do a debug build?
Ah
the logging makes it not accurate
i wanted to use the ps4 profiling tools
but turns out that the sdk is not compatible properly so it doesnt work
maybe when i upgrade to 4.20 it works
lol
so the only profiling tools i get are a random sampler (not accurate whatsoever) and a "thread view"
wich of course tells me about the main thread but thats it XD
ok this are much better numbers
again, its pre-during-post physics, and 4th number is "total tick time"
What did you do? Rebooted the PS4?
no, i fixed the code
yes
So the old "change it til it looks good"
fuck GC
blue is the FPS
red is "time tillframe finished", wich jitters for some reason. But its perfectly fine
Hehe
seems like the RNG ticking throws the frames a bit more
it doesnt have this much jitter without the rng physics or at less FPS
but becouse im at the absolute fucking limit (and also the only madmen in the world doing 120 fps on ue4) then i guess it makes sense
That must be hard to use
mostly for bragging purposes, really
Holy
will be neat for portfolio
Indeed
im not kidding with the "only shooter at 120 fps"
also the only game using either unity or ue4 at 120 fps
Does UE use stuff like checkerboard rendering?
no
Would be useful here right?
nope
Or you are CPU bound
Gradient resolution?
the edges run at lower resolution than the center
Neat
mostly just bullets and some FX
i think epic should provide an option to use "lower overhead" stats
that work on release game with optimizations
maybe something like Stat tickables and other "very common" ones
not the deep absolutely everything ones
Like only enabling the one you need?
more or less
Stats overhead is really that high?
huge
specially when recording (stat startfile)
in PC, the overhead is not that big
but on console?? holy shit
literally halving the fps
running the game at LITERALLY 30 FPS is not very worth for stats
you also cant rely on it too much. The stats kind of modify the code flow a bit, so you cant rely 100% on them
ive found that they can be not as true as you would think
they do give a good idea tho
specially on Pc
I guess those 4 MB of cache get easily trashed too
the half framerate tricks only really work for 120 fps tho
in pc, 90 fps, it would cut to 45
wich can probably be choppy
but if you use them as LOD... ๐ค
i think thats what Epic does
So the psvr is 120 Hz?
it is
most games run at 60 fps and reproject to 120
a bit like how oculus and vive run at 45 fps and reproject to 90 when they cant reach 90 fps
lol
sony wanted to cheap out and use the camera they already had
and surprise
turns out a 6 year old camera, cheap camera, isnt up to the task
Hehe
Is that bad?
yes
its really fucking bad
the hand controllers, the moves, are also really bad
becouse they wrent designed for vr
so they arent up to the task, again
meanwhile WindowsMR headsets cost less than a psvr + hand controllers
and are better in absolutely every metric
in the us
sony cheaped up REALLY hard
hand controllers and camera are from the overstock they had from when they went to compete against the wii
btw, just upgraded the frame skipper
now it affects components
including particle systems
so particles now also run at half framerate
yeah 60 fps particles are still perfect
keep in mind the important part. graphics, and hand controllers/head do run at 120
i will combine with with the significance manager to have framerate LOD
have the enemies update at 30 fps in the distance,and make the ones close to you 120
the downside of the rng system
it obviously doesnt balance perfectly, so the frames spike up/down a bit
anyone have a hacky way of forcing a runtime reset of Input.ini and reloading it?
reduced spikiness
turns out i was being a fucking idiot
and didnt randomize the components half-tick.
so essentially on every Odd frame, every single component ticked (all anims, all fx, etc). Then on every Even frame, nothing ticked
lol
does any knows where is -Port= parsed from command line. I ran into a interesting problem where ue4 treats -something_port=1337 as game port (-port=). That's really annoying
wtf is this
so there are at least 2 more branches not mirrored in github, dev-physics and dev-destruction
does anyone know what apeiron is
it looks like apeiron is some kind of physics engine?
and now another abstraction layer has been added so you can switch between physx and that?
huh
so epic wrote their own physics engine?
There is a KOTOR remake called Apeiron, which is being done in UE4.
that is not it
a custom physics engine, called apeiron, was added with that commit above
was about to comment what jarno said lol
but it's a weird physics engine that doesn't support scene queries
maybe its the rumored physx deterministic mode coming to ue4 eventually
whatever it is, its not trademarked in the us
The UE4 crash popup thing (send report etc) doesn't launch after a crash when you start the editor in VS by debugging (F5), is this normal?
Yes cuz it's annoying
Having crashes loose in the engine because of that seems annoying too. ๐
@runic laurel Why because of that?
Because you would have to send a bug report and include the crash files (if it's an engine crash and not your own messup), that seems a lot more annoying than just writing some lines and clicking send.
Plus it probably ends up in a different place on the Epic side so that isn't great either.
If you're debugging it's 99% of the time a crash due to you
- I have some doubts about the percentage of bug reported through this tool epic actually look into
you're building release branch?
does anyone know how i can find where this was fixed in the fix commit linked?
https://issues.unrealengine.com/issue/UE-54135
i want to add it to 4.19
you can't
your only chance is for someone with perforce access to post what that single fix is
i think i may have actually found it
I think someone asked for this exact issue a while back and someone posted it
fucking lol
vulkan confirmed
this is very good
if they are using vulkan in fortnite we can expect mayor gains on it
FORTNITE SPECIFIC DO NOT MERGE TO ENGINE PLS -> lol
so, got this now cpp C:\Dev\UnrealEngine\Engine\Plugins\GameWorks\Flex\Intermediate\Build\Win64\UE4Editor\Development\Flex\UE4Editor-Flex.suppressed.exp 2>Module.Flex.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl UStaticMesh::IsPostLoadThreadSafe(void)const " (?IsPostLoadThreadSafe@UStaticMesh@@UEBA_NXZ) 2>Module.Flex.gen.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl UStaticMesh::IsPostLoadThreadSafe(void)const " (?IsPostLoadThreadSafe@UStaticMesh@@UEBA_NXZ) 2>Module.Flex.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl UParticleEmitter::Serialize(class FArchive &)" (?Serialize@UParticleEmitter@@UEAAXAEAVFArchive@@@Z) 2>Module.Flex.gen.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl UParticleEmitter::Serialize(class FArchive &)" (?Serialize@UParticleEmitter@@UEAAXAEAVFArchive@@@Z) 2>Module.Flex.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl UParticleEmitter::IsPostLoadThreadSafe(void)const " (?IsPostLoadThreadSafe@UParticleEmitter@@UEBA_NXZ)
@low dust linking errors, check that your modules are setup correctly
what's weird tho is that I have both CoreUObject and Engine in the Build.cs and even further, the code I have doesn't even have IsPostLoadThreadSafe overridden/called
I've checked, but I'm still missing something
Sure it's not called through header only engine functions?
don't get me wrong, it's still most likely issue on the modules build.cs
I checked the whole git commit, there's no line of code that mentions change to that
C++ ๐
Try putting all the modules as dependencies
UStaticMesh belongs to Engine module btw
and IsPostLoadThreadSafe is derived from UObject that belongs to CoreUObject
both Engine and CoreUObject are included tho
I'm good at locating issues when compiler pinpoints them to me, I hate linker issues ๐
That being said that's an engine plugin -> full rebuild IIRC
do I need to regen the UE4 sln for build.cs changes?
No
I'm pretty sure it picked the changes before
it does throw error then
๐
I'll check some random engine plugins build.cs and compare the changes between 4.19 and 4.20, maybe I spot some change there
I think I found it @low dust
?
hmmmm
wonder where it is on 4.19
it's not on that class
so they've added the override on 4.20
that would explain
but why ๐
So somehow there was ENGINE_API all around
And they didn't thought it would be useful to add it
well, since this is a custom engine, I can just modify that line ๐
it's not cheating if it works
hehe
but yeah, testing it now, thanks ๐
I did spot the line but didn't think further about it, thinking it was there always
I guess the other one is similar?
but once you mentioned, it indeed wasn't in the 4.19
could be related to this, will see
@low dust are you chinese ?
you should see the hacks I've made to this gameworks merge already
I just want this to compile, it's not always pretty
ยฏ_(ใ)_/ยฏ
my favorite new hack on this merge is this:
descD3D12->commandQueueFence = GetCommandListManager().GetFence().GetFenceCore(0)->GetFence(); //hacked this to always use GPU index 0, needs a proper fix!```
they added gpu indices on DX12 RHI
to fix it properly, I'd need to understand what they even do there first
lol
I still do this as well ๐ cpp +#if 1//WITH_FLEX
somehow, there's some engine module that doesn't get WITH_FLEX
lol
I think one would need to inject the dependency there
but if I do that, it creates a huge mess
people who use this want all techs included so it's not really a huge issue
that issue remains even with the nvidias official flex branch
Yeah what's the point of using a custom engine if it's to disable the custom stuff in the end
btw
that StaticMesh.h change I now did
it's in Engine module
guess what happens on build now ๐
Fun?
I guess I'll wait for an hour to see if it cured anything
aka as recompile?
I only do UE4 work nowadays if I'm procrastinating and not wanting to focus on something I should
this kinda helps there ๐
plenty of time to wait
Or AMD, say that you're a know UE4 contributor and that you'll promote them
First on the list 
heh, ask AMD so I can build Nvidia stuff
lol indeed
I don't mind waiting for a build, but the annoying fact is that it most of the time makes my computer unusable
same
there was some settings you could tweak for that but in my brief testing it only made compiles slower and computer was still unresponsive ๐
for some reason, I can use discord fine
Lucky you
but command line shell and browser freezes
ftw
they took this into account in past as you can change the app prio from task manager
but it's useless when you use build tools that spawn new processes all the time
Right lol
you can conf UE4 to use lower prio by default
there's a setting for that
hmmm
it's below normal by default
wonder if there's any lower value for that even
basically you can take those things from "engine changes" and alter them in opposite direction
ah, so one could set UE4 building to ActionProcess.PriorityClass = ProcessPriorityClass.Lowest;
yeah, that might be a good idea
Is there much softwares that are as long to compile as UE?
cryengine wasn't that bad when I used it but it didn't ship with editor code back then
it was like 1/3 of UE4 build time for whole engine
Kinda like UE 4.0 from what I've heard
hehe
btw
virtual void Serialize(FArchive& Ar)override;
virtual bool IsPostLoadThreadSafe() const override;```
those are the particle things
they are missing the ENGINE_API as well
same deal, everything else around these are wrapped with them ๐
once this actually builds, I have to make a new branch and properly clean this stuff up
simple git rebase will not work anymore
it's easier to just cherry pick and squash these than resolve all conflicts from rebase
@low dust VR Flow ?
hmm
it's nvidias fluid sim
yeah, VRWorks and my generic merges are not happening ๐
first of all, I'd need VR gear to test
secondly, many of the gameworks tech mess with the same places on the renderer, bringing complex conflicts on the code
I wouldn't put things like VRWorks and VXGI on the same build for example
yeah ๐
I'm sure VRWorks could work with Blast, Flow and Flex
I'm secretely hoping for a VRWorks VXGI2.0 build though
not gonna happen anytime soon
probably never
unless you find a passionate community member to do it
but it doesn't make much sense
is blast gonna make it into an official release?
any news re. the new voxel pipeline
voxel pipeline?
gvdb
wha voxel pipeline
No GVDB
I'm pretty sure UE4 has to get Blast soon
Apex Destruction is deprecated already
it's last Apex piece that hasn't been replace on official UE4 builds
doesnt appear to be on the trello roadmap
it doesn't really require that much from Epic's side, it's more of when they feel it's good time to switch
nvidia's integration is fairly polished already
nvidia also got some of the blast's engine changes into UE4 mainline already
it still requires some small changes but majority of things are now contained in the blast plugin itself
sounds good
i guess it wouldnt necessarily be a roadmap issue either, due to being a plugin and all
hmmmm, now getting these cpp 2>Module.Flex.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class TUniformBufferRef<class FSceneTexturesUniformParameters> __cdecl CreateSceneTextureUniformBufferSingleDraw<class FRHICommandList>(class FRHICommandList &,enum ESceneTextureSetupMode,enum ERHIFeatureLevel::Type)" (__imp_??$CreateSceneTextureUniformBufferSingleDraw@VFRHICommandList@@@@YA?AV?$TUniformBufferRef@VFSceneTexturesUniformParameters@@@@AEAVFRHICommandList@@W4ESceneTextureSetupMode@@W4Type@ERHIFeatureLevel@@@Z) referenced in function "public: void __cdecl FSceneTextureShaderParameters::Set<class FRHIPixelShader *,class FRHICommandList>(class FRHICommandList &,class FRHIPixelShader * const &,enum ERHIFeatureLevel::Type,enum ESceneTextureSetupMode)const " (??$Set@PEAVFRHIPixelShader@@VFRHICommandList@@@FSceneTextureShaderParameters@@QEBAXAEAVFRHICommandList@@AEBQEAVFRHIPixelShader@@W4Type@ERHIFeatureLevel@@W4ESceneTextureSetupMode@@@Z)
CreateSceneTextureUniformBufferSingleDraw is new as well
template< typename TRHICmdList >
RENDERER_API TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList& RHICmdList, ESceneTextureSetupMode SceneTextureSetupMode, ERHIFeatureLevel::Type FeatureLevel);```
@low dust Exporting tempates from dlls gets confusing. You have that module specified as a dependency, yeah?
@gloomy hamlet yes
tried adding Renderer into PublicDependencyModuleNames and PrivateDependencyModuleNames on both Flex.build and Flex.Editor.Build.cs
Is there an example of that method being used anywhere else in the engine, outside the renderer module?
If not then it could be that it's not properly exported despite the macro, probably because it's a template.
I need to dig down where this is on 4.19
this is something I hate about github seach
it only works for the main branch
and I don't have 4.19 solution on drive atm
Heading out now, I can take a look once I'm back if you haven't solved it.
this is only ref outside Renderer module https://github.com/EpicGames/UnrealEngine/blob/f509bb2d6c62806882d9a10476f3654cf1ee0634/Engine/Source/Runtime/Landscape/Private/LandscapeGrass.cpp#L232
and even that's commented out
//TUniformBufferRef<FSceneTexturesUniformParameters> SceneTexturePassUniformBuffer = CreateSceneTextureUniformBufferSingleDraw(RHICmdList, ESceneTextureSetupMode::None, View.FeatureLevel);```
ah, thanks
Wait CreateSceneTextureUniformBufferSingleDraw is defined in a cpp?
Yeah won't work
that was a header which I linked
It's a template so it needs to be header only if not in the same compilation unit
AFAIK
It's not anymore at least
this is on header: ```cpp
template< typename TRHICmdList >
RENDERER_API TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList& RHICmdList, ESceneTextureSetupMode SceneTextureSetupMode, ERHIFeatureLevel::Type FeatureLevel);
this is on cpp: ```cpp
template< typename TRHICmdList >
TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList& RHICmdList, ESceneTextureSetupMode SceneTextureSetupMode, ERHIFeatureLevel::Type FeatureLevel)
{
FSceneRenderTargets& SceneContext = FSceneRenderTargets::Get(RHICmdList);
FSceneTexturesUniformParameters SceneTextureParameters;
SetupSceneTextureUniformParameters(SceneContext, FeatureLevel, SceneTextureSetupMode, SceneTextureParameters);
return TUniformBufferRef<FSceneTexturesUniformParameters>::CreateUniformBufferImmediate(SceneTextureParameters, UniformBuffer_SingleDraw);
}
#define IMPLEMENT_CreateSceneTextureUniformBuffer( TRHICmdList ) \
template TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw< TRHICmdList >(\
TRHICmdList& RHICmdList, \
ESceneTextureSetupMode SceneTextureSetupMode, \
ERHIFeatureLevel::Type FeatureLevel \
);```
I'll see if I can more all that into header only without having to bring too many dependencies over
then again, I really start to wonder why does this even exist in the engine code if a) you can't use it b) nothing uses it ๐
I guess it might work from project side
@low dust Works in the same module
yeah, but nothing in the module actually uses it...
oh wait, something does use it
but it's within the module
well it compiled now
moved the whole template to header side
still need to figure what to do with those defines, I just commented them out to see if it would build
if I keep them, I get cpp (2789): error C2893: Failed to specialize function template 'TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw(TRHICmdList &,ESceneTextureSetupMode,ERHIFeatureLevel::Type)' (2789): note: With the following template arguments: (2789): note: 'TRHICmdList=FRHICommandList'
In general, the way to resolve a C2893 error is to review the function's signature and make sure you can instantiate every type. ```
well, it seems to accept this now on the cpp side cpp #define IMPLEMENT_CreateSceneTextureUniformBuffer( TRHICmdList ) \ template< typename TRHICmdList > TUniformBufferRef<FSceneTexturesUniformParameters> CreateSceneTextureUniformBufferSingleDraw< TRHICmdList >(\ TRHICmdList& RHICmdList, \ ESceneTextureSetupMode SceneTextureSetupMode, \ ERHIFeatureLevel::Type FeatureLevel \ );, I moved the actual implementation into header and put it inline
/ I have no idea what I'm doing but it seems to work
this is basically all I did
I still don't get why it didn't link the original code properly
shouldn't the linker include the module once you put it into build.cs?
I still expect this to crash and burn once I get engine up after shader compilation ๐
not necessarily because these changes but I upgraded 3 gameworks techs at once from 4.19 to 4.20, could be lots of small things I've missed
I usually do these one by one so it's easier to catch potential issues but I don't really have time / patience to wait for all that recompilation
@low dust @spiral mortar So, it is possible to define a template in a .cpp and use it elsewhere, but it needs to be explicitly instantiated.
That #define IMPLEMENT_ is the explicit instantiation.
maybe they had some further use for the internally
nothing in the engine itself uses those
Which is indeed unnecessary if they're not actually used anywhere outside that cpp file.
well those are not used anywhere
only the main template is
basically the things I moved into header are used in Renderer module
but the defines I "fixed" on cpp do nothing
I can removed them and everything still compiles and works, nothing in the engine or that cpp calls them
Yep, but I think it's there that the RENDERER_API macro should go. I think if you removed it from the header, and added it before each call to the IMPLEMENT macro, then that would be the only change needed to be able to use that function across modules.
hmmm
so you suggest wiping everything related from header?
I can try it soon
now more curious if these techs actually run on 4.20 ๐
still compiling shaders
Just if you want to minimize the number of changes. Then yeah, starting from the original engine code, just remove RENDERER_API from the template declaration in the header, and put it in front of the 3 calls to the implemenet macro in the cpp.
yeah, I'd rather not do things like these
I think that would fix the linker error you were getting earlier. Might not ๐
but if everything is in cpp, how will other files get the declaration?
now the relevant files include that header
which contains the template
that template itself is used around the renderer module
but I also don't really know what that IMPLEMENT_ thing does in practice
No you still leave the template declaration in the header.
https://github.com/EpicGames/UnrealEngine/blob/f509bb2d6c62806882d9a10476f3654cf1ee0634/Engine/Source/Runtime/Renderer/Public/SceneRenderTargetParameters.h#L95-L96
Just remove RENDERER_API from in front of it, as I think that is at best doing nothing on a template declaration.
And then re-add it in front of the macro usages in the cpp
I'll try
btw, flex crashes on play ๐
so, more troubleshooting
it did require some bigger changes, it's possible I screwed up somewhere
That macro is just wrapping iup the c++ syntax for an explicit template instantiation. Basically it just tells the compiler, instantiate this template for the following type now, regardless of whether anything is using it.
What is it you're doing, updating nVidia fork code for 4.20?
yes, basically merging 4.19 tech into single 4.20
I already had blast and flow upgraded
now pushing txaa, flex and volumetric lighting
But code written for 4.19 by nVidia, or by you?
nvidia
Okay. So do they generally keep stuff up to date, just a bit late or seomthing?
I did upgrade some of their tech to 4.19 myself but nvidia later came up with their own branch for it
yeah, it takes a while
but it's not common that you get all tech for single engine version
4.19 was kinda exception
Ah okay.
this was what I put on 4.19 merge: https://github.com/0lento/UnrealEngine/blob/4.19-GameWorks/README.md
apparently community does enough these merges that nvidia doesn't care to do
but I actually like that they keep these separete
if you ever need some of the techs, you can just grab what you need
basically most of the things are wrapped on #if #endif so you can opt out from the techs even if they are merged all in one
but you still get more binaries to move around due to their libs and dlls
๐
Do they clash with each other though? I mean can you always merge in whatever combination of their techs you like, without having to deal with a bunch of issues?
merge conflicts are usually minimal
most work is mainly doing some manual work where the mergetool can't solve things on it's own
usually this means like handling 10 files yourself per tech
and that's usually solvable by merge tools A,B,C selection
only occasionally it breaks the code chunks on wrong places and then you need to manually copy paste things around
so far only things that have truly clashed has been nvidia waveworks and flow I think
and that didn't actually do anything bad, but one overrode the other for some shaders tangent math
so other would have had incorrect visuals
also, VRWorks is off the table as it will clash with things like VXGI
but I don't even have VR gear here so I couldn't even test that stuff even if I got it to compile
Okay good to know. Anyway I doubt our project will end up needing this stuff. Blast possibly, probably nothing else.
Do you know if Epic intend to merge any of these into the release engine?
I don't but it would be very odd if they didn't
considering that nvidia has gotten some of their blast changes into mainline already, now it only modifies slightly 10 engine files and rest is on the plugin itself
that + apex destruction has been deprecated already on physx version they use
of course, physx 3.5 is likely still far away but once that comes out, I doubt there's any apex stuff around
btw https://github.com/0lento/UnrealEngine/tree/4.20-Physics got only my physics mods and Blast
I tried to get answer from Epic about 4.20 contact modifications but I couldn't get any response
I feel like they left some crucial part from the implementation out, at least I couldn't figure how to expose the contact modification callback without engine mods
but since I've done that in past, I added my implementation with physx wrappers there (built in contact mod stuff on 4.20 doesn't wrap any physx calls to ue4)
What are common uses of manual contact modification?
my fixed timestepping stuff is tad hacky, especially on the interpolation part, but it works
well, you can do lots of things with it
basically whenever you get collision, your collison data goes to contact modification callback if you've setup that rigidbody to be included in those
then you get to spoof all collision data before it's been sent to physx solver
you can filter out "bad" data, like sharp angles etc that shouldn't exist on the parts you collide against
classic example I use is a railing and a racing game, you lean against the railing on corner and suddenly your car launches to space or otherwise bounces off oddly
this is caused usually by colliders seams where physx "catches" on the collision, thinking it collided at 90 degree angle when it's in fact something that should appear almost 0 angle visually
these things happen even more if you have bigger offset on collisions
but with contact mods out there, you can examine the data and tell physx to ignore bad or unwanted points based on your own code/algos
or spoof it
you can spoof friction, restitution, collision point position, separation etc
Gotcha. Generally more important for stuff that is trying to accurately simulate real world behaviour presumably.
you can see the list of things you can do here: https://github.com/0lento/UnrealEngine/commit/0245565914be81febedc72f276e496c39c255d00#diff-53ac782bb73ba73b5b9d1199c8eac9f3R254
well, it's important on any fast paced physics game IMO
it allows you to fix things that would be harder to work around in traditional ways
Though I guess you could also use it to create some interesting, non-realistic effects.
like, for example if you roll a ball along landscape for example, it jumps on landscape seams on ue4 by default
with contact mods, you can filter the ground data to have zero offset and also take away points that have normal angles that couldn't exist
seams are a huge issue on any roll-a-ball game
Does 4.20 require VS2017?
you can work around those with smart collision shapes but there are some things that are close to impossible to fix traditionally
@lavish topaz you can use VS2015
that what I've used now to compile 4.20
Anything I need to change? I noticed the change log said it defaults to 2017
but you need to be more careful if you do that
When compiling I get an error Unable to expand variable in '$(DXSDK_DIR)\Lib\x64'
you want to compile the engine or project?
Yeah I've read about that issue. What's causing it exactly? I mean, I don't see why does the collision stuff can't just match up property. Is UE4 landscape doing something dumb?
both, we use the engine from their perforce
@gloomy hamlet basically when you have two planes next to eachothers, there's really no way to figure out the contact point angle on the border
@lavish topaz GenerateProjectFiles.bat -2015
then open the solution on vs2015
it builds automatically right
we dont have a setup.bat with the perforce version. Yes I generatedprojectfiles.bat then opened up UE4.sln in 2015. Start building and get that error.
bigger issue after that is if you happen to open c++ game project with it before changing the solution for game project to target 2015
if you do this, engine tries to open it on vs2017 if you have it installed and it corrupts the whole engine
been there done that
if you don't have 2017 on the computer at all, that's not a big concern
yea i have 2017 community
@lavish topaz you need that -2015 tag
ohhh
if you want to generate vs2015 solution
np
on 4.19 and before, you had to use -2017 tag to get it to generate VS2017 version
but it defaults to 2017 solution now on 4.20
still same error (โฏยฐโกยฐ๏ผโฏ๏ธต โปโโป
delete your ue4.sln before, just in case
also you said you dont have setup?
you get the dependencies some other way?
it sounds a bit like you are missing them
ah, that's what kamrann said as well
@gloomy hamlet simply adding those RENDERER_API's into cpp file fixed it
I had to leave those on header or it would have comlained about missmatch but that's actually expected, wonder why it didn't complain the other way around
I guess it treats it as different module
like local change vs something that belongs to RENDERER_API
I reverted my earlier changes and only added those
it does make sense now that I think about it
I've just been staring at this screen for too long ๐
Ok cool, yeah wasn't sure of the exact details, but suspected they'd misused it for the template case.
@gloomy hamlet, @spiral mortar thanks, both of you
WARNING: Exception while generating include data for GameEditor: Unable to expand variable in '$(DXSDK_DIR)\Lib\x64 does show that in the generateprojectfiles.bat
Exports (xxx_API) are for linker symbols, and template declarations don't generate any linker symbols so it doesn't really make sense to just add it to the declaration.
well, flex was (despite all the effort) still broken while in play mode, I'll get back to it later, I cleaned the repo for the other techs and they appear to be working just fine
what's weirdest, all the other gameworks tech needed tons of changes on includes and other stuff but their volumetric lighting worked right away, didn't need to change a single thing on engine side (only had to remove the engine association from the actual sample so it wouldn't nag on launch)
for the engineers out there
you want this book
released a few days ago
3rd edition of one of the absolute classic books about game engines, and this one has chapters on multithreading and low level hardware
it explains tings like lock free programming, atomics, SIMD, and cpu pipelines in superscalar architectures
that sounds very interesting
the author is one of the lead engine programmers at naughty dog
Buy Real-Time Rendering, Fourth Edition 4 by Tomas Akenine-Mรถller, Eric Haines, Naty Hoffman (ISBN: 9781138627000) from Amazon's Book Store. Everyday low prices and free delivery on eligible orders.
also this other book
Real Time Rendering, 4th edition
last one was like in 2005
so there is a huge upgrade
this time it covers PBR and techniques like forward+
oof those are some expensive books
they are both 1250 or so pages
!
absolute monsters of a book
btw i got pdfs if you want XD
from game engine architecture
oh I forgot to switch to the digital one that's why it was so expensive
now we just need a way to buy more time so I can read all the stuff and mess with it
lol it shit talks unreal
usually very simple, each one exposing only a minimal feature set. However,
as more and more functionality is added to the game, the desire to share code
between two or more unrelated classes begins to cause features to โbubble upโ
the hierarchy. ```
contains data members and code for managing rendering, animation, physics,
world interaction, audio effects, network replication for multiplayer games,object creation and destruction, actor iteration (i.e., the ability to iterate over
all actors meeting a certain criteria and perform some operation on them), and
message broadcasting. Encapsulating the functionality of various engine subsystems
is difficult when features are permitted to โbubble upโ to the rootmost
classes in a monolithic class hierarchy.```
oh
the various low-level subsystems in our engine, such as animation, audio, collsion/
physics, rendering, file I/O, and so on. So why not parallelize our game
object updates by making them jobs, too? This is the approach used in the
Naughty Dog engine. It works, but getting it to work correctly, and efficiently,
is a non-trivial undertaking. ```
meanwhile in unreal...
"lets have literally all the game code and transform updates single threaded"
totally not a huge bottleneck on consoles
I noticed an option on actors to run ticks in parallel but no documentation or examples what you're meant to use it with
it works
i have experimented with it
it actually does work
but it is useless
what is even the point if you cant do anything on them?
that's what I was wondering
blueprint is offlimits, transforms are offlimits, any kind of engine function is off limit
I assumed it's just gonna die if you use stuff
i theorized that it could work for AI
and for the world updates you use a concurrent queue
that you then apply on the next step
bp is not off limits tho
there's this one article by intel where they claim to be running bp in parallel with this
i have tried to move stuff in parallel and in the "MoveUpdatedComponent" there are checks that check if you are on the game thread
just moving stuff takes 3 ms on ps4 on my game
just moving
the things that move are some bullets, the player objects, and the enemies
btw every one of them has physics disabled
bullets use async traces
It definitely seems pretty pointless to me. Thing is, since you have to separate/sync to such an extent, then you might as well just run some task continuously on another thread. What do you gain by having it called once a frame by the engine?
i implemented a way to spread up ticks
essentially every object in the world only ticks 1 every 2 frames
configurable
gets me a +30% improvement on tick time
not +50% becouse the separation is not perfect, but rng
but more or less 30%
wich is good
thats what im using
my enemies and bullets actually fly at 60 fps
while the world runs at 120
btw particle effects and animations also run at 60 fps
wtf 120 fps
on psvr
its actually 60 fps
but it reprojects to 120 to feel more responsive
some games tun at 90 fps native
i think not even 10 games run at 120
and none of them using ue4
so im pretty sure im the only guy who has managed to put a ue4 game at 120 on psvr
What's meant by 'reprojects'?
it calculates the lens projection again, but with a slightly rotated matrix
So the camera is updated at 120, the game stuff at 60?
so your game doesn't use the reproject thing since it actually runs at 120 fps?
yes
@brisk silo this is what I absolutely hate about (paper) books
I got first edition from that book, I should get discount for updates ๐
I don't think many ebook sellers give you discounts from new editions either even when that would be super logical
the discount for updates is on the high seas
btw
this is ABSOLUTE GOLD
it shows all the math and all the raesoning for a PBR model
a similar model to unreal engine
another thing I hate is UE4's git status being too intelligent
I did use rebase to reword one commit from near history -> full rebuild as it thinks things have changed
reading this thing. it is by far the best implementation level PBR guide i have ever seen
it gives you all the math, the code, and the explanations, to use PBR in your own engine
or understand how the ue4 shaders work
as they use the same distributions
๐
it does look informative
probably worth more for shader/graphics guys than random people poking the engine source code tho ๐
(โฏยฐโกยฐ๏ผโฏ๏ธต โปโโป
why can't everyone just agree on using one of these
@low dust it allows you to understand the ue4 shaders
they even have forward+ render, unreal forward style
