├── .gitignore ├── .vsconfig ├── AwesomeShaders ├── OceanComplexMath.ush ├── OceanExport.ush └── OceanWater.ush ├── Binaries └── Win64 │ ├── ShaderMacroEditor.target │ └── UnrealEditor.modules ├── Config ├── DefaultEditor.ini ├── DefaultEngine.ini ├── DefaultGame.ini └── DefaultInput.ini ├── Content └── OceanWater │ ├── Effects │ ├── FX_OceanWater.uasset │ ├── FX_OceanWater_AwesomeShader.uasset │ └── Modules │ │ ├── Emitter │ │ ├── FX_OceanWater_SetGrids.uasset │ │ ├── FX_OceanWater_SetInitials.uasset │ │ ├── FX_OceanWater_SetPerFrame.uasset │ │ └── FX_OceanWater_SetRenderTargets.uasset │ │ ├── FX_OceanWater_Colpass.uasset │ │ ├── FX_OceanWater_ExportData.uasset │ │ ├── FX_OceanWater_ExportPixelData.uasset │ │ ├── FX_OceanWater_PopulateSpectrum.uasset │ │ ├── FX_OceanWater_RoughnessIntegrator.uasset │ │ ├── FX_OceanWater_Rowpass.uasset │ │ └── FX_OceanWater_Timestep.uasset │ ├── Materials │ ├── MI_OceanWater.uasset │ ├── M_PreviewOceanWater.uasset │ └── MaterialFunctions │ │ ├── MF_AdjustColor.uasset │ │ ├── MF_Foam.uasset │ │ ├── MF_GrabCascadeData_Pixel.uasset │ │ ├── MF_GrabCascadeData_Vertex.uasset │ │ ├── MF_GrabPixelAttributes.uasset │ │ ├── MF_GrabRoughness.uasset │ │ ├── MF_GrabVertexAttributes.uasset │ │ └── MF_Scattering.uasset │ ├── Meshes │ └── plane1024.uasset │ ├── OceanTutorial.umap │ ├── RenderTargets │ ├── Pixel │ │ ├── RT_OceanPixelAttribsB_Casc0.uasset │ │ ├── RT_OceanPixelAttribsB_Casc1.uasset │ │ ├── RT_OceanPixelAttribsB_Casc2.uasset │ │ ├── RT_OceanPixelAttribsB_Casc3.uasset │ │ ├── RT_OceanPixelAttribs_Casc0.uasset │ │ ├── RT_OceanPixelAttribs_Casc1.uasset │ │ ├── RT_OceanPixelAttribs_Casc2.uasset │ │ ├── RT_OceanPixelAttribs_Casc3.uasset │ │ └── RT_Roughness.uasset │ └── Vertex │ │ ├── RT_OceanWater_VertAttribs.uasset │ │ └── RT_OceanWater_VertAttribsB.uasset │ ├── Textures │ ├── water_d.uasset │ └── water_n.uasset │ └── test2.umap ├── MyProject2.sln ├── OceanTutorial.uproject ├── Plugins └── ShaderDirectory │ ├── Binaries │ └── Win64 │ │ └── UnrealEditor.modules │ ├── Content │ └── M_CustomUSHTest.uasset │ ├── Resources │ └── Icon128.png │ ├── ShaderDirectory.uplugin │ ├── Shaders │ └── CustomFunction.ush │ └── Source │ └── ShaderDirectory │ ├── Private │ └── ShaderDirectory.cpp │ ├── Public │ └── ShaderDirectory.h │ └── ShaderDirectory.Build.cs ├── README.md └── Source ├── ShaderMacro.Target.cs ├── ShaderMacro ├── ShaderMacro.Build.cs ├── ShaderMacro.cpp ├── ShaderMacro.h ├── ShaderMacroGameModeBase.cpp └── ShaderMacroGameModeBase.h └── ShaderMacroEditor.Target.cs /.gitignore: -------------------------------------------------------------------------------- 1 | # Visual Studio 2015 user specific files 2 | .vs/ 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | 22 | # Compiled Static libraries 23 | *.lai 24 | *.la 25 | *.a 26 | *.lib 27 | 28 | # Executables 29 | *.exe 30 | *.out 31 | *.app 32 | *.ipa 33 | 34 | # These project files can be generated by the engine 35 | # *.sln 36 | *.xcodeproj 37 | *.xcworkspace 38 | *.suo 39 | *.opensdf 40 | *.sdf 41 | *.VC.db 42 | *.VC.opendb 43 | *.pdb 44 | 45 | # Precompiled Assets 46 | SourceArt/**/*.png 47 | SourceArt/**/*.tga 48 | 49 | # Binary Files 50 | # Binaries/* 51 | # Plugins/*/Binaries/* 52 | 53 | # Builds 54 | Build/* 55 | 56 | # Whitelist PakBlacklist-.txt files 57 | !Build/*/ 58 | Build/*/** 59 | !Build/*/PakBlacklist*.txt 60 | !Intermediate/Build/BuildRules/* 61 | !Plugins/ShaderDirectory/* 62 | 63 | # Don't ignore icon files in Build 64 | !Build/**/*.ico 65 | 66 | # Built data for maps 67 | *_BuiltData.uasset 68 | 69 | # Configuration files generated by the Editor 70 | Saved/* 71 | Content/Developers/* 72 | 73 | # Compiled source files for the engine to use 74 | Intermediate/* 75 | Plugins/*/Intermediate/* 76 | 77 | # Cache files for the editor to use 78 | DerivedDataCache/* 79 | -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.Net.Component.4.6.2.TargetingPack", 5 | "Microsoft.VisualStudio.Component.VC.14.34.17.4.x86.x64", 6 | "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", 7 | "Microsoft.VisualStudio.Component.Windows10SDK", 8 | "Microsoft.VisualStudio.Workload.CoreEditor", 9 | "Microsoft.VisualStudio.Workload.ManagedDesktop", 10 | "Microsoft.VisualStudio.Workload.NativeDesktop", 11 | "Microsoft.VisualStudio.Workload.NativeGame" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /AwesomeShaders/OceanComplexMath.ush: -------------------------------------------------------------------------------- 1 | 2 | 3 | float2 jMul(float2 c0,float2 c1) 4 | { 5 | float2 c; 6 | c.x=c0.x*c1.x-c0.y*c1.y; 7 | c.y=c0.x*c1.y+c0.y*c1.x; 8 | return c; 9 | } 10 | 11 | float2 jAdd(float2 c0,float2 c1) 12 | { 13 | float2 c; 14 | c.x=c0.x+c1.x; 15 | c.y=c0.y+c1.y; 16 | return c; 17 | } 18 | 19 | float jMod(float x,float y) 20 | { 21 | return x-y*floor(x/y); 22 | } 23 | 24 | float2 jConj(float2 c) 25 | { 26 | return float2(c.x,-c.y); 27 | } -------------------------------------------------------------------------------- /AwesomeShaders/OceanExport.ush: -------------------------------------------------------------------------------- 1 | #define LENGTH 256 2 | 3 | int2 GetWrappedPosition(int3 pos,int2 offset) 4 | { 5 | int2 posi=pos.xy+offset; 6 | FLATTEN 7 | if (posi.x>=LENGTH) posi.x-=LENGTH; 8 | FLATTEN 9 | if (posi.x<0) posi.x+=LENGTH; 10 | FLATTEN 11 | if (posi.y>=LENGTH) posi.y-=LENGTH; 12 | FLATTEN 13 | if (posi.y<0) posi.y+=LENGTH; 14 | return int2(posi.x,posi.y+pos.z*LENGTH); 15 | 16 | } -------------------------------------------------------------------------------- /AwesomeShaders/OceanWater.ush: -------------------------------------------------------------------------------- 1 | //-------------------------------------------------------------------------------------- 2 | // Copyright 2014 Intel Corporation 3 | // All Rights Reserved 4 | // 5 | // Permission is granted to use, copy, distribute and prepare derivative works of this 6 | // software for any purpose and without fee, provided, that the above copyright notice 7 | // and this statement appear in all copies. Intel makes no representations about the 8 | // suitability of this software for any purpose. THIS SOFTWARE IS PROVIDED "AS IS." 9 | // INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, AND ALL LIABILITY, 10 | // INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES, FOR THE USE OF THIS SOFTWARE, 11 | // INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY RIGHTS, AND INCLUDING THE 12 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Intel does not 13 | // assume any responsibility for any errors which may appear in this software nor any 14 | // responsibility to update it. 15 | //-------------------------------------------------------------------------------------- 16 | 17 | // Modified code from Fast Fourier Transform for Image Processing in DirectX 11 Jospeh S. 18 | 19 | #define LENGTH 256 20 | #define BUTTERFLY_COUNT 8 21 | #define PI 3.1415926 22 | //#define THREADGROUP_SIZE 256 23 | 24 | void GetButterflyValues(uint passIndex,uint x, out uint2 indices, out float2 weights) 25 | { 26 | int sectionWidth=2<>(32-BUTTERFLY_COUNT)&(LENGTH-1); 42 | } 43 | } 44 | ///////////////// 45 | groupshared float3 pingPongArray[4][THREADGROUP_SIZE]; 46 | 47 | void ButterflyPass(int passIndex, uint x,uint t0, uint t1, out float3 resultR, out float3 resultI) 48 | { 49 | uint2 Indices; 50 | float2 Weights; 51 | 52 | GetButterflyValues(passIndex,x,Indices,Weights); 53 | 54 | float3 inputR1=pingPongArray[t0][Indices.x]; 55 | float3 inputI1=pingPongArray[t1][Indices.x]; 56 | 57 | float3 inputR2=pingPongArray[t0][Indices.y]; 58 | float3 inputI2=pingPongArray[t1][Indices.y]; 59 | 60 | resultR=(inputR1+Weights.x*inputR2+Weights.y*inputI2)*0.5; 61 | resultI=(inputI1-Weights.y*inputR2+Weights.x*inputI2)*0.5; 62 | } 63 | 64 | void ButterflyPassFinalNoI(int passIndex,int x,int t0,int t1, out float3 resultR) 65 | { 66 | uint2 Indices; 67 | float2 Weights; 68 | GetButterflyValues(passIndex,x,Indices,Weights); 69 | 70 | float3 inputR1=pingPongArray[t0][Indices.x]; 71 | 72 | float3 inputR2=pingPongArray[t0][Indices.y]; 73 | float3 inputI2=pingPongArray[t1][Indices.y]; 74 | 75 | resultR=(inputR1+Weights.x*inputR2+Weights.y*inputI2)*0.5; 76 | 77 | } 78 | -------------------------------------------------------------------------------- /Binaries/Win64/UnrealEditor.modules: -------------------------------------------------------------------------------- 1 | { 2 | "BuildId": "27405482", 3 | "Modules": 4 | { 5 | "ShaderMacro": "UnrealEditor-ShaderMacro.dll" 6 | } 7 | } -------------------------------------------------------------------------------- /Config/DefaultEditor.ini: -------------------------------------------------------------------------------- 1 | [/Script/AdvancedPreviewScene.SharedProfiles] 2 | 3 | -------------------------------------------------------------------------------- /Config/DefaultEngine.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GameMapsSettings] 4 | GameDefaultMap=/Game/OceanWater/test2.test2 5 | EditorStartupMap=/Game/OceanWater/test2.test2 6 | GlobalDefaultGameMode=/Script/Engine.GameModeBase 7 | 8 | [/Script/WindowsTargetPlatform.WindowsTargetSettings] 9 | DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 10 | -D3D12TargetedShaderFormats=PCD3D_SM5 11 | +D3D12TargetedShaderFormats=PCD3D_SM6 12 | -D3D11TargetedShaderFormats=PCD3D_SM5 13 | Compiler=Default 14 | AudioSampleRate=48000 15 | AudioCallbackBufferFrameSize=1024 16 | AudioNumBuffersToEnqueue=1 17 | AudioMaxChannels=0 18 | AudioNumSourceWorkers=4 19 | SpatializationPlugin= 20 | SourceDataOverridePlugin= 21 | ReverbPlugin= 22 | OcclusionPlugin= 23 | CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) 24 | CacheSizeKB=65536 25 | MaxChunkSizeOverrideKB=0 26 | bResampleForDevice=False 27 | MaxSampleRate=48000.000000 28 | HighSampleRate=32000.000000 29 | MedSampleRate=24000.000000 30 | LowSampleRate=12000.000000 31 | MinSampleRate=8000.000000 32 | CompressionQualityModifier=1.000000 33 | AutoStreamingThreshold=0.000000 34 | SoundCueCookQualityIndex=-1 35 | 36 | [/Script/HardwareTargeting.HardwareTargetingSettings] 37 | TargetedHardwareClass=Desktop 38 | AppliedTargetedHardwareClass=Desktop 39 | DefaultGraphicsPerformance=Maximum 40 | AppliedDefaultGraphicsPerformance=Maximum 41 | 42 | [/Script/Engine.RendererSettings] 43 | r.GenerateMeshDistanceFields=True 44 | r.DynamicGlobalIlluminationMethod=2 45 | r.ReflectionMethod=2 46 | r.Shadow.Virtual.Enable=0 47 | r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True 48 | r.Lumen.TraceMeshSDFs=1 49 | r.SkinCache.CompileShaders=True 50 | r.RayTracing=True 51 | r.ForwardShading=False 52 | r.DefaultFeature.AutoExposure.Method=0 53 | r.Mobile.ShadingPath=0 54 | 55 | [/Script/WorldPartitionEditor.WorldPartitionEditorSettings] 56 | CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' 57 | 58 | [/Script/Engine.Engine] 59 | +ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/OceanTutorial") 60 | +ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/OceanTutorial") 61 | bUseFixedFrameRate=False 62 | FixedFrameRate=60.000000 63 | 64 | [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] 65 | bEnablePlugin=True 66 | bAllowNetworkConnection=True 67 | SecurityToken=F9D9CF954263A54C366FD28AB0A572B3 68 | bIncludeInShipping=False 69 | bAllowExternalStartInShipping=False 70 | bCompileAFSProject=False 71 | bUseCompression=False 72 | bLogFiles=False 73 | bReportStats=False 74 | ConnectionType=USBOnly 75 | bUseManualIPAddress=False 76 | ManualIPAddress= 77 | 78 | [/Script/LinuxTargetPlatform.LinuxTargetSettings] 79 | SpatializationPlugin= 80 | SourceDataOverridePlugin= 81 | ReverbPlugin= 82 | OcclusionPlugin= 83 | SoundCueCookQualityIndex=-1 84 | -TargetedRHIs=SF_VULKAN_SM5 85 | 86 | [/Script/NavigationSystem.RecastNavMesh] 87 | bDoFullyAsyncNavDataGathering=False 88 | 89 | [/Script/Engine.PhysicsSettings] 90 | bSubsteppingAsync=False 91 | bTickPhysicsAsync=False 92 | 93 | [/Script/Engine.StreamingSettings] 94 | s.AsyncLoadingThreadEnabled=False 95 | 96 | -------------------------------------------------------------------------------- /Config/DefaultGame.ini: -------------------------------------------------------------------------------- 1 | 2 | 3 | [/Script/EngineSettings.GeneralProjectSettings] 4 | ProjectID=4F51BC2E43E686F6AB44448E39169E17 5 | -------------------------------------------------------------------------------- /Config/DefaultInput.ini: -------------------------------------------------------------------------------- 1 | [/Script/Engine.InputSettings] 2 | -AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 3 | -AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 4 | -AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 5 | -AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) 6 | -AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 7 | -AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 8 | -AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) 9 | +AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 10 | +AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 11 | +AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 12 | +AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 13 | +AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 14 | +AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 15 | +AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) 16 | +AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 17 | +AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 18 | +AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 19 | +AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 20 | +AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 21 | +AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 22 | +AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 23 | +AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 24 | +AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 25 | +AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 26 | +AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 27 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 28 | +AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 29 | +AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 30 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 31 | +AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 32 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 33 | +AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 34 | +AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 35 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 36 | +AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 37 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 38 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 39 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 40 | +AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 41 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 42 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 43 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 44 | +AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 45 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 46 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 47 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 48 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 49 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 50 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 51 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 52 | +AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 53 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 54 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 55 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 56 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 57 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 58 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 59 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 60 | +AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) 61 | bAltEnterTogglesFullscreen=True 62 | bF11TogglesFullscreen=True 63 | bUseMouseForTouch=False 64 | bEnableMouseSmoothing=True 65 | bEnableFOVScaling=True 66 | bCaptureMouseOnLaunch=True 67 | bEnableLegacyInputScales=True 68 | bEnableMotionControls=True 69 | bFilterInputByPlatformUser=False 70 | bShouldFlushPressedKeysOnViewportFocusLost=True 71 | bAlwaysShowTouchInterface=False 72 | bShowConsoleOnFourFingerTap=True 73 | bEnableGestureRecognizer=False 74 | bUseAutocorrect=False 75 | DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown 76 | DefaultViewportMouseLockMode=LockOnCapture 77 | FOVScale=0.011110 78 | DoubleClickTime=0.200000 79 | DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput 80 | DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent 81 | DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks 82 | -ConsoleKeys=Tilde 83 | +ConsoleKeys=Tilde 84 | +ConsoleKeys=Caret 85 | 86 | -------------------------------------------------------------------------------- /Content/OceanWater/Effects/FX_OceanWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/FX_OceanWater.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/FX_OceanWater_AwesomeShader.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/FX_OceanWater_AwesomeShader.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetGrids.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetGrids.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetInitials.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetInitials.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetPerFrame.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetPerFrame.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetRenderTargets.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/Emitter/FX_OceanWater_SetRenderTargets.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_Colpass.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_Colpass.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_ExportData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_ExportData.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_ExportPixelData.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_ExportPixelData.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_PopulateSpectrum.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_PopulateSpectrum.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_RoughnessIntegrator.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_RoughnessIntegrator.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_Rowpass.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_Rowpass.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Effects/Modules/FX_OceanWater_Timestep.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Effects/Modules/FX_OceanWater_Timestep.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MI_OceanWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MI_OceanWater.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/M_PreviewOceanWater.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/M_PreviewOceanWater.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_AdjustColor.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_AdjustColor.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_Foam.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_Foam.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_GrabCascadeData_Pixel.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_GrabCascadeData_Pixel.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_GrabCascadeData_Vertex.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_GrabCascadeData_Vertex.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_GrabPixelAttributes.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_GrabPixelAttributes.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_GrabRoughness.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_GrabRoughness.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_GrabVertexAttributes.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_GrabVertexAttributes.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Materials/MaterialFunctions/MF_Scattering.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Materials/MaterialFunctions/MF_Scattering.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Meshes/plane1024.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Meshes/plane1024.uasset -------------------------------------------------------------------------------- /Content/OceanWater/OceanTutorial.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/OceanTutorial.umap -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc0.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc0.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc1.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc2.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribsB_Casc3.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc0.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc0.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc1.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc1.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc2.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc2.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc3.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_OceanPixelAttribs_Casc3.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Pixel/RT_Roughness.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Pixel/RT_Roughness.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Vertex/RT_OceanWater_VertAttribs.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Vertex/RT_OceanWater_VertAttribs.uasset -------------------------------------------------------------------------------- /Content/OceanWater/RenderTargets/Vertex/RT_OceanWater_VertAttribsB.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/RenderTargets/Vertex/RT_OceanWater_VertAttribsB.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Textures/water_d.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Textures/water_d.uasset -------------------------------------------------------------------------------- /Content/OceanWater/Textures/water_n.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/Textures/water_n.uasset -------------------------------------------------------------------------------- /Content/OceanWater/test2.umap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Content/OceanWater/test2.umap -------------------------------------------------------------------------------- /MyProject2.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.0.31314.256 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{233774A8-CC9D-3FA9-86D1-90573E92B704}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Games", "Games", "{DE1F8B53-6C02-3C13-9101-A7C8D96F3FF6}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UE5", "Intermediate\ProjectFiles\UE5.vcxproj", "{95891353-5388-35F9-80CE-A3320E6BA29B}" 11 | EndProject 12 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MyProject2", "Intermediate\ProjectFiles\MyProject2.vcxproj", "{B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}" 13 | EndProject 14 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Visualizers", "Visualizers", "{1CCEC849-CC72-4C59-8C36-2F7C38706D4C}" 15 | ProjectSection(SolutionItems) = preProject 16 | E:\games\UE_5.2\Engine\Extras\VisualStudioDebugging\Unreal.natvis = E:\games\UE_5.2\Engine\Extras\VisualStudioDebugging\Unreal.natvis 17 | EndProjectSection 18 | EndProject 19 | Global 20 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 21 | DebugGame Editor|Win64 = DebugGame Editor|Win64 22 | DebugGame|Win64 = DebugGame|Win64 23 | Development Editor|Win64 = Development Editor|Win64 24 | Development|Win64 = Development|Win64 25 | Shipping|Win64 = Shipping|Win64 26 | EndGlobalSection 27 | # UnrealVS Section 28 | GlobalSection(ddbf523f-7eb6-4887-bd51-85a714ff87eb) = preSolution 29 | AvailablePlatforms=Win64 30 | EndGlobalSection 31 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 32 | {95891353-5388-35F9-80CE-A3320E6BA29B}.DebugGame Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win64 33 | {95891353-5388-35F9-80CE-A3320E6BA29B}.DebugGame|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win64 34 | {95891353-5388-35F9-80CE-A3320E6BA29B}.Development Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win64 35 | {95891353-5388-35F9-80CE-A3320E6BA29B}.Development|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win64 36 | {95891353-5388-35F9-80CE-A3320E6BA29B}.Shipping|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win64 37 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.DebugGame Editor|Win64.ActiveCfg = DebugGame_Editor|x64 38 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.DebugGame Editor|Win64.Build.0 = DebugGame_Editor|x64 39 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.DebugGame|Win64.ActiveCfg = DebugGame|x64 40 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.DebugGame|Win64.Build.0 = DebugGame|x64 41 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.Development Editor|Win64.ActiveCfg = Development_Editor|x64 42 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.Development Editor|Win64.Build.0 = Development_Editor|x64 43 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.Development|Win64.ActiveCfg = Development|x64 44 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.Development|Win64.Build.0 = Development|x64 45 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.Shipping|Win64.ActiveCfg = Shipping|x64 46 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4}.Shipping|Win64.Build.0 = Shipping|x64 47 | EndGlobalSection 48 | GlobalSection(SolutionProperties) = preSolution 49 | HideSolutionNode = FALSE 50 | EndGlobalSection 51 | GlobalSection(NestedProjects) = preSolution 52 | {95891353-5388-35F9-80CE-A3320E6BA29B} = {233774A8-CC9D-3FA9-86D1-90573E92B704} 53 | {B4FF00B6-4377-33A5-AF4C-1A9354C5E2C4} = {DE1F8B53-6C02-3C13-9101-A7C8D96F3FF6} 54 | EndGlobalSection 55 | EndGlobal 56 | -------------------------------------------------------------------------------- /OceanTutorial.uproject: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "EngineAssociation": "5.3", 4 | "Category": "", 5 | "Description": "", 6 | "Plugins": [ 7 | { 8 | "Name": "ModelingToolsEditorMode", 9 | "Enabled": true, 10 | "TargetAllowList": [ 11 | "Editor" 12 | ] 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Binaries/Win64/UnrealEditor.modules: -------------------------------------------------------------------------------- 1 | { 2 | "BuildId": "27405482", 3 | "Modules": 4 | { 5 | "ShaderDirectory": "UnrealEditor-ShaderDirectory.dll" 6 | } 7 | } -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Content/M_CustomUSHTest.uasset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Plugins/ShaderDirectory/Content/M_CustomUSHTest.uasset -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Resources/Icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unreal79/NiagaraOceanTutorial/4243f512a218a4106fc893b86568d1d8d9cf2aa0/Plugins/ShaderDirectory/Resources/Icon128.png -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/ShaderDirectory.uplugin: -------------------------------------------------------------------------------- 1 | { 2 | "FileVersion": 3, 3 | "Version": 1, 4 | "VersionName": "1.0", 5 | "FriendlyName": "ShaderDirectory", 6 | "Description": "", 7 | "Category": "Other", 8 | "CreatedBy": "", 9 | "CreatedByURL": "", 10 | "DocsURL": "", 11 | "MarketplaceURL": "", 12 | "SupportURL": "", 13 | "CanContainContent": true, 14 | "IsBetaVersion": false, 15 | "IsExperimentalVersion": false, 16 | "Installed": false, 17 | "Modules": [ 18 | { 19 | "Name": "ShaderDirectory", 20 | "Type": "Runtime", 21 | "LoadingPhase": "Default" 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Shaders/CustomFunction.ush: -------------------------------------------------------------------------------- 1 | float3 col = mul(A, B); 2 | return col; -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Source/ShaderDirectory/Private/ShaderDirectory.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "ShaderDirectory.h" 4 | #include 5 | #include 6 | 7 | #define LOCTEXT_NAMESPACE "FShaderDirectoryModule" 8 | 9 | void FShaderDirectoryModule::StartupModule() 10 | { 11 | // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module 12 | FString ShaderDir = FPaths::Combine(FPaths::ProjectPluginsDir(), TEXT("ShaderDirectory/Shaders")); 13 | AddShaderSourceDirectoryMapping("/Plugin/ShaderDirectory", ShaderDir); 14 | 15 | FString ProjectShaderDir = FPaths::Combine(FPaths::ProjectDir(), TEXT("/AwesomeShaders")); 16 | AddShaderSourceDirectoryMapping("/Project/AwesomeShaders", ProjectShaderDir); 17 | } 18 | 19 | void FShaderDirectoryModule::ShutdownModule() 20 | { 21 | // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, 22 | // we call this function before unloading the module. 23 | } 24 | 25 | #undef LOCTEXT_NAMESPACE 26 | 27 | IMPLEMENT_MODULE(FShaderDirectoryModule, ShaderDirectory) -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Source/ShaderDirectory/Public/ShaderDirectory.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "Modules/ModuleManager.h" 7 | 8 | class FShaderDirectoryModule : public IModuleInterface 9 | { 10 | public: 11 | 12 | /** IModuleInterface implementation */ 13 | virtual void StartupModule() override; 14 | virtual void ShutdownModule() override; 15 | }; 16 | -------------------------------------------------------------------------------- /Plugins/ShaderDirectory/Source/ShaderDirectory/ShaderDirectory.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class ShaderDirectory : ModuleRules 6 | { 7 | public ShaderDirectory(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicIncludePaths.AddRange( 12 | new string[] { 13 | // ... add public include paths required here ... 14 | } 15 | ); 16 | 17 | 18 | PrivateIncludePaths.AddRange( 19 | new string[] { 20 | // ... add other private include paths required here ... 21 | } 22 | ); 23 | 24 | 25 | PublicDependencyModuleNames.AddRange( 26 | new string[] 27 | { 28 | "Core", 29 | // ... add other public dependencies that you statically link with here ... 30 | } 31 | ); 32 | 33 | 34 | PrivateDependencyModuleNames.AddRange( 35 | new string[] 36 | { 37 | "CoreUObject", 38 | "Engine", 39 | "Slate", 40 | "SlateCore", 41 | "RenderCore" 42 | // ... add private dependencies that you statically link with here ... 43 | } 44 | ); 45 | 46 | 47 | DynamicallyLoadedModuleNames.AddRange( 48 | new string[] 49 | { 50 | // ... add any modules that your module loads dynamically here ... 51 | } 52 | ); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Niagara Ocean Tutorial (Unreal Engine 5) 2 | 3 | ![Niagara Ocean Tutorial](https://ue-cdn.artstation.com/imgproxy/1kSRVkbimokkNDxfTFPOSonku4DPuw5wxHV2WwJcM5o/filename:OceanTutorial_Banner.png/resizing_type:fill/width:1600/height:200/aHR0cHM6Ly9kMWl2N2RiNDR5aGd4bi5jbG91ZGZyb250Lm5ldC9pbWFnZXMvMjc3ZmU4NTgtNTZlNS00NjE4LWEyYmYtYWRhNDA3YzljYmIwL29jZWFudHV0b3JpYWxfYmFubmVyLnBuZw) 4 | This is a UE 5.3 fork of Ocean Niagara FX (GPU): very fast and realistic looking water. 5 | 6 | ## Video sample 7 | https://vimeo.com/814697784 8 | 9 | ## Notes: 10 | 11 | * DirectX 12 + SM 6.0 only. 12 | 13 | ## URLs: 14 | 15 | Tutorial: https://dev.epicgames.com/community/learning/tutorials/qM1o/unreal-engine-ocean-simulation 16 | Discussion: https://forums.unrealengine.com/t/community-tutorial-ocean-simulation/845453 17 | 18 | ## Thanks 19 | 20 | * `DeathreyCG` for the awesome Niagara FX 21 | * `Evil_Pee` for USH relative path project 22 | -------------------------------------------------------------------------------- /Source/ShaderMacro.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class ShaderMacroTarget : TargetRules 7 | { 8 | public ShaderMacroTarget( TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Game; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | ExtraModuleNames.AddRange( new string[] { "ShaderMacro" } ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Source/ShaderMacro/ShaderMacro.Build.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | 5 | public class ShaderMacro : ModuleRules 6 | { 7 | public ShaderMacro(ReadOnlyTargetRules Target) : base(Target) 8 | { 9 | PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; 10 | 11 | PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); 12 | 13 | PrivateDependencyModuleNames.AddRange(new string[] { }); 14 | 15 | // Uncomment if you are using Slate UI 16 | // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); 17 | 18 | // Uncomment if you are using online features 19 | // PrivateDependencyModuleNames.Add("OnlineSubsystem"); 20 | 21 | // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Source/ShaderMacro/ShaderMacro.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #include "ShaderMacro.h" 4 | #include "Modules/ModuleManager.h" 5 | 6 | IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, ShaderMacro, "ShaderMacro" ); 7 | -------------------------------------------------------------------------------- /Source/ShaderMacro/ShaderMacro.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | 7 | -------------------------------------------------------------------------------- /Source/ShaderMacro/ShaderMacroGameModeBase.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | 4 | #include "ShaderMacroGameModeBase.h" 5 | 6 | -------------------------------------------------------------------------------- /Source/ShaderMacro/ShaderMacroGameModeBase.h: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | #pragma once 4 | 5 | #include "CoreMinimal.h" 6 | #include "GameFramework/GameModeBase.h" 7 | #include "ShaderMacroGameModeBase.generated.h" 8 | 9 | /** 10 | * 11 | */ 12 | UCLASS() 13 | class SHADERMACRO_API AShaderMacroGameModeBase : public AGameModeBase 14 | { 15 | GENERATED_BODY() 16 | 17 | }; 18 | -------------------------------------------------------------------------------- /Source/ShaderMacroEditor.Target.cs: -------------------------------------------------------------------------------- 1 | // Copyright 1998-2019 Epic Games, Inc. All Rights Reserved. 2 | 3 | using UnrealBuildTool; 4 | using System.Collections.Generic; 5 | 6 | public class ShaderMacroEditorTarget : TargetRules 7 | { 8 | public ShaderMacroEditorTarget( TargetInfo Target) : base(Target) 9 | { 10 | Type = TargetType.Editor; 11 | DefaultBuildSettings = BuildSettingsVersion.V2; 12 | ExtraModuleNames.AddRange( new string[] { "ShaderMacro" } ); 13 | } 14 | } 15 | --------------------------------------------------------------------------------