12,265 Commits over 1,003 Days - 0.51cph!
Fix sboxgame/issues/issues/3394
Get ripples on new water shader
Log some more info when #1027 occurs
When uploading a menu whitelist, pull in references of the wildcarded assets and add them to the whitelist too
Pass in video ext from managed so we can check that for input format
Failing test for when lambda signatures change
Warn on lambda signature change, replace with error-throwing delegate
RedirectFileSystem can resolve full filenames properly
Fix Game.Audio not available in menu
Fix videoplayer not playing video files (this isn't the correct fix, we should pass in the relative filename and check the extension on that)
Include member and instance path in hotload error reports
Image loader creates textures for multiple frames if they exist. Whitelist gif and webp. Swap out texture handles for the current frame. https://files.facepunch.com/layla/1b0711b1/sbox-dev_rCZwXFIzD1.mp4
UI textures load as they're going to be used, rather than loading everything in the stylesheet
Plug into our shadingmodel
Hard code low/med/high cbuffers
Add depth prepass, hardcode some more tree cbuffers
Fix border-image not drawing if background unset
Support videos as background-image etc
Add Texture.LastUsed - the number of frames since last used
Texture has a ParentObject (so they can keep things like VideoPlayer from being garbage collected)
Add IWeakInteropHandle to interopsystem, so c++ can reference c# objects that can get garbage collected
VideoPlayer implement IWeakInteropHandle
Add Debug/Full Garbage Collection
VideoTextureLoader is weak, will let videos get garbage collected
Remove Styles.TextBackgroundImage (not used)
Avoid threading assert in audio thread
Squash commit of what was on SSR branch
Update compiled shaders
Redo SSR API to not be hardcoded to an ubershader, add a function to just consume material API parameters and output the reflection
Convert water to the new system, adjust reflections.hlsl
Drift SSR result [-1,1] pixel based on the normals to sharpen it to the result
Do perfect reprojection on ssr, able to have much higher quality without losing temporal stability
VideoPlayer: Fix repeat not working when user doesn't output sound on a video with sound
Add AudioSystem.Play overloads to play from an entity
Fix reading json color32 string not working
Fix GameLog not printing all aggregate exceptions
Fix transition time parsing
Fix GetSavedGames typo
Fix IPanel.Depth logic
Re-organize the sound classes
Sound doesn't need to keep the hash around
Sound wraps a SoundHandle
Fix video player not playing from filesystem path
Call it ScrapeEventData like CollisionEventData and move it out of Entity
Use ScrapeEvent incase we need to add/change params later
Add some stuff to entity similar to StartTouch/Touch/EndTouch but for scrapes - revise later
Whitelist mp4 and webm to avoid going any further than we have to
Limit input formats to mp4 and webm
VideoPlayer.Play that takes a url checks if it's actually a url
Morph shapes for the Decorated Beard
Modeldoc: Compile skeleton with ALL bones no matter if they're used in skinning or not
Directly write to Logger during hotloads
Include path and member in hotload log messages
Allow nested FormattableStrings in log messages
So that their args can be inspected too
Fix order of operations when rendering drop shadows
Implement WindSdk code, setup cbuffers manually at 50% speed for now, add uv data
Fix func_voxelsurface to the new way of getting the surface face
ShaderGraph: Fix formatting on generated code
Add blendmodes.hlsl until shadergraph just generates these functions
ShaderGraph: Fix NRE when identing generated code
procedural.hlsl isnt in common anymore
ShaderGraph: Only find nodes derived from ShaderNode
ShaderGraph: common/proceedural ->common/procedural
Video player (#1050)
VideoPlayer class that decodes mp4 and webm from paths or urls and provides the texture and audio.
Initial support for playing video
Bind resolve shaders and textures directly instead of going through renderable pass, avoids it being used across frame boundaries
Initial support for audio playback
Get rid of event wait shit for audio, ExecuteOnMainThread handles this
Support seeking
Fix streaming from url not working
Init, shutdown and run frame for video playback in a service so we don't have to do it manually
Give video player the managed object so we can call back to it
Tell managed when texture has been created, we don't know until first frame has been decoded
Bind all the functions of video player
Pass video events down to managed
Add Duration and CurrentPlaybackTime
Documentation
Call OnTextureCreated after new texture has been rendered to
Add clear to audio stream interface, clear the resample buffer instead of having to recreate the whole stream
Add use_doppler sound op to stack, disable it on attached streams (doppler is no good on streams because it pitches)
Start allowing video audio stream to attach to sound events to change how audio is played
Allow audio stream to be attached to multiple sound events
Add SoundStream.Play (returns a sound handle, can be called multiple times), obsolete Sound.CreateStream (this was all ass backwards)
Add VideoPlayer.PlayAudio, called when audio is ready, can be called multiple times for multiple sound sources
Add public constructor for SoundStream, this is allowed now it doesn't depend on having a Sound
Add more properties to video player
Turns out sound stream can't have multiple sound sources, at least for now
Add qt video widget example https://files.facepunch.com/layla/1b2911b1/sbox_tueAgFGKr8.mp4
Remove ui test that doesn't exist
Remove libogg, libvorbis, libpvx, all unused
Add ffmpeg to thirdparty
video.vpc
Force push ffmpeg dlls
video app system bullshit
Force push ffmpeg libs
Test reading a single frame directly with ffmpeg
network init on video system init
Test video decoding in a threaded job
Stop decoding and wait till job has finished when video stops
Take off decoding time from sleep time
Attempt to decode audio but doesn't sync yet
Get rid of video64.dll usage, we're in control now
video -> videosystem
Free audio output on video stop
Try to keep video in sync
Break out of audio and video threads when there's no more packets to read
Read packets, decode audio and video in separate threads, sync video to external clock
Allow videos to repeat or not
Adjust frame queue size, using way too much memory
Pass video frame data to managed so pixmap can be created when texture isn't ideal to use in Qt
New ffmpeg video player
Delete old libav binaries
Add VideoPlayer IsPaused and TogglePause
Add example videoplayers for native rendering and pixmap rendering
Use BGRA for video filter if the player wants pixel data
Add VideoPlayer.Play that takes a filesystem
Create a 1x1 placeholder texture, swap out with first decoded frame so we always have a texture available. Invoke event when video has loaded. Add Width and Height of video.
Explain that OnTextureData will provide pixel data instead of rendering to texture
Explain that OnTextureData will provide pixel data instead of rendering to texture
Create a 1x1 placeholder texture, swap out with first decoded frame so we always have a texture available. Invoke event when video has loaded. Add Width and Height of video.
CSS Drop Shadows (#1069)
https://files.facepunch.com/alexguthrie/1b0511b1/drop_shadow.png
Combine identical SetBoxShadow and SetTextShadow functions into one
Drop shadow property
Drop shadow menu UI test
Initial rendering support for drop-shadow
https://files.facepunch.com/alexguthrie/1b0511b1/devenv_wIlk5l0DF3.mp4
Multiple tests for mask, multiple filter modes, etc.
https://files.facepunch.com/alexguthrie/1b0511b1/sbox-dev_quSj9lxmDS.png
Shader cleanup + optimized compile
Render each shadow separately, means we can have multiple drop shadows if we want
Move drop-shadow stuff into its own shader, makes sense to separate this out now
Minor tweaks + optimized compile for ui_filter and ui_dropshadow
Clean up layer rendering
Remove ExCSS import (???)
Recompile ui_filter.shader
Remove ExCSS import (???)
Implement IsMatchingType for generic type definitions
Fixed IsMatchingType for required modifier types
Don't warn about attempted fast hotload of generic method
Add VideoPlayer.Play that takes a filesystem
New ffmpeg video player
Delete old libav binaries
Add VideoPlayer IsPaused and TogglePause
Add example videoplayers for native rendering and pixmap rendering
Use BGRA for video filter if the player wants pixel data