commit
1e5428816d
144 changed files with 26527 additions and 0 deletions
@ -0,0 +1,156 @@ |
||||
# Define macros (only works in top-level gitattributes files) |
||||
[attr]lfs filter=lfs diff=lfs merge=lfs -text |
||||
[attr]unity-yaml merge=unityyamlmerge eol=lf linguist-language=yaml |
||||
|
||||
# Optionally collapse Unity-generated files on GitHub diffs |
||||
# [attr]unity-yaml merge=unityyamlmerge text linguist-language=yaml linguist-generated |
||||
|
||||
# Unity files |
||||
*.cginc text |
||||
*.compute text linguist-language=hlsl |
||||
*.cs text diff=csharp |
||||
*.raytrace text linguist-language=hlsl |
||||
*.shader text |
||||
|
||||
# Unity JSON files |
||||
*.asmdef text linguist-language=json |
||||
*.asmref text linguist-language=json |
||||
*.index text linguist-language=json |
||||
*.inputactions text linguist-language=json |
||||
*.shadergraph text linguist-language=json |
||||
*.shadersubgraph text linguist-language=json |
||||
|
||||
# Unity UI Toolkit files |
||||
*.tss text diff=css linguist-language=css |
||||
*.uss text diff=css linguist-language=css |
||||
*.uxml text linguist-language=xml linguist-detectable |
||||
|
||||
# Unity YAML |
||||
*.anim unity-yaml |
||||
*.asset unity-yaml |
||||
*.brush unity-yaml |
||||
*.controller unity-yaml |
||||
*.flare unity-yaml |
||||
*.fontsettings unity-yaml |
||||
*.giparams unity-yaml |
||||
*.guiskin unity-yaml |
||||
*.lighting unity-yaml |
||||
*.mask unity-yaml |
||||
*.mat unity-yaml |
||||
*.meta unity-yaml |
||||
*.mixer unity-yaml |
||||
*.overrideController unity-yaml |
||||
*.playable unity-yaml |
||||
*.prefab unity-yaml |
||||
*.preset unity-yaml |
||||
*.renderTexture unity-yaml |
||||
*.scenetemplate unity-yaml |
||||
*.shadervariants unity-yaml |
||||
*.signal unity-yaml |
||||
*.spriteatlas unity-yaml |
||||
*.spriteatlasv2 unity-yaml |
||||
*.terrainlayer unity-yaml |
||||
*.unity unity-yaml |
||||
|
||||
# "physic" for 3D but "physics" for 2D |
||||
*.physicMaterial unity-yaml |
||||
*.physicsMaterial2D unity-yaml |
||||
|
||||
# Exclude third-party plugins from GitHub stats |
||||
Assets/Plugins/** linguist-vendored |
||||
|
||||
# Unity LFS |
||||
*.cubemap lfs |
||||
*.unitypackage lfs |
||||
|
||||
# 3D models |
||||
*.3dm lfs |
||||
*.3ds lfs |
||||
*.blend lfs |
||||
*.c4d lfs |
||||
*.collada lfs |
||||
*.dae lfs |
||||
*.dxf lfs |
||||
*.FBX lfs |
||||
*.fbx lfs |
||||
*.jas lfs |
||||
*.lws lfs |
||||
*.lxo lfs |
||||
*.ma lfs |
||||
*.max lfs |
||||
*.mb lfs |
||||
*.obj lfs |
||||
*.ply lfs |
||||
*.skp lfs |
||||
*.stl lfs |
||||
*.ztl lfs |
||||
|
||||
# Audio |
||||
*.aif lfs |
||||
*.aiff lfs |
||||
*.it lfs |
||||
*.mod lfs |
||||
*.mp3 lfs |
||||
*.ogg lfs |
||||
*.s3m lfs |
||||
*.wav lfs |
||||
*.xm lfs |
||||
|
||||
# Video |
||||
*.asf lfs |
||||
*.avi lfs |
||||
*.flv lfs |
||||
*.mov lfs |
||||
*.mp4 lfs |
||||
*.mpeg lfs |
||||
*.mpg lfs |
||||
*.ogv lfs |
||||
*.wmv lfs |
||||
|
||||
# Images |
||||
*.bmp lfs |
||||
*.exr lfs |
||||
*.gif lfs |
||||
*.hdr lfs |
||||
*.iff lfs |
||||
*.jpeg lfs |
||||
*.jpg lfs |
||||
*.pict lfs |
||||
*.png lfs |
||||
*.psd lfs |
||||
*.tga lfs |
||||
*.tif lfs |
||||
*.tiff lfs |
||||
*.webp lfs |
||||
|
||||
# Compressed Archive |
||||
*.7z lfs |
||||
*.bz2 lfs |
||||
*.gz lfs |
||||
*.rar lfs |
||||
*.tar lfs |
||||
*.zip lfs |
||||
|
||||
# Compiled Dynamic Library |
||||
*.dll lfs |
||||
*.pdb lfs |
||||
*.so lfs |
||||
|
||||
# Fonts |
||||
*.otf lfs |
||||
*.ttf lfs |
||||
|
||||
# Executable/Installer |
||||
*.apk lfs |
||||
*.exe lfs |
||||
|
||||
# Documents |
||||
*.pdf lfs |
||||
|
||||
# ETC |
||||
*.a lfs |
||||
*.reason lfs |
||||
*.rns lfs |
||||
|
||||
# Spine export file for Unity |
||||
*.skel.bytes lfs |
||||
@ -0,0 +1,72 @@ |
||||
# This .gitignore file should be placed at the root of your Unity project directory |
||||
# |
||||
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore |
||||
# |
||||
/[Ll]ibrary/ |
||||
/[Tt]emp/ |
||||
/[Oo]bj/ |
||||
/[Bb]uild/ |
||||
/[Bb]uilds/ |
||||
/[Ll]ogs/ |
||||
/[Uu]ser[Ss]ettings/ |
||||
|
||||
# MemoryCaptures can get excessive in size. |
||||
# They also could contain extremely sensitive data |
||||
/[Mm]emoryCaptures/ |
||||
|
||||
# Recordings can get excessive in size |
||||
/[Rr]ecordings/ |
||||
|
||||
# Uncomment this line if you wish to ignore the asset store tools plugin |
||||
# /[Aa]ssets/AssetStoreTools* |
||||
|
||||
# Autogenerated Jetbrains Rider plugin |
||||
/[Aa]ssets/Plugins/Editor/JetBrains* |
||||
|
||||
# Visual Studio cache directory |
||||
.vs/ |
||||
|
||||
# Gradle cache directory |
||||
.gradle/ |
||||
|
||||
# Autogenerated VS/MD/Consulo solution and project files |
||||
ExportedObj/ |
||||
.consulo/ |
||||
*.csproj |
||||
*.unityproj |
||||
*.sln |
||||
*.suo |
||||
*.tmp |
||||
*.user |
||||
*.userprefs |
||||
*.pidb |
||||
*.booproj |
||||
*.svd |
||||
*.pdb |
||||
*.mdb |
||||
*.opendb |
||||
*.VC.db |
||||
|
||||
# Unity3D generated meta files |
||||
*.pidb.meta |
||||
*.pdb.meta |
||||
*.mdb.meta |
||||
|
||||
# Unity3D generated file on crash reports |
||||
sysinfo.txt |
||||
|
||||
# Builds |
||||
*.apk |
||||
*.aab |
||||
*.unitypackage |
||||
*.app |
||||
|
||||
# Crashlytics generated file |
||||
crashlytics-build.properties |
||||
|
||||
# Packed Addressables |
||||
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* |
||||
|
||||
# Temporary auto-generated Android Assets |
||||
/[Aa]ssets/[Ss]treamingAssets/aa.meta |
||||
/[Aa]ssets/[Ss]treamingAssets/aa/* |
||||
@ -0,0 +1,5 @@ |
||||
{ |
||||
"recommendations": [ |
||||
"visualstudiotoolsforunity.vstuc" |
||||
] |
||||
} |
||||
@ -0,0 +1,10 @@ |
||||
{ |
||||
"version": "0.2.0", |
||||
"configurations": [ |
||||
{ |
||||
"name": "Attach to Unity", |
||||
"type": "vstuc", |
||||
"request": "attach" |
||||
} |
||||
] |
||||
} |
||||
@ -0,0 +1,71 @@ |
||||
{ |
||||
"files.exclude": { |
||||
"**/.DS_Store": true, |
||||
"**/.git": true, |
||||
"**/.vs": true, |
||||
"**/.gitmodules": true, |
||||
"**/.vsconfig": true, |
||||
"**/*.booproj": true, |
||||
"**/*.pidb": true, |
||||
"**/*.suo": true, |
||||
"**/*.user": true, |
||||
"**/*.userprefs": true, |
||||
"**/*.unityproj": true, |
||||
"**/*.dll": true, |
||||
"**/*.exe": true, |
||||
"**/*.pdf": true, |
||||
"**/*.mid": true, |
||||
"**/*.midi": true, |
||||
"**/*.wav": true, |
||||
"**/*.gif": true, |
||||
"**/*.ico": true, |
||||
"**/*.jpg": true, |
||||
"**/*.jpeg": true, |
||||
"**/*.png": true, |
||||
"**/*.psd": true, |
||||
"**/*.tga": true, |
||||
"**/*.tif": true, |
||||
"**/*.tiff": true, |
||||
"**/*.3ds": true, |
||||
"**/*.3DS": true, |
||||
"**/*.fbx": true, |
||||
"**/*.FBX": true, |
||||
"**/*.lxo": true, |
||||
"**/*.LXO": true, |
||||
"**/*.ma": true, |
||||
"**/*.MA": true, |
||||
"**/*.obj": true, |
||||
"**/*.OBJ": true, |
||||
"**/*.asset": true, |
||||
"**/*.cubemap": true, |
||||
"**/*.flare": true, |
||||
"**/*.mat": true, |
||||
"**/*.meta": true, |
||||
"**/*.prefab": true, |
||||
"**/*.unity": true, |
||||
"build/": true, |
||||
"Build/": true, |
||||
"Library/": true, |
||||
"library/": true, |
||||
"obj/": true, |
||||
"Obj/": true, |
||||
"Logs/": true, |
||||
"logs/": true, |
||||
"ProjectSettings/": true, |
||||
"UserSettings/": true, |
||||
"temp/": true, |
||||
"Temp/": true |
||||
}, |
||||
"files.associations": { |
||||
"*.asset": "yaml", |
||||
"*.meta": "yaml", |
||||
"*.prefab": "yaml", |
||||
"*.unity": "yaml", |
||||
}, |
||||
"explorer.fileNesting.enabled": true, |
||||
"explorer.fileNesting.patterns": { |
||||
"*.sln": "*.csproj", |
||||
"*.slnx": "*.csproj" |
||||
}, |
||||
"dotnet.defaultSolution": "Unity-25014-ReadySetRide.slnx" |
||||
} |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 1e2cc9e9ad4f108458033887c97bb038 |
||||
folderAsset: yes |
||||
timeCreated: 1487248984 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 9869ea90af1da7949848b63dddb25d26 |
||||
folderAsset: yes |
||||
timeCreated: 1467127598 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
Binary file not shown.
@ -0,0 +1,15 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 061da04314aaba248977f5671e799370 |
||||
timeCreated: 1467127598 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Documentation/User Guide.pdf |
||||
uploadId: 886976 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 478a5a24ad1152f43ad164da3759717b |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,24 @@ |
||||
{ |
||||
"name": "HBAO.Editor", |
||||
"rootNamespace": "", |
||||
"references": [ |
||||
"GUID:b83dc51897666cb44bdfbf9671f74e85" |
||||
], |
||||
"includePlatforms": [ |
||||
"Editor" |
||||
], |
||||
"excludePlatforms": [], |
||||
"allowUnsafeCode": false, |
||||
"overrideReferences": false, |
||||
"precompiledReferences": [], |
||||
"autoReferenced": true, |
||||
"defineConstraints": [], |
||||
"versionDefines": [ |
||||
{ |
||||
"name": "Unity", |
||||
"expression": "2020.3.13", |
||||
"define": "UNITY_2020_3_13_OR_NEWER" |
||||
} |
||||
], |
||||
"noEngineReferences": false |
||||
} |
||||
@ -0,0 +1,14 @@ |
||||
fileFormatVersion: 2 |
||||
guid: bbd7cb83004dde543aac62cbce764d58 |
||||
AssemblyDefinitionImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Editor/HBAO.Editor.asmdef |
||||
uploadId: 886976 |
||||
@ -0,0 +1,19 @@ |
||||
fileFormatVersion: 2 |
||||
guid: c11bfebf2cb67334d8e543d164ef0cb0 |
||||
timeCreated: 1478884394 |
||||
licenseType: Store |
||||
MonoImporter: |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Editor/HBAOEditor.cs |
||||
uploadId: 886976 |
||||
@ -0,0 +1,19 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 50df544c23aafa84584188552d7a8cd5 |
||||
timeCreated: 1462456119 |
||||
licenseType: Store |
||||
MonoImporter: |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Editor/HBAOGaiaExtension.cs |
||||
uploadId: 886976 |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: fff65aff3cee6c44183cf61a6df77cac |
||||
folderAsset: yes |
||||
timeCreated: 1463304680 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
Binary file not shown.
@ -0,0 +1,62 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 363f071b5e3670a43ba62ba5322fc4d6 |
||||
timeCreated: 1463304735 |
||||
licenseType: Store |
||||
TextureImporter: |
||||
fileIDToRecycleName: {} |
||||
serializedVersion: 2 |
||||
mipmaps: |
||||
mipMapMode: 0 |
||||
enableMipMap: 0 |
||||
linearTexture: 1 |
||||
correctGamma: 0 |
||||
fadeOut: 0 |
||||
borderMipMap: 0 |
||||
mipMapFadeDistanceStart: 1 |
||||
mipMapFadeDistanceEnd: 3 |
||||
bumpmap: |
||||
convertToNormalMap: 0 |
||||
externalNormalMap: 0 |
||||
heightScale: .25 |
||||
normalMapFilter: 0 |
||||
isReadable: 0 |
||||
grayScaleToAlpha: 0 |
||||
generateCubemap: 0 |
||||
cubemapConvolution: 0 |
||||
cubemapConvolutionSteps: 8 |
||||
cubemapConvolutionExponent: 1.5 |
||||
seamlessCubemap: 0 |
||||
textureFormat: -1 |
||||
maxTextureSize: 2048 |
||||
textureSettings: |
||||
filterMode: -1 |
||||
aniso: 1 |
||||
mipBias: -1 |
||||
wrapMode: 1 |
||||
nPOTScale: 0 |
||||
lightmap: 0 |
||||
rGBM: 0 |
||||
compressionQuality: 50 |
||||
spriteMode: 0 |
||||
spriteExtrude: 1 |
||||
spriteMeshType: 1 |
||||
alignment: 0 |
||||
spritePivot: {x: .5, y: .5} |
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
||||
spritePixelsToUnits: 100 |
||||
alphaIsTransparency: 1 |
||||
textureType: 2 |
||||
buildTargetSettings: [] |
||||
spriteSheet: |
||||
sprites: [] |
||||
spritePackingTag: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Editor/Resources/hbao.png |
||||
uploadId: 886976 |
||||
Binary file not shown.
@ -0,0 +1,108 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 6daa87e2aaa1bb04d930ca4b4bc926a7 |
||||
TextureImporter: |
||||
internalIDToNameTable: [] |
||||
externalObjects: {} |
||||
serializedVersion: 10 |
||||
mipmaps: |
||||
mipMapMode: 0 |
||||
enableMipMap: 1 |
||||
sRGBTexture: 1 |
||||
linearTexture: 0 |
||||
fadeOut: 0 |
||||
borderMipMap: 0 |
||||
mipMapsPreserveCoverage: 0 |
||||
alphaTestReferenceValue: 0.5 |
||||
mipMapFadeDistanceStart: 1 |
||||
mipMapFadeDistanceEnd: 3 |
||||
bumpmap: |
||||
convertToNormalMap: 0 |
||||
externalNormalMap: 0 |
||||
heightScale: 0.25 |
||||
normalMapFilter: 0 |
||||
isReadable: 0 |
||||
streamingMipmaps: 0 |
||||
streamingMipmapsPriority: 0 |
||||
grayScaleToAlpha: 0 |
||||
generateCubemap: 6 |
||||
cubemapConvolution: 0 |
||||
seamlessCubemap: 0 |
||||
textureFormat: -1 |
||||
maxTextureSize: 2048 |
||||
textureSettings: |
||||
serializedVersion: 2 |
||||
filterMode: -1 |
||||
aniso: 1 |
||||
mipBias: -100 |
||||
wrapU: -1 |
||||
wrapV: -1 |
||||
wrapW: -1 |
||||
nPOTScale: 0 |
||||
lightmap: 0 |
||||
compressionQuality: 50 |
||||
spriteMode: 1 |
||||
spriteExtrude: 1 |
||||
spriteMeshType: 1 |
||||
alignment: 0 |
||||
spritePivot: {x: 0.5, y: 0.5} |
||||
spritePixelsToUnits: 100 |
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
||||
spriteGenerateFallbackPhysicsShape: 1 |
||||
alphaUsage: 1 |
||||
alphaIsTransparency: 1 |
||||
spriteTessellationDetail: -1 |
||||
textureType: 0 |
||||
textureShape: 1 |
||||
singleChannelComponent: 0 |
||||
maxTextureSizeSet: 0 |
||||
compressionQualitySet: 0 |
||||
textureFormatSet: 0 |
||||
platformSettings: |
||||
- serializedVersion: 2 |
||||
buildTarget: DefaultTexturePlatform |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 50 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
- serializedVersion: 2 |
||||
buildTarget: Standalone |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 50 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
spriteSheet: |
||||
serializedVersion: 2 |
||||
sprites: [] |
||||
outline: [] |
||||
physicsShape: [] |
||||
bones: [] |
||||
spriteID: ea6ccb6043e0b05449baf0ac8d87f817 |
||||
internalID: 0 |
||||
vertices: [] |
||||
indices: |
||||
edges: [] |
||||
weights: [] |
||||
secondaryTextures: [] |
||||
spritePackingTag: |
||||
pSDRemoveMatte: 0 |
||||
pSDShowRemoveMatteOption: 0 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Editor/Resources/icon.png |
||||
uploadId: 886976 |
||||
@ -0,0 +1,307 @@ |
||||
|
||||
Horizon Based Ambient Occlusion (HBAO) is a post processing image effect to use |
||||
in order to add realism to your scenes. It helps accentuating small surface |
||||
details and reproduce light attenuation due to occlusion. |
||||
|
||||
HBAO delivers more accurate AO compared to the other SSAO solutions |
||||
available on the asset store, and this without any compromise on performances. |
||||
|
||||
This algorithm is highly optimized to use minimal GPU time and offers the best |
||||
quality to performance ratio. |
||||
|
||||
|
||||
----------------------------------------------------------------------------- |
||||
Usage |
||||
----------------------------------------------------------------------------- |
||||
|
||||
In order to use this image effect, just add HBAO compoment to your main camera. |
||||
For this you can drag the HBAO.cs script on your camera or select it from the |
||||
Add Component menu (Image Effects/HBAO). |
||||
|
||||
In most scenarios, using medium quality with a medium blur will yield very good |
||||
results. |
||||
|
||||
Depending if you are targetting high performances vs beautiful AO you can use |
||||
the following settings: |
||||
- high performances: low quality with wide blur |
||||
- normal : medium quality with medium blur |
||||
- fine ao: high quality with narrow blur |
||||
|
||||
For even more performances you can use half resolution AO, but it generally |
||||
introduces some objectionable flickering when the camera is in movement. |
||||
|
||||
Using color bleeding is heavier on performances as it requires additional color |
||||
sampling. The normal color bleeding saturation to use is 1. |
||||
|
||||
Important notice: |
||||
The placement of the HBAO component in your post FX stack is really important! |
||||
It should theoretically be the first effect in the chain meaning it should be |
||||
placed on top. |
||||
|
||||
Shader Model 3.0 compatible hardware is required. |
||||
|
||||
|
||||
----------------------------------------------------------------------------- |
||||
Forum thread & support |
||||
----------------------------------------------------------------------------- |
||||
|
||||
Link to the forum thread: |
||||
http://forum.unity3d.com/threads/horizon-based-ambient-occlusion-hbao-image-effect.387374/ |
||||
|
||||
For any support request, please drop me an email at jimmikaelkael@gmail.com |
||||
|
||||
|
||||
----------------------------------------------------------------------------- |
||||
Changelog |
||||
----------------------------------------------------------------------------- |
||||
|
||||
3.7 |
||||
- Fix compile error on Unity 6.4 (URP) |
||||
- Fix for HBAO usage as default profile (URP) |
||||
- Fix pass inputs (normal prepass not required in deferred) and xr eyecount (URP) |
||||
- Fix editor behavior with Lit AO (URP) |
||||
- Fix usage of worldspace normals for URP 10.10+ |
||||
|
||||
3.6.1 |
||||
- Fix compile error on Unity 6.3 |
||||
|
||||
3.6 |
||||
- Added RenderGraph support (URP) |
||||
|
||||
3.5.5 |
||||
- Fix for Unity 2023.3 (URP & HDRP, no RenderGraph support yet) |
||||
|
||||
3.5.4 |
||||
- Fixed broken LitAO (URP) |
||||
|
||||
3.5.3 |
||||
- Fixed right eye issue with Quest (Builtin) |
||||
- Fixed editor warning (URP) |
||||
|
||||
3.5.2 |
||||
- Fixed compatibility with Unity 2023.2 (all pipelines) |
||||
|
||||
3.5.1 |
||||
- Fixed dynamic resolution artefacts (URP and Builtin) |
||||
- Fixed blur uv delta incorrect in some cases |
||||
- Fixed warnings |
||||
|
||||
3.5 |
||||
- Standard pipeline: added VR SPI support |
||||
- Standard pipeline: fix compile error when built-in VR module is disabled |
||||
- Reduced number of shader variants (all pipelines) |
||||
- URP/HDRP: fixed VR SPI projection issue |
||||
- HDRP: fixed issue with R16G16B16A16 and R32G32B32A32 buffer formats |
||||
|
||||
3.4.12 |
||||
- Standard pipeline: fixed composite bug with MSAA and transparent objects |
||||
- HDRP: fix doubled properties in 2022.2 |
||||
|
||||
3.4.11 |
||||
- Fixed bleeding occlusion on screen edges |
||||
|
||||
3.4.10 |
||||
- Fixed bug with orthographic projection |
||||
- Reduced number of shader variants |
||||
- URP: fixed wrong camera view normals on URP versions 10 and 11 |
||||
|
||||
3.4.9 |
||||
- HDRP: fixed AO shifting issue |
||||
|
||||
3.4.8 |
||||
- HDRP: fixed VR SPI |
||||
- URP: prevent color bleeding to be used along with LitAO mode |
||||
- URP: warn about 2021.2+ required for motion vectors (temporal filter) |
||||
|
||||
3.4.7 |
||||
- Fixed temporal filter issues on URP (use BufferedRTHandleSystem) |
||||
- Fixed obsolete hasAdvancedMode field on HDRP |
||||
- Added min/max range for multibounce setting on HDRP |
||||
|
||||
3.4.6 |
||||
- Fixed temporal filtering ghosting issue on URP |
||||
|
||||
3.4.5 |
||||
- Added rendering path option in URP to fix issues with LitAO+Deferred |
||||
- Fixed scene rendered black in URP12 with LitAO and opaque texture enabled |
||||
|
||||
3.4.4 |
||||
- Fixed temporal filtering issue when using camera normals on URP |
||||
|
||||
3.4.3 |
||||
- Fixed wrong camera view normals on URP |
||||
|
||||
3.4.2 |
||||
- Enable temporal filtering on URP (URP12+, Unity 2021.2+) |
||||
|
||||
3.4.1 |
||||
- Fixed Deinterleaving per frame GC allocation on URP |
||||
|
||||
3.4 |
||||
- Added LitAO on URP (requires URP 10.0.0 or newer) |
||||
|
||||
3.3.4 |
||||
- Fixed VR Single Pass on URP |
||||
|
||||
3.3.3 |
||||
- Fixed VR on Standard Render Pipeline |
||||
|
||||
3.3.2 |
||||
- Added support for URP 12.0.0 |
||||
|
||||
3.3.1 |
||||
- Added support for upcoming URP 10.0.0 (support view normals) |
||||
|
||||
3.3 |
||||
- Added VR support to Standard Render Pipeline HBAO |
||||
|
||||
3.2.1 |
||||
- Added assembly definitions for editor scripts |
||||
|
||||
3.2 |
||||
- Fixed colorbleeding white color bleed beyond max distance |
||||
- Switched HBAO for URP to Post Process VolumeComponent |
||||
|
||||
3.1 |
||||
- Added HDRP support |
||||
- Added more settings helper methods |
||||
- Added namespaces for each render pipelines variants |
||||
- Use 16bit floating point texture format for noise when platform supports it |
||||
- Fixed wrong albedoMultipier setter method |
||||
|
||||
3.0 |
||||
- Rewritten scripts/shaders code for Unity 2019.1+ |
||||
- Added scene view effect |
||||
- Added temporal filtering |
||||
- Added interleaved gradient and spatial distribution noises |
||||
- Added possibility to stack AO components (both Standard and Universal Render Pipeline) |
||||
- Added UI for Universal Render Pipeline AO setting assets |
||||
- Fixed wrong RenderTextureFormat for color bleeding |
||||
- Fixed memory leaks |
||||
- Improved number of compiled shader variants |
||||
|
||||
2.9 |
||||
- Fixed URP version shader keywords problem resulting in blackscreen in builds |
||||
- Fixed URP support on OpenGLES2 graphic API |
||||
- Fixed PS4 compilation error |
||||
- Fixed orthographic camera support on OpenGL, OpenGLES2 and OpenGLES3 graphic APIs |
||||
- Fixed AO consistency on various resolutions (render scale, dynamic resolution) |
||||
- Fixed incorrect view normals sampling at half resolution |
||||
- Allowed use of local shader keywords instead of global keywords |
||||
- Removed obsolete random noise, downsampled blur and quarter AO resolution |
||||
|
||||
2.8 |
||||
- Added URP support |
||||
|
||||
2.7.2 |
||||
- Fixed deprecated editor API |
||||
|
||||
2.7.1 |
||||
- Fixed obsolete scripting API |
||||
- Added view normals debug display |
||||
|
||||
2.7 |
||||
- Added multibounce approximation feature to replace older luminance influence setting |
||||
- Improved AO intensity response |
||||
- Improved blur |
||||
- Fixed RGB colormask on composite passes |
||||
|
||||
2.6 |
||||
- Fixed emission not cancelling AO in deferred occlusion |
||||
- Added color bleeding emissive masking |
||||
- Fixed VR Single Pass support in Unity 2017.2 |
||||
|
||||
2.5 |
||||
- Added offscreen samples contribution setting |
||||
- Improved color bleeding performance |
||||
|
||||
2.4 |
||||
- Added support for Single Pass Stereo Rendering |
||||
|
||||
2.3 |
||||
- Fixed Camera.hdr obsolete warning in Unity 5.6 |
||||
- Fixed inconsistent line endings warning in HBAO.shader |
||||
|
||||
2.2 |
||||
- HBAO_Integrated: adjusted to avoid any per frame GC allocation |
||||
- Increased Max Radius Pixels limits to be compliant with 4K resolution |
||||
- Prefixed radius Slider control variable type with namespace to avoid potential ambiguity |
||||
|
||||
2.1 |
||||
- Fixed orthographic camera support with Deinterleaving in Unity 5.5+ |
||||
|
||||
2.0 |
||||
- Added a rendering pipeline integrated HBAO component (HBAO_Integrated.cs) |
||||
- Fixed orthographic camera support in Unity 5.5+ |
||||
|
||||
1.8 |
||||
- Fixed bad rendering path detection in builds |
||||
- Explicitely declared _NoiseTex as shader property |
||||
|
||||
1.7 |
||||
- Added downsampled blur setting |
||||
- Added quarter resolution setting |
||||
- Improved samples distribution (Mersenne Twister) |
||||
- Fixed black line artifacts in half resolution AO using reconstructed normals |
||||
- Fixed SV_Target semantics to the proper case |
||||
- Fixed ambiguous lerp in HBAO fragment |
||||
|
||||
1.6 |
||||
- Added Reconstruct as a per pixel normals option |
||||
- Simplified a few lerps in HBAO shader |
||||
- Removed sliders for max distance and falloff distance so as to remove bounds |
||||
|
||||
1.5 |
||||
- Added deinterleaving which gives performances gain for large radiuses and HD/UltraHD resolutions |
||||
- Fixed luminance influence not handled correctly in debug views |
||||
|
||||
1.4.3 |
||||
- Improved overall performances |
||||
- Added support for orthographic camera projection |
||||
|
||||
1.4.2 |
||||
- Added per pixel normals setting (GBuffer or Camera) |
||||
- Added Max Distance and Distance Falloff settings |
||||
- Fixed AO step size, allowing to get more interesting contact occlusion |
||||
- Moved initialization to OnEnable instead of Start |
||||
- Avoid to modify GUI.Label style directly as to not mess up the stats window |
||||
- Renamed "Show Type" setting to "Display Mode" |
||||
|
||||
1.4.1 |
||||
- Fix editor error when applying a preset in play mode |
||||
|
||||
1.4 |
||||
- Added new user friendly UI & some presets |
||||
- Fixed luminance influence not showing in AO only views |
||||
- Fixed vanishing AO bug in while in editor |
||||
|
||||
1.3.4 |
||||
- Integrate with Gaia as an extension |
||||
|
||||
1.3.3 |
||||
- Added AO base color setting |
||||
- Fix leaked noise texture |
||||
- Fix demo scene |
||||
|
||||
1.3.2: |
||||
- Fix bad rendering path detection in unity editor with camera on "Use Player Settings" |
||||
- Limit the maximum radius in pixels to address the close-up objects performance issue |
||||
- Added an albedo contribution and multiplier for the color bleeding feature in deferred shading |
||||
- Increased intensity upper bound (useful for dark environment) |
||||
|
||||
1.3.1: |
||||
- Improved color bleeding performances |
||||
- Fix NPE when adding the HBAO component to a camera for the 1st time |
||||
|
||||
1.3: |
||||
- Improved performances |
||||
- Improved compatibility (now compiles on every platforms, targetting shader model 3.0) |
||||
- Improved settings (there are less settings, but they are more user-friendly) |
||||
|
||||
1.2: |
||||
- Added Color Beeding feature |
||||
- Fixed artifacts on cutout materials in forward rendering |
||||
|
||||
1.1: |
||||
- Improved blur |
||||
- Added another noise type |
||||
@ -0,0 +1,15 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 5ea4d0d9dc9d11941b341f03453fd6d3 |
||||
timeCreated: 1453642158 |
||||
licenseType: Store |
||||
TextScriptImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Readme.txt |
||||
uploadId: 886976 |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 6b4762034a7dbee44a7dfa37d2418bf2 |
||||
folderAsset: yes |
||||
timeCreated: 1455959812 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,20 @@ |
||||
{ |
||||
"name": "HBAO.Runtime", |
||||
"rootNamespace": "", |
||||
"references": [], |
||||
"includePlatforms": [], |
||||
"excludePlatforms": [], |
||||
"allowUnsafeCode": false, |
||||
"overrideReferences": false, |
||||
"precompiledReferences": [], |
||||
"autoReferenced": true, |
||||
"defineConstraints": [], |
||||
"versionDefines": [ |
||||
{ |
||||
"name": "com.unity.modules.vr", |
||||
"expression": "1.0.0", |
||||
"define": "ENABLE_VR_MODULE" |
||||
} |
||||
], |
||||
"noEngineReferences": false |
||||
} |
||||
@ -0,0 +1,14 @@ |
||||
fileFormatVersion: 2 |
||||
guid: b83dc51897666cb44bdfbf9671f74e85 |
||||
AssemblyDefinitionImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Runtime/HBAO.Runtime.asmdef |
||||
uploadId: 886976 |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,21 @@ |
||||
fileFormatVersion: 2 |
||||
guid: e1580e32f765c994b86a57bb3c49fe75 |
||||
MonoImporter: |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
defaultReferences: |
||||
- noiseTex: {instanceID: 0} |
||||
- quadMesh: {instanceID: 0} |
||||
- hbaoShader: {fileID: 4800000, guid: 7b834eafaedd0d842bb05a969d9d14bd, type: 3} |
||||
executionOrder: 0 |
||||
icon: {fileID: 2800000, guid: 6daa87e2aaa1bb04d930ca4b4bc926a7, type: 3} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Runtime/HBAO.cs |
||||
uploadId: 886976 |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: b9eaca9eab5e52347a811cead6015f6f |
||||
folderAsset: yes |
||||
timeCreated: 1582907081 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 4c2f710d028e8644b9e7012d3657c785 |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: a82bfeb39ff8ba5459ceb4eb8d655938 |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,20 @@ |
||||
{ |
||||
"name": "HBAO.Universal.Editor", |
||||
"rootNamespace": "", |
||||
"references": [ |
||||
"GUID:09d385cb911270749b709e1bb48e9ea1", |
||||
"GUID:df380645f10b7bc4b97d4f5eb6303d95", |
||||
"GUID:3eae0364be2026648bf74846acb8a731" |
||||
], |
||||
"includePlatforms": [ |
||||
"Editor" |
||||
], |
||||
"excludePlatforms": [], |
||||
"allowUnsafeCode": false, |
||||
"overrideReferences": false, |
||||
"precompiledReferences": [], |
||||
"autoReferenced": true, |
||||
"defineConstraints": [], |
||||
"versionDefines": [], |
||||
"noEngineReferences": false |
||||
} |
||||
@ -0,0 +1,7 @@ |
||||
fileFormatVersion: 2 |
||||
guid: f352a4e1c986a0b4e8661cfff9c14881 |
||||
AssemblyDefinitionImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,11 @@ |
||||
fileFormatVersion: 2 |
||||
guid: e055f53efc7d248489d6579ce7685547 |
||||
MonoImporter: |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 2ad43aa805fd6dd44a59e307ed9aa4bc |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
BIN
Assets/Horizon Based Ambient Occlusion/SRP/URP/Editor/Resources/hbao_urp.png (Stored with Git LFS)
BIN
Assets/Horizon Based Ambient Occlusion/SRP/URP/Editor/Resources/hbao_urp.png (Stored with Git LFS)
Binary file not shown.
@ -0,0 +1,115 @@ |
||||
fileFormatVersion: 2 |
||||
guid: ef156e8079ba9474aa9c13a37223ef49 |
||||
TextureImporter: |
||||
internalIDToNameTable: [] |
||||
externalObjects: {} |
||||
serializedVersion: 10 |
||||
mipmaps: |
||||
mipMapMode: 0 |
||||
enableMipMap: 0 |
||||
sRGBTexture: 1 |
||||
linearTexture: 0 |
||||
fadeOut: 0 |
||||
borderMipMap: 0 |
||||
mipMapsPreserveCoverage: 0 |
||||
alphaTestReferenceValue: 0.5 |
||||
mipMapFadeDistanceStart: 1 |
||||
mipMapFadeDistanceEnd: 3 |
||||
bumpmap: |
||||
convertToNormalMap: 0 |
||||
externalNormalMap: 0 |
||||
heightScale: 0.25 |
||||
normalMapFilter: 0 |
||||
isReadable: 0 |
||||
streamingMipmaps: 0 |
||||
streamingMipmapsPriority: 0 |
||||
grayScaleToAlpha: 0 |
||||
generateCubemap: 6 |
||||
cubemapConvolution: 0 |
||||
seamlessCubemap: 0 |
||||
textureFormat: 1 |
||||
maxTextureSize: 2048 |
||||
textureSettings: |
||||
serializedVersion: 2 |
||||
filterMode: -1 |
||||
aniso: 1 |
||||
mipBias: -100 |
||||
wrapU: 1 |
||||
wrapV: 1 |
||||
wrapW: -1 |
||||
nPOTScale: 0 |
||||
lightmap: 0 |
||||
compressionQuality: 50 |
||||
spriteMode: 0 |
||||
spriteExtrude: 1 |
||||
spriteMeshType: 1 |
||||
alignment: 0 |
||||
spritePivot: {x: 0.5, y: 0.5} |
||||
spritePixelsToUnits: 100 |
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
||||
spriteGenerateFallbackPhysicsShape: 1 |
||||
alphaUsage: 1 |
||||
alphaIsTransparency: 1 |
||||
spriteTessellationDetail: -1 |
||||
textureType: 2 |
||||
textureShape: 1 |
||||
singleChannelComponent: 0 |
||||
maxTextureSizeSet: 0 |
||||
compressionQualitySet: 0 |
||||
textureFormatSet: 0 |
||||
platformSettings: |
||||
- serializedVersion: 3 |
||||
buildTarget: DefaultTexturePlatform |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 50 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
forceMaximumCompressionQuality_BC6H_BC7: 0 |
||||
- serializedVersion: 3 |
||||
buildTarget: Standalone |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 50 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
forceMaximumCompressionQuality_BC6H_BC7: 0 |
||||
- serializedVersion: 3 |
||||
buildTarget: WebGL |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 50 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
forceMaximumCompressionQuality_BC6H_BC7: 0 |
||||
spriteSheet: |
||||
serializedVersion: 2 |
||||
sprites: [] |
||||
outline: [] |
||||
physicsShape: [] |
||||
bones: [] |
||||
spriteID: |
||||
internalID: 0 |
||||
vertices: [] |
||||
indices: |
||||
edges: [] |
||||
weights: [] |
||||
secondaryTextures: [] |
||||
spritePackingTag: |
||||
pSDRemoveMatte: 0 |
||||
pSDShowRemoveMatteOption: 0 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 1f906a4e3c3820d4a9e15a21943c91ed |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,23 @@ |
||||
{ |
||||
"name": "HBAO.Universal.Runtime", |
||||
"rootNamespace": "", |
||||
"references": [ |
||||
"GUID:df380645f10b7bc4b97d4f5eb6303d95", |
||||
"GUID:15fc0a57446b3144c949da3e2b9737a9" |
||||
], |
||||
"includePlatforms": [], |
||||
"excludePlatforms": [], |
||||
"allowUnsafeCode": false, |
||||
"overrideReferences": false, |
||||
"precompiledReferences": [], |
||||
"autoReferenced": true, |
||||
"defineConstraints": [], |
||||
"versionDefines": [ |
||||
{ |
||||
"name": "com.unity.modules.vr", |
||||
"expression": "1.0.0", |
||||
"define": "ENABLE_VR_MODULE" |
||||
} |
||||
], |
||||
"noEngineReferences": false |
||||
} |
||||
@ -0,0 +1,7 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 09d385cb911270749b709e1bb48e9ea1 |
||||
AssemblyDefinitionImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,11 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 90fbf49926625114084d7e0c0cffe8d1 |
||||
MonoImporter: |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,13 @@ |
||||
fileFormatVersion: 2 |
||||
guid: f7c2c2c3c19808149a4d3454e1019255 |
||||
MonoImporter: |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
defaultReferences: |
||||
- settings: {fileID: 11400000, guid: 68dde9df85a05a54fbc92e3b6f3a8c42, type: 2} |
||||
- hbaoShader: {fileID: 4800000, guid: bf610497676b34e4dbe0f14fe3fe311c, type: 3} |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 39ee3648c2c58684590305025db692f6 |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: bf610497676b34e4dbe0f14fe3fe311c |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,205 @@ |
||||
//---------------------------------------------------------------------------------- |
||||
// |
||||
// Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. |
||||
// |
||||
// Redistribution and use in source and binary forms, with or without |
||||
// modification, are permitted provided that the following conditions |
||||
// are met: |
||||
// * Redistributions of source code must retain the above copyright |
||||
// notice, this list of conditions and the following disclaimer. |
||||
// * Redistributions in binary form must reproduce the above copyright |
||||
// notice, this list of conditions and the following disclaimer in the |
||||
// documentation and/or other materials provided with the distribution. |
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its |
||||
// contributors may be used to endorse or promote products derived |
||||
// from this software without specific prior written permission. |
||||
// |
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY |
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
// |
||||
//---------------------------------------------------------------------------------- |
||||
|
||||
#ifndef HBAO_AO_INCLUDED |
||||
#define HBAO_AO_INCLUDED |
||||
|
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Macros.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" |
||||
#include "HBAO_Common.hlsl" |
||||
|
||||
inline float3 FetchLayerViewPos(float2 uv) { |
||||
uv = clamp(uv, 0, 1 - _Input_TexelSize.xy * 0.5); // uv guard |
||||
float depth = LinearizeDepth(SAMPLE_TEXTURE2D_X(_DepthTex, sampler_PointClamp, uv).r); |
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw), depth); |
||||
#else |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw) * depth, depth); |
||||
#endif |
||||
} |
||||
|
||||
inline float Falloff(float distanceSquare) { |
||||
// 1 scalar mad instruction |
||||
return distanceSquare * _NegInvRadius2 + 1.0; |
||||
} |
||||
|
||||
inline float ComputeAO(float3 P, float3 N, float3 S) { |
||||
float3 V = S - P; |
||||
float VdotV = dot(V, V); |
||||
float NdotV = dot(N, V) * rsqrt(VdotV); |
||||
|
||||
// Use saturate(x) instead of max(x,0.f) because that is faster on Kepler |
||||
return saturate(NdotV - _AngleBias) * saturate(Falloff(VdotV)); |
||||
} |
||||
|
||||
inline float2 RotateDirections(float2 dir, float2 rot) { |
||||
return float2(dir.x * rot.x - dir.y * rot.y, |
||||
dir.x * rot.y + dir.y * rot.x); |
||||
} |
||||
|
||||
inline float InterleavedGradientNoise(float2 screenPos) { |
||||
// http://www.iryoku.com/downloads/Next-Generation-Post-Processing-in-Call-of-Duty-Advanced-Warfare-v18.pptx (slide 123) |
||||
float3 magic = float3(0.06711056, 0.00583715, 52.9829189); |
||||
return frac(magic.z * frac(dot(screenPos, magic.xy))); |
||||
} |
||||
|
||||
inline float2 FetchNoise(float2 screenPos) { |
||||
#if INTERLEAVED_GRADIENT_NOISE |
||||
// Use Jorge Jimenez's IGN noise and GTAO spatial offsets distribution |
||||
// https://blog.selfshadow.com/publications/s2016-shading-course/activision/s2016_pbs_activision_occlusion.pdf (slide 93) |
||||
return float2(InterleavedGradientNoise(screenPos), SAMPLE_TEXTURE2D(_NoiseTex, sampler_PointRepeat, screenPos / 4.0).g); |
||||
#else |
||||
// (cos(alpha), sin(alpha), jitter) |
||||
return SAMPLE_TEXTURE2D(_NoiseTex, sampler_PointRepeat, screenPos / 4.0).rg; |
||||
#endif |
||||
} |
||||
|
||||
float4 AO_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
//uint2 positionSS = input.uv * _ScreenSize.xy; |
||||
|
||||
#ifdef DEINTERLEAVED |
||||
float3 P = FetchLayerViewPos(uv); |
||||
#else |
||||
float3 P = FetchViewPos(uv); |
||||
#endif |
||||
|
||||
#ifndef DEBUG_VIEWNORMALS |
||||
clip(_MaxDistance - P.z); |
||||
#endif |
||||
|
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
float stepSize = min(_Radius[unity_StereoEyeIndex], _MaxRadiusPixels) / (STEPS + 1.0); |
||||
#else |
||||
float stepSize = min((_Radius[unity_StereoEyeIndex] / P.z), _MaxRadiusPixels) / (STEPS + 1.0); |
||||
#endif |
||||
|
||||
#ifdef DEINTERLEAVED |
||||
float3 N = SAMPLE_TEXTURE2D_X(_NormalsTex, sampler_PointClamp, uv).rgb * 2.0 - 1.0; |
||||
float2 rand = _Jitter; // angle, jitter |
||||
#else |
||||
float3 N = FetchViewNormals(uv, _AO_TexelSize.xy, P); |
||||
//float2 rand = FetchNoise(positionSS); |
||||
//float2 rand = FetchNoise(input.positionCS.xy); |
||||
float2 rand = FetchNoise(uv * _AO_TexelSize.zw); |
||||
#endif |
||||
|
||||
const float alpha = 2.0 * PI / DIRECTIONS; |
||||
float ao = 0; |
||||
|
||||
#if COLOR_BLEEDING |
||||
static float2 cbUVs[DIRECTIONS * STEPS]; |
||||
static float cbContribs[DIRECTIONS * STEPS]; |
||||
#endif |
||||
|
||||
UNITY_UNROLL |
||||
for (int d = 0; d < DIRECTIONS; ++d) { |
||||
float angle = alpha * (float(d) + rand.x + _TemporalParams.x); |
||||
|
||||
// Compute normalized 2D direction |
||||
float cosA, sinA; |
||||
sincos(angle, sinA, cosA); |
||||
float2 direction = float2(cosA, sinA); |
||||
|
||||
// Jitter starting sample within the first step |
||||
float rayPixels = (frac(rand.y + _TemporalParams.y) * stepSize + 1.0); |
||||
|
||||
UNITY_UNROLL |
||||
for (int s = 0; s < STEPS; ++s) { |
||||
|
||||
#ifdef DEINTERLEAVED |
||||
float2 snappedUV = round(rayPixels * direction) * _DeinterleavedAO_TexelSize.xy + uv; |
||||
float3 S = FetchLayerViewPos(snappedUV); |
||||
#else |
||||
float2 snappedUV = round(rayPixels * direction) * _Input_TexelSize.xy + uv; |
||||
float3 S = FetchViewPos(snappedUV); |
||||
#endif |
||||
|
||||
rayPixels += stepSize; |
||||
|
||||
float contrib = ComputeAO(P, N, S); |
||||
#if OFFSCREEN_SAMPLES_CONTRIBUTION |
||||
float2 offscreenAmount = _OffscreenSamplesContrib * (snappedUV - saturate(snappedUV) != 0 ? 1 : 0); |
||||
contrib = max(contrib, offscreenAmount.x); |
||||
contrib = max(contrib, offscreenAmount.y); |
||||
#endif |
||||
ao += contrib; |
||||
|
||||
#if COLOR_BLEEDING |
||||
int sampleIdx = d * s; |
||||
cbUVs[sampleIdx] = snappedUV; |
||||
cbContribs[sampleIdx] = contrib; |
||||
#endif |
||||
} |
||||
} |
||||
|
||||
#ifdef DEBUG_VIEWNORMALS |
||||
return float4(N * 0.5 + 0.5, 1); |
||||
#else |
||||
|
||||
#if COLOR_BLEEDING |
||||
half3 col = half3(0, 0, 0); |
||||
UNITY_UNROLL |
||||
for (int s = 0; s < DIRECTIONS * STEPS; s += 2) { |
||||
half3 emission = SAMPLE_TEXTURE2D_X_LOD(_MainTex, sampler_LinearClamp, cbUVs[s], 0).rgb; |
||||
half average = (emission.x + emission.y + emission.z) / 3; |
||||
half scaledAverage = saturate((average - _ColorBleedBrightnessMaskRange.x) / (_ColorBleedBrightnessMaskRange.y - _ColorBleedBrightnessMaskRange.x + 1e-6)); |
||||
half maskMultiplier = 1 - (scaledAverage * _ColorBleedBrightnessMask); |
||||
col += emission * cbContribs[s] * maskMultiplier; |
||||
} |
||||
float4 aoOutput = float4(col, ao); |
||||
#else |
||||
float aoOutput = ao; |
||||
#endif |
||||
|
||||
// apply bias multiplier |
||||
aoOutput *= (_AOmultiplier / (STEPS * DIRECTIONS)); |
||||
|
||||
float fallOffStart = _MaxDistance - _DistanceFalloff; |
||||
float distFactor = saturate((P.z - fallOffStart) / (_MaxDistance - fallOffStart)); |
||||
|
||||
#if COLOR_BLEEDING |
||||
//aoOutput.rgb = saturate(1 - lerp(dot(aoOutput.rgb, 0.333).xxx, aoOutput.rgb, _ColorBleedSaturation)); |
||||
aoOutput.rgb = saturate(lerp(dot(aoOutput.rgb, 0.333).xxx, aoOutput.rgb, _ColorBleedSaturation)); |
||||
aoOutput = lerp(saturate(float4(aoOutput.rgb, 1 - aoOutput.a)), float4(0, 0, 0, 1), distFactor); |
||||
return aoOutput; |
||||
#else |
||||
aoOutput = lerp(saturate(1 - aoOutput), 1, distFactor); |
||||
return float4(EncodeFloatRG(saturate(P.z * (1.0 / _ProjectionParams.z))), 1.0, aoOutput); |
||||
#endif |
||||
|
||||
#endif // DEBUG_VIEWNORMALS |
||||
} |
||||
|
||||
#endif // HBAO_AO_INCLUDED |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 1361d098ef86d6c41a6a6c41e84c33a4 |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,143 @@ |
||||
//---------------------------------------------------------------------------------- |
||||
// |
||||
// Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. |
||||
// |
||||
// Redistribution and use in source and binary forms, with or without |
||||
// modification, are permitted provided that the following conditions |
||||
// are met: |
||||
// * Redistributions of source code must retain the above copyright |
||||
// notice, this list of conditions and the following disclaimer. |
||||
// * Redistributions in binary form must reproduce the above copyright |
||||
// notice, this list of conditions and the following disclaimer in the |
||||
// documentation and/or other materials provided with the distribution. |
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its |
||||
// contributors may be used to endorse or promote products derived |
||||
// from this software without specific prior written permission. |
||||
// |
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY |
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
// |
||||
//---------------------------------------------------------------------------------- |
||||
|
||||
#ifndef HBAO_BLUR_INCLUDED |
||||
#define HBAO_BLUR_INCLUDED |
||||
|
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" |
||||
#include "HBAO_Common.hlsl" |
||||
|
||||
#if COLOR_BLEEDING |
||||
|
||||
inline void FetchAoAndDepth(float2 uv, inout half4 ao, inout float depth) { |
||||
ao = SAMPLE_TEXTURE2D_X_LOD(_MainTex, sampler_PointClamp, uv, 0); |
||||
depth = LinearizeDepth(FetchRawDepth(uv)); |
||||
} |
||||
|
||||
inline float CrossBilateralWeight(float r, float d, float d0) { |
||||
const float BlurSigma = (float)KERNEL_RADIUS * 0.5; |
||||
const float BlurFalloff = 1.0 / (2.0*BlurSigma*BlurSigma); |
||||
|
||||
float dz = (d0 - d) * _BlurSharpness; |
||||
return exp2(-r*r*BlurFalloff - dz*dz); |
||||
} |
||||
|
||||
inline void ProcessSample(float4 ao, float z, float r, float d0, inout half4 totalAO, inout float totalW) { |
||||
float w = CrossBilateralWeight(r, d0, z); |
||||
totalW += w; |
||||
totalAO += w * ao; |
||||
} |
||||
|
||||
inline void ProcessRadius(float2 uv0, float2 deltaUV, float d0, inout half4 totalAO, inout float totalW) { |
||||
half4 ao; |
||||
float z; |
||||
float2 uv; |
||||
UNITY_UNROLL |
||||
for (int r = 1; r <= KERNEL_RADIUS; r++) { |
||||
uv = uv0 + r * deltaUV; |
||||
FetchAoAndDepth(uv, ao, z); |
||||
ProcessSample(ao, z, r, d0, totalAO, totalW); |
||||
} |
||||
} |
||||
|
||||
inline half4 ComputeBlur(float2 uv0, float2 deltaUV) { |
||||
half4 totalAO; |
||||
float depth; |
||||
FetchAoAndDepth(uv0, totalAO, depth); |
||||
float totalW = 1.0; |
||||
|
||||
ProcessRadius(uv0, -deltaUV, depth, totalAO, totalW); |
||||
ProcessRadius(uv0, deltaUV, depth, totalAO, totalW); |
||||
|
||||
totalAO /= totalW; |
||||
return totalAO; |
||||
} |
||||
|
||||
#else |
||||
|
||||
inline void FetchAoAndDepth(float2 uv, inout half ao, inout float2 depth) { |
||||
float3 aod = SAMPLE_TEXTURE2D_X_LOD(_MainTex, sampler_PointClamp, uv, 0).rga; |
||||
ao = aod.z; |
||||
depth = aod.xy; |
||||
} |
||||
|
||||
inline float CrossBilateralWeight(float r, float d, float d0) { |
||||
const float BlurSigma = (float)KERNEL_RADIUS * 0.5; |
||||
const float BlurFalloff = 1.0 / (2.0*BlurSigma*BlurSigma); |
||||
|
||||
float dz = (d0 - d) * _ProjectionParams.z * _BlurSharpness; |
||||
return exp2(-r*r*BlurFalloff - dz*dz); |
||||
} |
||||
|
||||
inline void ProcessSample(float2 aoz, float r, float d0, inout half totalAO, inout float totalW) { |
||||
float w = CrossBilateralWeight(r, d0, aoz.y); |
||||
totalW += w; |
||||
totalAO += w * aoz.x; |
||||
} |
||||
|
||||
inline void ProcessRadius(float2 uv0, float2 deltaUV, float d0, inout half totalAO, inout float totalW) { |
||||
half ao; |
||||
float z; |
||||
float2 d, uv; |
||||
UNITY_UNROLL |
||||
for (int r = 1; r <= KERNEL_RADIUS; r++) { |
||||
uv = uv0 + r * deltaUV; |
||||
FetchAoAndDepth(uv, ao, d); |
||||
z = DecodeFloatRG(d); |
||||
ProcessSample(float2(ao, z), r, d0, totalAO, totalW); |
||||
} |
||||
} |
||||
|
||||
inline float4 ComputeBlur(float2 uv0, float2 deltaUV) { |
||||
half totalAO; |
||||
float2 depth; |
||||
FetchAoAndDepth(uv0, totalAO, depth); |
||||
float d0 = DecodeFloatRG(depth); |
||||
float totalW = 1.0; |
||||
|
||||
ProcessRadius(uv0, -deltaUV, d0, totalAO, totalW); |
||||
ProcessRadius(uv0, deltaUV, d0, totalAO, totalW); |
||||
|
||||
totalAO /= totalW; |
||||
return float4(depth, 1.0, totalAO); |
||||
} |
||||
#endif // COLOR_BLEEDING |
||||
|
||||
float4 Blur_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
|
||||
return ComputeBlur(uv, _BlurDeltaUV); |
||||
} |
||||
|
||||
#endif // HBAO_BLUR_INCLUDED |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 88f16f7670609254aa357e3d46e3dffe |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,93 @@ |
||||
#ifndef HBAO_COMMON_INCLUDED |
||||
#define HBAO_COMMON_INCLUDED |
||||
|
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" |
||||
#if VERSION_GREATER_EQUAL(10, 0) |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl" |
||||
#endif |
||||
|
||||
inline float FetchRawDepth(float2 uv) { |
||||
return SampleSceneDepth(uv * _TargetScale.xy); |
||||
} |
||||
|
||||
inline float LinearizeDepth(float depth) { |
||||
// References: https://docs.unity3d.com/Manual/SL-PlatformDifferences.html |
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
#if UNITY_REVERSED_Z |
||||
depth = 1 - depth; |
||||
#endif // UNITY_REVERSED_Z |
||||
float linearDepth = _ProjectionParams.y + depth * (_ProjectionParams.z - _ProjectionParams.y); // near + depth * (far - near) |
||||
#else |
||||
float linearDepth = LinearEyeDepth(depth, _ZBufferParams); |
||||
#endif // ORTHOGRAPHIC_PROJECTION |
||||
return linearDepth; |
||||
} |
||||
|
||||
inline float3 FetchViewPos(float2 uv) { |
||||
uv = clamp(uv, 0, 1 - _Input_TexelSize.xy * 0.5); // uv guard |
||||
float depth = LinearizeDepth(FetchRawDepth(uv)); |
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw), depth); |
||||
#else |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw) * depth, depth); |
||||
#endif |
||||
} |
||||
|
||||
inline float3 MinDiff(float3 P, float3 Pr, float3 Pl) { |
||||
float3 V1 = Pr - P; |
||||
float3 V2 = P - Pl; |
||||
return (dot(V1, V1) < dot(V2, V2)) ? V1 : V2; |
||||
} |
||||
|
||||
inline float3 FetchViewNormals(float2 uv, float2 delta, float3 P) { |
||||
#if NORMALS_RECONSTRUCT4 |
||||
float3 Pr, Pl, Pt, Pb; |
||||
Pr = FetchViewPos(uv + float2(delta.x, 0)); |
||||
Pl = FetchViewPos(uv + float2(-delta.x, 0)); |
||||
Pt = FetchViewPos(uv + float2(0, delta.y)); |
||||
Pb = FetchViewPos(uv + float2(0, -delta.y)); |
||||
float3 N = normalize(cross(MinDiff(P, Pr, Pl), MinDiff(P, Pt, Pb))); |
||||
#elif NORMALS_RECONSTRUCT2 |
||||
float3 Pr, Pt; |
||||
Pr = FetchViewPos(uv + float2(delta.x, 0)); |
||||
Pt = FetchViewPos(uv + float2(0, delta.y)); |
||||
float3 N = normalize(cross(Pt - P, P - Pr)); |
||||
#else |
||||
#if VERSION_GREATER_EQUAL(10, 0) |
||||
float3 N = SampleSceneNormals(uv * _TargetScale.xy); |
||||
#if VERSION_GREATER_EQUAL(10, 10) // Universal pipeline 10.10.1(2020.3.49f1) uses world space normals already, as per customer feedback |
||||
N = normalize(TransformWorldToViewDir(N)); // normals are worldspace, convert to viewspace |
||||
N = float3(N.x, -N.yz); |
||||
#else |
||||
N = float3(N.x, -N.y, N.z); |
||||
#endif |
||||
#else |
||||
float3 N = float3(0, 0, 0); |
||||
#endif |
||||
#endif |
||||
return N; |
||||
} |
||||
|
||||
inline float3 FetchViewNormals(float2 uv, float2 delta) { |
||||
|
||||
float3 P = FetchViewPos(uv); |
||||
return FetchViewNormals(uv, delta, P); |
||||
} |
||||
|
||||
// https://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ |
||||
|
||||
inline float2 EncodeFloatRG(float v) { |
||||
float2 enc = float2(1.0, 255.0) * v; |
||||
enc = frac(enc); |
||||
enc.x -= enc.y * (1.0 / 255.0); |
||||
return enc; |
||||
} |
||||
|
||||
inline float DecodeFloatRG(float2 rg) { |
||||
return dot(rg, float2(1.0, 1 / 255.0)); |
||||
} |
||||
|
||||
#endif // HBAO_COMMON_INCLUDED |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: c9db0967d4ddb8d4da2fc53a15906f15 |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,79 @@ |
||||
#ifndef HBAO_COMPOSITE_INCLUDED |
||||
#define HBAO_COMPOSITE_INCLUDED |
||||
|
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" |
||||
#include "HBAO_Common.hlsl" |
||||
|
||||
inline half4 FetchOcclusion(float2 uv) { |
||||
uv *= _HistoryBuffer_RTHandleScale.xy; |
||||
return SAMPLE_TEXTURE2D_X(_HBAOTex, sampler_LinearClamp, uv * _TargetScale.zw); |
||||
} |
||||
|
||||
inline half4 FetchSceneColor(float2 uv) { |
||||
//return LOAD_TEXTURE2D_X(_MainTex, positionSS); // load not supported on GLES2 |
||||
return SAMPLE_TEXTURE2D_X(_MainTex, sampler_PointClamp, uv); |
||||
} |
||||
|
||||
inline half3 MultiBounceAO(float visibility, half3 albedo) { |
||||
half3 a = 2.0404 * albedo - 0.3324; |
||||
half3 b = -4.7951 * albedo + 0.6417; |
||||
half3 c = 2.7552 * albedo + 0.6903; |
||||
|
||||
float x = visibility; |
||||
return max(x, ((x * a + b) * x + c) * x); |
||||
} |
||||
|
||||
float4 Composite_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
//uint2 positionSS = input.uv * _ScreenSize.xy; |
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
|
||||
half4 ao = FetchOcclusion(uv); |
||||
|
||||
ao.a = saturate(pow(abs(ao.a), _Intensity)); |
||||
|
||||
#if LIT_AO |
||||
half3 aoColor = ao.aaa; |
||||
half4 col = ao.aaaa; |
||||
#else |
||||
half3 aoColor = lerp(_BaseColor.rgb, half3(1.0, 1.0, 1.0), ao.a); |
||||
half4 col = FetchSceneColor(uv); |
||||
|
||||
#if MULTIBOUNCE |
||||
aoColor = lerp(aoColor, MultiBounceAO(ao.a, lerp(col.rgb, _BaseColor.rgb, _BaseColor.rgb)), _MultiBounceInfluence); |
||||
#endif |
||||
|
||||
col.rgb *= aoColor; |
||||
|
||||
#if COLOR_BLEEDING |
||||
//col.rgb += 1 - ao.rgb; |
||||
col.rgb += ao.rgb; |
||||
#endif |
||||
#endif // LIT_AO |
||||
|
||||
#if DEBUG_AO |
||||
col.rgb = aoColor; |
||||
#elif DEBUG_COLORBLEEDING && COLOR_BLEEDING |
||||
//col.rgb = 1 - ao.rgb; |
||||
col.rgb = ao.rgb; |
||||
#elif DEBUG_NOAO_AO || DEBUG_AO_AOONLY || DEBUG_NOAO_AOONLY |
||||
if (uv.x <= 0.4985) { |
||||
#if DEBUG_NOAO_AO || DEBUG_NOAO_AOONLY |
||||
col = FetchSceneColor(uv); |
||||
#endif // DEBUG_NOAO_AO || DEBUG_NOAO_AOONLY |
||||
return col; |
||||
} |
||||
if (uv.x > 0.4985 && uv.x < 0.5015) { |
||||
return half4(0, 0, 0, 1); |
||||
} |
||||
#if DEBUG_AO_AOONLY || DEBUG_NOAO_AOONLY |
||||
col.rgb = aoColor; |
||||
#endif // DEBUG_AO_AOONLY) || DEBUG_NOAO_AOONLY |
||||
#endif // DEBUG_AO |
||||
return col; |
||||
} |
||||
|
||||
#endif // HBAO_COMPOSITE_INCLUDED |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 5724686e7ad5fff4cb8cc1ad5529cd06 |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,70 @@ |
||||
#ifndef HBAO_DEINTERLEAVING_INCLUDED |
||||
#define HBAO_DEINTERLEAVING_INCLUDED |
||||
|
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" |
||||
#include "HBAO_Common.hlsl" |
||||
|
||||
struct DeinterleavedOutput { |
||||
float4 Z00 : SV_Target0; |
||||
float4 Z10 : SV_Target1; |
||||
float4 Z01 : SV_Target2; |
||||
float4 Z11 : SV_Target3; |
||||
}; |
||||
|
||||
DeinterleavedOutput DeinterleaveDepth_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
DeinterleavedOutput o; |
||||
|
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
|
||||
float2 pos = floor(uv * _DeinterleavedAO_TexelSize.zw) * 4.0; |
||||
float2 uv00 = (pos + _Deinterleave_Offset00 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv10 = (pos + _Deinterleave_Offset10 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv01 = (pos + _Deinterleave_Offset01 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv11 = (pos + _Deinterleave_Offset11 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
|
||||
o.Z00 = FetchRawDepth(uv00).rrrr; |
||||
o.Z10 = FetchRawDepth(uv10).rrrr; |
||||
o.Z01 = FetchRawDepth(uv01).rrrr; |
||||
o.Z11 = FetchRawDepth(uv11).rrrr; |
||||
return o; |
||||
} |
||||
|
||||
DeinterleavedOutput DeinterleaveNormals_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
DeinterleavedOutput o; |
||||
|
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
|
||||
float2 pos = floor(uv * _DeinterleavedAO_TexelSize.zw) * 4.0; |
||||
float2 uv00 = (pos + _Deinterleave_Offset00 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv10 = (pos + _Deinterleave_Offset10 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv01 = (pos + _Deinterleave_Offset01 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv11 = (pos + _Deinterleave_Offset11 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
|
||||
o.Z00 = float4(FetchViewNormals(uv00, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
o.Z10 = float4(FetchViewNormals(uv10, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
o.Z01 = float4(FetchViewNormals(uv01, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
o.Z11 = float4(FetchViewNormals(uv11, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
|
||||
return o; |
||||
} |
||||
|
||||
half4 ReinterleaveAO_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
|
||||
float2 offset = fmod(floor(uv * _ReinterleavedAO_TexelSize.zw), 4.0); |
||||
uv = (floor(uv * _DeinterleavedAO_TexelSize.zw) + (offset * _DeinterleavedAO_TexelSize.zw) + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
|
||||
return SAMPLE_TEXTURE2D_X(_MainTex, sampler_LinearClamp, uv); |
||||
} |
||||
|
||||
#endif // HBAO_DEINTERLEAVING_INCLUDED |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 713016b17f006794a883de31a276c28e |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,175 @@ |
||||
#ifndef HBAO_TEMPORALFILTER_INCLUDED |
||||
#define HBAO_TEMPORALFILTER_INCLUDED |
||||
|
||||
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" |
||||
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" |
||||
#include "HBAO_Common.hlsl" |
||||
|
||||
struct HistoryOutput { |
||||
float4 aoHistory : SV_Target0; |
||||
#if COLOR_BLEEDING |
||||
half4 colorBleedingHistory : SV_Target1; |
||||
#endif |
||||
}; |
||||
|
||||
#if COLOR_BLEEDING |
||||
#define CTYPE half4 |
||||
#else |
||||
#define CTYPE half |
||||
#endif |
||||
|
||||
inline void FetchAoAndDepth(float2 uv, inout CTYPE ao, inout float2 depth) { |
||||
#if COLOR_BLEEDING |
||||
ao = SAMPLE_TEXTURE2D_X(_HBAOTex, sampler_PointClamp, uv); |
||||
depth = EncodeFloatRG(saturate(LinearizeDepth(FetchRawDepth(uv)) * (1.0 / _ProjectionParams.z))); |
||||
#else |
||||
float3 aod = SAMPLE_TEXTURE2D_X(_HBAOTex, sampler_PointClamp, uv).rga; |
||||
ao = aod.z; |
||||
depth = aod.xy; |
||||
#endif |
||||
} |
||||
|
||||
inline float2 FetchMotionVectors(float2 uv) { |
||||
return SAMPLE_TEXTURE2D_X(_MotionVectorTexture, sampler_PointClamp, uv * _TargetScale.xy).rg; |
||||
} |
||||
|
||||
inline float4 FetchAoHistory(float2 uv) { |
||||
return SAMPLE_TEXTURE2D_X(_MainTex, sampler_LinearClamp, uv * _HistoryBuffer_RTHandleScale.zw); |
||||
} |
||||
|
||||
inline half4 FetchColorBleedingHistory(float2 uv) { |
||||
return SAMPLE_TEXTURE2D_X(_TempTex, sampler_LinearClamp, uv * _HistoryBuffer_RTHandleScale.zw); |
||||
} |
||||
|
||||
inline CTYPE FetchNeighbor(float2 uv, float2 offset) { |
||||
#if COLOR_BLEEDING |
||||
return SAMPLE_TEXTURE2D_X(_HBAOTex, sampler_PointClamp, uv + _AO_TexelSize.xy * offset); |
||||
#else |
||||
return SAMPLE_TEXTURE2D_X(_HBAOTex, sampler_PointClamp, uv + _AO_TexelSize.xy * offset).a; |
||||
#endif |
||||
} |
||||
|
||||
inline half DisocclusionTest(float2 uvm1, float2 depth, float2 depthm1) { |
||||
|
||||
// disocclusion test |
||||
// https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/gdc12/GDC12_Bavoil_Stable_SSAO_In_BF3_With_STF.pdf (Page 19) |
||||
float z = DecodeFloatRG(depth); |
||||
float zm1 = DecodeFloatRG(depthm1); |
||||
// for fetching zi-1, use clamp-to-border to discard out-of-frame data, with borderZ = 0.f |
||||
// https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/gdc12/GDC12_Bavoil_Stable_SSAO_In_BF3_With_STF.pdf (Page 39) |
||||
// if (uvm1.x < 0 || uvm1.y < 0 || uvm1.x > 1 || uvm1.y > 1) zm1 = 0; |
||||
// if (uvm1.x < 0 || uvm1.y < 0 || uvm1.x > 1 || uvm1.y > 1) => dot(step(half4(uvm1, 1, 1), half4(0, 0, uvm1)), 1) is 1 if out-of-frame, so |
||||
zm1 *= 1.0 - dot(step(float4(uvm1, 1, 1), float4(0, 0, uvm1)), 1); |
||||
// relaxed disocclusion test: abs(1.0 - (z / zm1)) > 0.1 => 10% |
||||
// float disocclusion = max(sign(abs(1.0 - (z / zm1)) - 0.1), 0.0); |
||||
float disocclusion = abs(1.0 - (z / zm1)) > 0.1; |
||||
|
||||
return disocclusion; |
||||
} |
||||
|
||||
inline CTYPE VarianceClipping(float2 uv, CTYPE ao, CTYPE aom1, float velocityWeight) { |
||||
|
||||
// neighborhood clamping |
||||
// http://twvideo01.ubm-us.net/o1/vault/gdc2016/Presentations/Pedersen_LasseJonFuglsang_TemporalReprojectionAntiAliasing.pdf // (pages 26-28) |
||||
// superseded by variance clipping |
||||
// http://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf (page 23-29) |
||||
#if VARIANCE_CLIPPING_4TAP |
||||
CTYPE cT = FetchNeighbor(uv, float2(0, 1)); |
||||
CTYPE cR = FetchNeighbor(uv, float2(1, 0)); |
||||
CTYPE cB = FetchNeighbor(uv, float2(0, -1)); |
||||
CTYPE cL = FetchNeighbor(uv, float2(-1, 0)); |
||||
// compute 1st and 2nd color moments |
||||
CTYPE m1 = ao + cT + cR + cB + cL; |
||||
CTYPE m2 = ao * ao + cT * cT + cR * cR + cB * cB + cL * cL; |
||||
// aabb from mean u and variance sigma2 |
||||
CTYPE mu = m1 / 5.0; |
||||
CTYPE sigma = sqrt(m2 / 5.0 - mu * mu); |
||||
|
||||
#elif VARIANCE_CLIPPING_8TAP |
||||
CTYPE cTL = FetchNeighbor(uv, float2(-1, 1)); |
||||
CTYPE cT = FetchNeighbor(uv, float2(0, 1)); |
||||
CTYPE cTR = FetchNeighbor(uv, float2(1, 1)); |
||||
CTYPE cR = FetchNeighbor(uv, float2(1, 0)); |
||||
CTYPE cBR = FetchNeighbor(uv, float2(1, -1)); |
||||
CTYPE cB = FetchNeighbor(uv, float2(0, -1)); |
||||
CTYPE cBL = FetchNeighbor(uv, float2(-1, -1)); |
||||
CTYPE cL = FetchNeighbor(uv, float2(-1, 0)); |
||||
// compute 1st and 2nd color moments |
||||
CTYPE m1 = ao + cTL + cT + cTR + cR + cBR + cB + cBL + cL; |
||||
CTYPE m2 = ao * ao + cTL * cTL + cT * cT + cTR * cTR + cR * cR + cBR * cBR + cB * cB + cBL * cBL + cL * cL; |
||||
// aabb from mean u and variance sigma2 |
||||
CTYPE mu = m1 / 9.0; |
||||
CTYPE sigma = sqrt(m2 / 9.0 - mu * mu); |
||||
#endif |
||||
|
||||
#if VARIANCE_CLIPPING_4TAP || VARIANCE_CLIPPING_8TAP |
||||
float gamma = lerp(75.0, 0.75, velocityWeight); // scale down sigma for reduced ghosting |
||||
CTYPE cmin = mu - gamma * sigma; |
||||
CTYPE cmax = mu + gamma * sigma; |
||||
|
||||
// clipping |
||||
return clamp(aom1, cmin, cmax); |
||||
#else |
||||
return aom1; |
||||
#endif |
||||
} |
||||
|
||||
HistoryOutput TemporalFilter_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
float2 uv = UnityStereoTransformScreenSpaceTex(input.uv); |
||||
|
||||
// fetch current frame data |
||||
CTYPE ao; float2 depth; |
||||
FetchAoAndDepth(uv, ao, depth); |
||||
|
||||
// fetch motion vectors, calculate previous frame uv |
||||
float2 mv = FetchMotionVectors(uv); |
||||
float2 uvm1 = uv - mv.xy; |
||||
float mvl = length(mv); |
||||
|
||||
// fetch history |
||||
float4 aoHistory = FetchAoHistory(uvm1); |
||||
#if COLOR_BLEEDING |
||||
half4 colorBleedingHistory = FetchColorBleedingHistory(uvm1); |
||||
CTYPE aom1 = colorBleedingHistory; |
||||
#else |
||||
CTYPE aom1 = aoHistory.w; |
||||
#endif |
||||
float2 depthm1 = aoHistory.xy; |
||||
float mvlm1 = aoHistory.z; |
||||
|
||||
// velocity weight |
||||
float velocityWeight = saturate(abs(mvl - mvlm1) * 300.0); |
||||
|
||||
// do disocclusion test |
||||
half disocclusion = DisocclusionTest(uvm1, depth, depthm1); |
||||
|
||||
// apply velocity weight and disocclusion |
||||
#if COLOR_BLEEDING |
||||
aom1.a = aom1.a + saturate(dot(float2(velocityWeight, disocclusion), 1.0)) * (ao.a - aom1.a); |
||||
#else |
||||
aom1 = aom1 + saturate(dot(float2(velocityWeight, disocclusion), 1.0)) * (ao - aom1); |
||||
#endif |
||||
|
||||
// do variance clipping |
||||
aom1 = VarianceClipping(uv, ao, aom1, velocityWeight); |
||||
|
||||
// exponential accumulation buffer |
||||
// http://www.klayge.org/material/4_11/Filmic%20SMAA%20v7.pdf (page 54) |
||||
// http://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf (page 13) |
||||
ao = aom1 + 0.1 * (ao - aom1); |
||||
|
||||
HistoryOutput o; |
||||
#if COLOR_BLEEDING |
||||
o.aoHistory = float4(depth, mvl, ao.a); |
||||
o.colorBleedingHistory = ao; |
||||
#else |
||||
o.aoHistory = float4(depth, mvl, ao); |
||||
#endif |
||||
|
||||
return o; |
||||
} |
||||
|
||||
#endif // HBAO_TEMPORALFILTER_INCLUDED |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: bbf71e1c97b8d654da3f7646050e713e |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,9 @@ |
||||
fileFormatVersion: 2 |
||||
guid: a4a5705f6447808468fca071356bd185 |
||||
folderAsset: yes |
||||
timeCreated: 1455959813 |
||||
licenseType: Store |
||||
DefaultImporter: |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 7b834eafaedd0d842bb05a969d9d14bd |
||||
timeCreated: 1453645791 |
||||
licenseType: Store |
||||
ShaderImporter: |
||||
defaultTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO.shader |
||||
uploadId: 886976 |
||||
@ -0,0 +1,204 @@ |
||||
//---------------------------------------------------------------------------------- |
||||
// |
||||
// Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. |
||||
// |
||||
// Redistribution and use in source and binary forms, with or without |
||||
// modification, are permitted provided that the following conditions |
||||
// are met: |
||||
// * Redistributions of source code must retain the above copyright |
||||
// notice, this list of conditions and the following disclaimer. |
||||
// * Redistributions in binary form must reproduce the above copyright |
||||
// notice, this list of conditions and the following disclaimer in the |
||||
// documentation and/or other materials provided with the distribution. |
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its |
||||
// contributors may be used to endorse or promote products derived |
||||
// from this software without specific prior written permission. |
||||
// |
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY |
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
// |
||||
//---------------------------------------------------------------------------------- |
||||
|
||||
#ifndef HBAO_AO_INCLUDED |
||||
#define HBAO_AO_INCLUDED |
||||
|
||||
#include "UnityCG.cginc" |
||||
#include "HBAO_Common.cginc" |
||||
|
||||
inline float3 FetchLayerViewPos(float2 uv) { |
||||
uv = clamp(uv, 0, 1 - _Input_TexelSize.xy * 0.5); // uv guard |
||||
float depth = LinearizeDepth(SAMPLE_DEPTH_TEXTURE(_DepthTex, uv)); |
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw), depth); |
||||
#else |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw) * depth, depth); |
||||
#endif |
||||
} |
||||
|
||||
inline float Falloff(float distanceSquare) { |
||||
// 1 scalar mad instruction |
||||
return distanceSquare * _NegInvRadius2 + 1.0; |
||||
} |
||||
|
||||
inline float ComputeAO(float3 P, float3 N, float3 S) { |
||||
float3 V = S - P; |
||||
float VdotV = dot(V, V); |
||||
float NdotV = dot(N, V) * rsqrt(VdotV); |
||||
|
||||
// Use saturate(x) instead of max(x,0.f) because that is faster on Kepler |
||||
return saturate(NdotV - _AngleBias) * saturate(Falloff(VdotV)); |
||||
} |
||||
|
||||
inline float2 RotateDirections(float2 dir, float2 rot) { |
||||
return float2(dir.x * rot.x - dir.y * rot.y, |
||||
dir.x * rot.y + dir.y * rot.x); |
||||
} |
||||
|
||||
inline float InterleavedGradientNoise(float2 screenPos) { |
||||
// http://www.iryoku.com/downloads/Next-Generation-Post-Processing-in-Call-of-Duty-Advanced-Warfare-v18.pptx (slide 123) |
||||
float3 magic = float3(0.06711056, 0.00583715, 52.9829189); |
||||
return frac(magic.z * frac(dot(screenPos, magic.xy))); |
||||
} |
||||
|
||||
inline float2 FetchNoise(float2 screenPos) { |
||||
#if INTERLEAVED_GRADIENT_NOISE |
||||
// Use Jorge Jimenez's IGN noise and GTAO spatial offsets distribution |
||||
// https://blog.selfshadow.com/publications/s2016-shading-course/activision/s2016_pbs_activision_occlusion.pdf (slide 93) |
||||
return float2(InterleavedGradientNoise(screenPos), UNITY_SAMPLE_TEX2D(_NoiseTex, screenPos / 4.0).g); |
||||
#else |
||||
// (cos(alpha), sin(alpha), jitter) |
||||
return UNITY_SAMPLE_TEX2D(_NoiseTex, screenPos / 4.0).rg; |
||||
#endif |
||||
} |
||||
|
||||
float4 AO_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
#ifdef DEINTERLEAVED |
||||
float3 P = FetchLayerViewPos(input.uv); |
||||
#else |
||||
float3 P = FetchViewPos(input.uv); |
||||
#endif |
||||
|
||||
#ifndef DEBUG_VIEWNORMALS |
||||
clip(_MaxDistance - P.z); |
||||
#endif |
||||
|
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
float stepSize = min(_Radius[unity_StereoEyeIndex], _MaxRadiusPixels) / (STEPS + 1.0); |
||||
#else |
||||
float stepSize = min((_Radius[unity_StereoEyeIndex] / P.z), _MaxRadiusPixels) / (STEPS + 1.0); |
||||
#endif |
||||
|
||||
#ifdef DEINTERLEAVED |
||||
float3 N = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_NormalsTex, input.uv).rgb * 2.0 - 1.0; |
||||
float2 rand = _Jitter; // angle, jitter |
||||
#else |
||||
float3 N = FetchViewNormals(input.uv, _AO_TexelSize.xy, P); |
||||
float2 rand = FetchNoise(input.uv * _AO_TexelSize.zw); // angle, jitter |
||||
#endif |
||||
|
||||
const float alpha = 2.0 * UNITY_PI / DIRECTIONS; |
||||
float ao = 0; |
||||
|
||||
#if COLOR_BLEEDING |
||||
static float2 cbUVs[DIRECTIONS * STEPS]; |
||||
static float cbContribs[DIRECTIONS * STEPS]; |
||||
#endif |
||||
|
||||
UNITY_UNROLL |
||||
for (int d = 0; d < DIRECTIONS; ++d) { |
||||
float angle = alpha * (float(d) + rand.x + _TemporalParams.x); |
||||
|
||||
// Compute normalized 2D direction |
||||
float cosA, sinA; |
||||
sincos(angle, sinA, cosA); |
||||
float2 direction = float2(cosA, sinA); |
||||
|
||||
// Jitter starting sample within the first step |
||||
float rayPixels = (frac(rand.y + _TemporalParams.y) * stepSize + 1.0); |
||||
|
||||
UNITY_UNROLL |
||||
for (int s = 0; s < STEPS; ++s) { |
||||
|
||||
#ifdef DEINTERLEAVED |
||||
float2 snappedUV = round(rayPixels * direction) * _DeinterleavedAO_TexelSize.xy + input.uv; |
||||
float3 S = FetchLayerViewPos(snappedUV); |
||||
#else |
||||
float2 snappedUV = round(rayPixels * direction) * _Input_TexelSize.xy + input.uv; |
||||
float3 S = FetchViewPos(snappedUV); |
||||
#endif |
||||
rayPixels += stepSize; |
||||
|
||||
float contrib = ComputeAO(P, N, S); |
||||
|
||||
#if OFFSCREEN_SAMPLES_CONTRIBUTION |
||||
float2 offscreenAmount = _OffscreenSamplesContrib * (snappedUV - saturate(snappedUV) != 0 ? 1 : 0); |
||||
contrib = max(contrib, offscreenAmount.x); |
||||
contrib = max(contrib, offscreenAmount.y); |
||||
#endif |
||||
ao += contrib; |
||||
|
||||
#if COLOR_BLEEDING |
||||
int sampleIdx = d * s; |
||||
cbUVs[sampleIdx] = snappedUV; |
||||
cbContribs[sampleIdx] = contrib; |
||||
#endif |
||||
} |
||||
} |
||||
|
||||
#ifdef DEBUG_VIEWNORMALS |
||||
N = float3(N.x, -N.y, N.z); |
||||
return float4(N * 0.5 + 0.5, 1); |
||||
#else |
||||
|
||||
#if COLOR_BLEEDING |
||||
half3 col = half3(0, 0, 0); |
||||
UNITY_UNROLL |
||||
for (int s = 0; s < DIRECTIONS * STEPS; s += 2) { |
||||
half3 emission = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, cbUVs[s]).rgb; |
||||
half average = (emission.x + emission.y + emission.z) / 3; |
||||
half scaledAverage = saturate((average - _ColorBleedBrightnessMaskRange.x) / (_ColorBleedBrightnessMaskRange.y - _ColorBleedBrightnessMaskRange.x + 1e-6)); |
||||
half maskMultiplier = 1 - (scaledAverage * _ColorBleedBrightnessMask); |
||||
col += emission * cbContribs[s] * maskMultiplier; |
||||
} |
||||
#if DEFERRED_SHADING |
||||
half3 albedo = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_CameraGBufferTexture0, input.uv).rgb * 0.8 + 0.2; |
||||
albedo *= _AlbedoMultiplier; |
||||
#else |
||||
half3 albedo = half3(1, 1, 1); |
||||
#endif |
||||
float4 aoOutput = float4(col, ao); |
||||
#else |
||||
float aoOutput = ao; |
||||
#endif |
||||
|
||||
// apply bias multiplier |
||||
aoOutput *= (_AOmultiplier / (STEPS * DIRECTIONS)); |
||||
|
||||
float fallOffStart = _MaxDistance - _DistanceFalloff; |
||||
float distFactor = saturate((P.z - fallOffStart) / (_MaxDistance - fallOffStart)); |
||||
|
||||
#if COLOR_BLEEDING |
||||
//aoOutput.rgb = saturate(1 - lerp(dot(aoOutput.rgb, 0.333).xxx, aoOutput.rgb * albedo, _ColorBleedSaturation)); |
||||
aoOutput.rgb = saturate(lerp(dot(aoOutput.rgb, 0.333).xxx, aoOutput.rgb * albedo, _ColorBleedSaturation)); |
||||
aoOutput = lerp(saturate(float4(aoOutput.rgb, 1 - aoOutput.a)), float4(0, 0, 0, 1), distFactor); |
||||
return aoOutput; |
||||
#else |
||||
aoOutput = lerp(saturate(1 - aoOutput), 1, distFactor); |
||||
return float4(EncodeFloatRG(saturate(P.z * (1.0 / _ProjectionParams.z))), 1.0, aoOutput); |
||||
#endif |
||||
|
||||
#endif // DEBUG_VIEWNORMALS |
||||
} |
||||
#endif // HBAO_AO_INCLUDED |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: aa7be86dd68319442ac4a9c85bb21c81 |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO_AO.cginc |
||||
uploadId: 886976 |
||||
@ -0,0 +1,139 @@ |
||||
//---------------------------------------------------------------------------------- |
||||
// |
||||
// Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. |
||||
// |
||||
// Redistribution and use in source and binary forms, with or without |
||||
// modification, are permitted provided that the following conditions |
||||
// are met: |
||||
// * Redistributions of source code must retain the above copyright |
||||
// notice, this list of conditions and the following disclaimer. |
||||
// * Redistributions in binary form must reproduce the above copyright |
||||
// notice, this list of conditions and the following disclaimer in the |
||||
// documentation and/or other materials provided with the distribution. |
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its |
||||
// contributors may be used to endorse or promote products derived |
||||
// from this software without specific prior written permission. |
||||
// |
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY |
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
// |
||||
//---------------------------------------------------------------------------------- |
||||
|
||||
#ifndef HBAO_BLUR_INCLUDED |
||||
#define HBAO_BLUR_INCLUDED |
||||
|
||||
#include "HBAO_Common.cginc" |
||||
|
||||
#if COLOR_BLEEDING |
||||
|
||||
inline void FetchAoAndDepth(float2 uv, inout half4 ao, inout float depth) { |
||||
ao = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv); |
||||
depth = LinearizeDepth(FetchRawDepth(uv)); |
||||
} |
||||
|
||||
inline float CrossBilateralWeight(float r, float d, float d0) { |
||||
const float BlurSigma = (float)KERNEL_RADIUS * 0.5; |
||||
const float BlurFalloff = 1.0 / (2.0*BlurSigma*BlurSigma); |
||||
|
||||
float dz = (d0 - d) * _BlurSharpness; |
||||
return exp2(-r*r*BlurFalloff - dz*dz); |
||||
} |
||||
|
||||
inline void ProcessSample(float4 ao, float z, float r, float d0, inout half4 totalAO, inout float totalW) { |
||||
float w = CrossBilateralWeight(r, d0, z); |
||||
totalW += w; |
||||
totalAO += w * ao; |
||||
} |
||||
|
||||
inline void ProcessRadius(float2 uv0, float2 deltaUV, float d0, inout half4 totalAO, inout float totalW) { |
||||
half4 ao; |
||||
float z; |
||||
float2 uv; |
||||
UNITY_UNROLL |
||||
for (int r = 1; r <= KERNEL_RADIUS; r++) { |
||||
uv = uv0 + r * deltaUV; |
||||
FetchAoAndDepth(uv, ao, z); |
||||
ProcessSample(ao, z, r, d0, totalAO, totalW); |
||||
} |
||||
} |
||||
|
||||
inline half4 ComputeBlur(float2 uv0, float2 deltaUV) { |
||||
half4 totalAO; |
||||
float depth; |
||||
FetchAoAndDepth(uv0, totalAO, depth); |
||||
float totalW = 1.0; |
||||
|
||||
ProcessRadius(uv0, -deltaUV, depth, totalAO, totalW); |
||||
ProcessRadius(uv0, deltaUV, depth, totalAO, totalW); |
||||
|
||||
totalAO /= totalW; |
||||
return totalAO; |
||||
} |
||||
|
||||
#else |
||||
|
||||
inline void FetchAoAndDepth(float2 uv, inout half ao, inout float2 depth) { |
||||
float3 aod = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv).rga; |
||||
ao = aod.z; |
||||
depth = aod.xy; |
||||
} |
||||
|
||||
inline float CrossBilateralWeight(float r, float d, float d0) { |
||||
const float BlurSigma = (float)KERNEL_RADIUS * 0.5; |
||||
const float BlurFalloff = 1.0 / (2.0*BlurSigma*BlurSigma); |
||||
|
||||
float dz = (d0 - d) * _ProjectionParams.z * _BlurSharpness; |
||||
return exp2(-r*r*BlurFalloff - dz*dz); |
||||
} |
||||
|
||||
inline void ProcessSample(float2 aoz, float r, float d0, inout half totalAO, inout float totalW) { |
||||
float w = CrossBilateralWeight(r, d0, aoz.y); |
||||
totalW += w; |
||||
totalAO += w * aoz.x; |
||||
} |
||||
|
||||
inline void ProcessRadius(float2 uv0, float2 deltaUV, float d0, inout half totalAO, inout float totalW) { |
||||
half ao; |
||||
float z; |
||||
float2 d, uv; |
||||
UNITY_UNROLL |
||||
for (int r = 1; r <= KERNEL_RADIUS; r++) { |
||||
uv = uv0 + r * deltaUV; |
||||
FetchAoAndDepth(uv, ao, d); |
||||
z = DecodeFloatRG(d); |
||||
ProcessSample(float2(ao, z), r, d0, totalAO, totalW); |
||||
} |
||||
} |
||||
|
||||
inline float4 ComputeBlur(float2 uv0, float2 deltaUV) { |
||||
half totalAO; |
||||
float2 depth; |
||||
FetchAoAndDepth(uv0, totalAO, depth); |
||||
float d0 = DecodeFloatRG(depth); |
||||
float totalW = 1.0; |
||||
|
||||
ProcessRadius(uv0, -deltaUV, d0, totalAO, totalW); |
||||
ProcessRadius(uv0, deltaUV, d0, totalAO, totalW); |
||||
|
||||
totalAO /= totalW; |
||||
return float4(depth, 1.0, totalAO); |
||||
} |
||||
#endif // COLOR_BLEEDING |
||||
|
||||
float4 Blur_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
return ComputeBlur(input.uv, _BlurDeltaUV); |
||||
} |
||||
|
||||
#endif // HBAO_BLUR_INCLUDED |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 6fd3fc8e7b174414084ef2a2f3ce7cc0 |
||||
timeCreated: 1453540070 |
||||
licenseType: Store |
||||
ShaderImporter: |
||||
defaultTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO_Blur.cginc |
||||
uploadId: 886976 |
||||
@ -0,0 +1,67 @@ |
||||
#ifndef HBAO_COMMON_INCLUDED |
||||
#define HBAO_COMMON_INCLUDED |
||||
|
||||
#include "UnityCG.cginc" |
||||
|
||||
inline float FetchRawDepth(float2 uv) { |
||||
return SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, uv * _TargetScale.xy); |
||||
} |
||||
|
||||
inline float LinearizeDepth(float depth) { |
||||
// References: https://docs.unity3d.com/Manual/SL-PlatformDifferences.html |
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
#if UNITY_REVERSED_Z |
||||
depth = 1 - depth; |
||||
#endif // UNITY_REVERSED_Z |
||||
float linearDepth = _ProjectionParams.y + depth * (_ProjectionParams.z - _ProjectionParams.y); // near + depth * (far - near) |
||||
#else |
||||
float linearDepth = LinearEyeDepth(depth); |
||||
#endif // ORTHOGRAPHIC_PROJECTION |
||||
return linearDepth; |
||||
} |
||||
|
||||
inline float3 FetchViewPos(float2 uv) { |
||||
uv = clamp(uv, 0, 1 - _Input_TexelSize.xy * 0.5); // uv guard |
||||
float depth = LinearizeDepth(FetchRawDepth(uv)); |
||||
#if ORTHOGRAPHIC_PROJECTION |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw), depth); |
||||
#else |
||||
return float3((uv * _UVToView[unity_StereoEyeIndex].xy + _UVToView[unity_StereoEyeIndex].zw) * depth, depth); |
||||
#endif |
||||
} |
||||
|
||||
inline float3 MinDiff(float3 P, float3 Pr, float3 Pl) { |
||||
float3 V1 = Pr - P; |
||||
float3 V2 = P - Pl; |
||||
return (dot(V1, V1) < dot(V2, V2)) ? V1 : V2; |
||||
} |
||||
|
||||
inline float3 FetchViewNormals(float2 uv, float2 delta, float3 P) { |
||||
#if NORMALS_RECONSTRUCT |
||||
float3 Pr, Pl, Pt, Pb; |
||||
Pr = FetchViewPos(uv + float2(delta.x, 0)); |
||||
Pl = FetchViewPos(uv + float2(-delta.x, 0)); |
||||
Pt = FetchViewPos(uv + float2(0, delta.y)); |
||||
Pb = FetchViewPos(uv + float2(0, -delta.y)); |
||||
float3 N = normalize(cross(MinDiff(P, Pr, Pl), MinDiff(P, Pt, Pb))); |
||||
#else |
||||
#if NORMALS_CAMERA |
||||
float3 N = DecodeViewNormalStereo(UNITY_SAMPLE_SCREENSPACE_TEXTURE(_CameraDepthNormalsTexture, uv * _TargetScale.xy)); |
||||
#else |
||||
float3 N = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_CameraGBufferTexture2, uv * _TargetScale.xy).rgb * 2.0 - 1.0; |
||||
//N = mul((float3x3)_WorldToCameraMatrix, N); |
||||
N = mul((float3x3)UNITY_MATRIX_V, N); |
||||
#endif // NORMALS_CAMERA |
||||
N = float3(N.x, -N.yz); |
||||
#endif // NORMALS_RECONSTRUCT |
||||
|
||||
return N; |
||||
} |
||||
|
||||
inline float3 FetchViewNormals(float2 uv, float2 delta) { |
||||
|
||||
float3 P = FetchViewPos(uv); |
||||
return FetchViewNormals(uv, delta, P); |
||||
} |
||||
|
||||
#endif // HBAO_COMMON_INCLUDED |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: bd898bf629326454b8b704ad339d0312 |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO_Common.cginc |
||||
uploadId: 886976 |
||||
@ -0,0 +1,150 @@ |
||||
#ifndef HBAO_COMPOSITE_INCLUDED |
||||
#define HBAO_COMPOSITE_INCLUDED |
||||
|
||||
#include "UnityCG.cginc" |
||||
#include "HBAO_Common.cginc" |
||||
|
||||
inline half4 FetchOcclusion(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HBAOTex, uv * _TargetScale.zw); |
||||
} |
||||
|
||||
inline half4 FetchSceneColor(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv); |
||||
} |
||||
|
||||
inline half4 FetchGBuffer0(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_TempTex, uv); |
||||
} |
||||
|
||||
inline half4 FetchGBuffer3(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv); |
||||
} |
||||
|
||||
inline half3 MultiBounceAO(float visibility, half3 albedo) { |
||||
half3 a = 2.0404 * albedo - 0.3324; |
||||
half3 b = -4.7951 * albedo + 0.6417; |
||||
half3 c = 2.7552 * albedo + 0.6903; |
||||
|
||||
float x = visibility; |
||||
return max(x, ((x * a + b) * x + c) * x); |
||||
} |
||||
|
||||
half4 Composite_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
//uint2 positionSS = input.uv * _ScreenSize.xy; |
||||
|
||||
half4 ao = FetchOcclusion(input.uv); |
||||
|
||||
ao.a = saturate(pow(abs(ao.a), _Intensity)); |
||||
half3 aoColor = lerp(_BaseColor.rgb, half3(1.0, 1.0, 1.0), ao.a); |
||||
|
||||
half4 col = FetchSceneColor(input.uv); |
||||
|
||||
#if LIGHTING_LOG_ENCODED |
||||
col.rgb = -log2(col.rgb); |
||||
#endif |
||||
|
||||
#if MULTIBOUNCE |
||||
aoColor = lerp(aoColor, MultiBounceAO(ao.a, lerp(col.rgb, _BaseColor.rgb, _BaseColor.rgb)), _MultiBounceInfluence); |
||||
#endif |
||||
|
||||
col.rgb *= aoColor; |
||||
|
||||
#if COLOR_BLEEDING |
||||
//col.rgb += 1 - ao.rgb; |
||||
col.rgb += ao.rgb; |
||||
#endif |
||||
|
||||
#if LIGHTING_LOG_ENCODED |
||||
col.rgb = exp2(-col.rgb); |
||||
#endif |
||||
|
||||
#if DEBUG_AO |
||||
col.rgb = aoColor; |
||||
#elif DEBUG_COLORBLEEDING && COLOR_BLEEDING |
||||
//col.rgb = 1 - ao.rgb; |
||||
col.rgb = ao.rgb; |
||||
#elif DEBUG_NOAO_AO || DEBUG_AO_AOONLY || DEBUG_NOAO_AOONLY |
||||
if (input.uv.x <= 0.4985) { |
||||
#if DEBUG_NOAO_AO || DEBUG_NOAO_AOONLY |
||||
col = FetchSceneColor(input.uv); |
||||
#endif // DEBUG_NOAO_AO || DEBUG_NOAO_AOONLY |
||||
return col; |
||||
} |
||||
if (input.uv.x > 0.4985 && input.uv.x < 0.5015) { |
||||
return half4(0, 0, 0, 1); |
||||
} |
||||
#if DEBUG_AO_AOONLY || DEBUG_NOAO_AOONLY |
||||
col.rgb = aoColor; |
||||
#endif // DEBUG_AO_AOONLY) || DEBUG_NOAO_AOONLY |
||||
#endif // DEBUG_AO |
||||
return col; |
||||
} |
||||
|
||||
half4 Composite_Frag_BlendAO(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
half4 ao = FetchOcclusion(input.uv); |
||||
|
||||
ao.a = saturate(pow(abs(ao.a), _Intensity)); |
||||
half3 aoColor = lerp(_BaseColor.rgb, half3(1.0, 1.0, 1.0), ao.a); |
||||
|
||||
#if MULTIBOUNCE |
||||
half4 col = FetchSceneColor(input.uv); |
||||
aoColor = lerp(aoColor, MultiBounceAO(ao.a, lerp(col.rgb, _BaseColor.rgb, _BaseColor.rgb)), _MultiBounceInfluence); |
||||
#endif |
||||
|
||||
return float4(aoColor, 1); |
||||
} |
||||
|
||||
half4 Composite_Frag_BlendCB(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
half4 ao = FetchOcclusion(input.uv); |
||||
|
||||
return float4(ao.rgb, 1); |
||||
} |
||||
|
||||
|
||||
struct CombinedOutput { |
||||
half4 gbuffer0 : SV_Target0; // albedo (RGB), occlusion (A) |
||||
half4 gbuffer3 : SV_Target1; // emission (RGB), unused(A) |
||||
}; |
||||
|
||||
CombinedOutput Composite_Lit_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
half4 ao = FetchOcclusion(input.uv); |
||||
|
||||
ao.a = saturate(pow(abs(ao.a), _Intensity)); |
||||
half3 aoColor = lerp(_BaseColor.rgb, half3(1.0, 1.0, 1.0), ao.a); |
||||
|
||||
half4 albedoOcc = FetchGBuffer0(input.uv); |
||||
half4 emission = FetchGBuffer3(input.uv); |
||||
|
||||
#if LIGHTING_LOG_ENCODED |
||||
emission.rgb = -log2(emission.rgb); |
||||
#endif |
||||
|
||||
CombinedOutput o; |
||||
o.gbuffer0 = half4(albedoOcc.rgb, albedoOcc.a * ao.a); |
||||
o.gbuffer3 = half4(emission.rgb * lerp(aoColor, half3(1.0, 1.0, 1.0), saturate((emission.r + emission.g + emission.b) / 3)), emission.a); |
||||
|
||||
#if COLOR_BLEEDING |
||||
//o.gbuffer3.rgb += 1 - ao.rgb; |
||||
o.gbuffer3.rgb += ao.rgb; |
||||
#endif |
||||
|
||||
#if LIGHTING_LOG_ENCODED |
||||
o.gbuffer3.rgb = exp2(-o.gbuffer3.rgb); |
||||
#endif |
||||
|
||||
return o; |
||||
} |
||||
|
||||
#endif // HBAO_COMPOSITE_INCLUDED |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: fccaaf1b3dbd6e74d80289679d2d1e5a |
||||
ShaderImporter: |
||||
externalObjects: {} |
||||
defaultTextures: [] |
||||
nonModifiableTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO_Composite.cginc |
||||
uploadId: 886976 |
||||
@ -0,0 +1,62 @@ |
||||
#ifndef HBAO_DEINTERLEAVING_INCLUDED |
||||
#define HBAO_DEINTERLEAVING_INCLUDED |
||||
|
||||
#include "HBAO_Common.cginc" |
||||
|
||||
struct DeinterleavedOutput { |
||||
float4 Z00 : SV_Target0; |
||||
float4 Z10 : SV_Target1; |
||||
float4 Z01 : SV_Target2; |
||||
float4 Z11 : SV_Target3; |
||||
}; |
||||
|
||||
DeinterleavedOutput DeinterleaveDepth_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
DeinterleavedOutput o; |
||||
|
||||
float2 pos = floor(input.uv * _DeinterleavedAO_TexelSize.zw) * 4.0; |
||||
float2 uv00 = (pos + _Deinterleave_Offset00 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv10 = (pos + _Deinterleave_Offset10 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv01 = (pos + _Deinterleave_Offset01 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv11 = (pos + _Deinterleave_Offset11 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
|
||||
o.Z00 = FetchRawDepth(uv00).rrrr; |
||||
o.Z10 = FetchRawDepth(uv10).rrrr; |
||||
o.Z01 = FetchRawDepth(uv01).rrrr; |
||||
o.Z11 = FetchRawDepth(uv11).rrrr; |
||||
return o; |
||||
} |
||||
|
||||
DeinterleavedOutput DeinterleaveNormals_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
DeinterleavedOutput o; |
||||
|
||||
float2 pos = floor(input.uv * _DeinterleavedAO_TexelSize.zw) * 4.0; |
||||
float2 uv00 = (pos + _Deinterleave_Offset00 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv10 = (pos + _Deinterleave_Offset10 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv01 = (pos + _Deinterleave_Offset01 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
float2 uv11 = (pos + _Deinterleave_Offset11 + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
|
||||
o.Z00 = float4(FetchViewNormals(uv00, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
o.Z10 = float4(FetchViewNormals(uv10, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
o.Z01 = float4(FetchViewNormals(uv01, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
o.Z11 = float4(FetchViewNormals(uv11, _ReinterleavedAO_TexelSize.xy) * 0.5 + 0.5, 0); |
||||
|
||||
return o; |
||||
} |
||||
|
||||
half4 ReinterleaveAO_Frag(Varyings input) : SV_Target |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
float2 offset = fmod(floor(input.uv * _ReinterleavedAO_TexelSize.zw), 4.0); |
||||
float2 uv = (floor(input.uv * _DeinterleavedAO_TexelSize.zw) + (offset * _DeinterleavedAO_TexelSize.zw) + 0.5) * _ReinterleavedAO_TexelSize.xy; |
||||
|
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv); |
||||
} |
||||
|
||||
#endif // HBAO_DEINTERLEAVING_INCLUDED |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 87df896bfe60ae541ae6565690473297 |
||||
timeCreated: 1467102228 |
||||
licenseType: Store |
||||
ShaderImporter: |
||||
defaultTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO_Deinterleaving.cginc |
||||
uploadId: 886976 |
||||
@ -0,0 +1,171 @@ |
||||
#ifndef HBAO_TEMPORALFILTER_INCLUDED |
||||
#define HBAO_TEMPORALFILTER_INCLUDED |
||||
|
||||
#include "HBAO_Common.cginc" |
||||
|
||||
struct HistoryOutput { |
||||
float4 aoHistory : SV_Target0; |
||||
#if COLOR_BLEEDING |
||||
half4 colorBleedingHistory : SV_Target1; |
||||
#endif |
||||
}; |
||||
|
||||
#if COLOR_BLEEDING |
||||
#define CTYPE half4 |
||||
#else |
||||
#define CTYPE half |
||||
#endif |
||||
|
||||
inline void FetchAoAndDepth(float2 uv, inout CTYPE ao, inout float2 depth) { |
||||
#if COLOR_BLEEDING |
||||
ao = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HBAOTex, uv); |
||||
depth = EncodeFloatRG(saturate(LinearizeDepth(FetchRawDepth(uv)) * (1.0 / _ProjectionParams.z))); |
||||
#else |
||||
float3 aod = UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HBAOTex, uv).rga; |
||||
ao = aod.z; |
||||
depth = aod.xy; |
||||
#endif |
||||
} |
||||
|
||||
inline float2 FetchMotionVectors(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_CameraMotionVectorsTexture, uv * _TargetScale.xy).rg; |
||||
} |
||||
|
||||
inline float4 FetchAoHistory(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_MainTex, uv); |
||||
} |
||||
|
||||
inline half4 FetchColorBleedingHistory(float2 uv) { |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_TempTex, uv); |
||||
} |
||||
|
||||
inline CTYPE FetchNeighbor(float2 uv, float2 offset) { |
||||
#if COLOR_BLEEDING |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HBAOTex, uv + _AO_TexelSize.xy * offset); |
||||
#else |
||||
return UNITY_SAMPLE_SCREENSPACE_TEXTURE(_HBAOTex, uv + _AO_TexelSize.xy * offset).a; |
||||
#endif |
||||
} |
||||
|
||||
inline half DisocclusionTest(float2 uvm1, float2 depth, float2 depthm1) { |
||||
|
||||
// disocclusion test |
||||
// https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/gdc12/GDC12_Bavoil_Stable_SSAO_In_BF3_With_STF.pdf (Page 19) |
||||
float z = DecodeFloatRG(depth); |
||||
float zm1 = DecodeFloatRG(depthm1); |
||||
// for fetching zi-1, use clamp-to-border to discard out-of-frame data, with borderZ = 0.f |
||||
// https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/gdc12/GDC12_Bavoil_Stable_SSAO_In_BF3_With_STF.pdf (Page 39) |
||||
// if (uvm1.x < 0 || uvm1.y < 0 || uvm1.x > 1 || uvm1.y > 1) zm1 = 0; |
||||
// if (uvm1.x < 0 || uvm1.y < 0 || uvm1.x > 1 || uvm1.y > 1) => dot(step(half4(uvm1, 1, 1), half4(0, 0, uvm1)), 1) is 1 if out-of-frame, so |
||||
zm1 *= 1.0 - dot(step(float4(uvm1, 1, 1), float4(0, 0, uvm1)), 1); |
||||
// relaxed disocclusion test: abs(1.0 - (z / zm1)) > 0.1 => 10% |
||||
// float disocclusion = max(sign(abs(1.0 - (z / zm1)) - 0.1), 0.0); |
||||
float disocclusion = abs(1.0 - (z / zm1)) > 0.1; |
||||
|
||||
return disocclusion; |
||||
} |
||||
|
||||
inline CTYPE VarianceClipping(float2 uv, CTYPE ao, CTYPE aom1, float velocityWeight) { |
||||
|
||||
// neighborhood clamping |
||||
// http://twvideo01.ubm-us.net/o1/vault/gdc2016/Presentations/Pedersen_LasseJonFuglsang_TemporalReprojectionAntiAliasing.pdf // (pages 26-28) |
||||
// superseded by variance clipping |
||||
// http://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf (page 23-29) |
||||
#if VARIANCE_CLIPPING_4TAP |
||||
CTYPE cT = FetchNeighbor(uv, float2(0, 1)); |
||||
CTYPE cR = FetchNeighbor(uv, float2(1, 0)); |
||||
CTYPE cB = FetchNeighbor(uv, float2(0, -1)); |
||||
CTYPE cL = FetchNeighbor(uv, float2(-1, 0)); |
||||
// compute 1st and 2nd color moments |
||||
CTYPE m1 = ao + cT + cR + cB + cL; |
||||
CTYPE m2 = ao * ao + cT * cT + cR * cR + cB * cB + cL * cL; |
||||
// aabb from mean u and variance sigma2 |
||||
CTYPE mu = m1 / 5.0; |
||||
CTYPE sigma = sqrt(m2 / 5.0 - mu * mu); |
||||
|
||||
#elif VARIANCE_CLIPPING_8TAP |
||||
CTYPE cTL = FetchNeighbor(uv, float2(-1, 1)); |
||||
CTYPE cT = FetchNeighbor(uv, float2(0, 1)); |
||||
CTYPE cTR = FetchNeighbor(uv, float2(1, 1)); |
||||
CTYPE cR = FetchNeighbor(uv, float2(1, 0)); |
||||
CTYPE cBR = FetchNeighbor(uv, float2(1, -1)); |
||||
CTYPE cB = FetchNeighbor(uv, float2(0, -1)); |
||||
CTYPE cBL = FetchNeighbor(uv, float2(-1, -1)); |
||||
CTYPE cL = FetchNeighbor(uv, float2(-1, 0)); |
||||
// compute 1st and 2nd color moments |
||||
CTYPE m1 = ao + cTL + cT + cTR + cR + cBR + cB + cBL + cL; |
||||
CTYPE m2 = ao * ao + cTL * cTL + cT * cT + cTR * cTR + cR * cR + cBR * cBR + cB * cB + cBL * cBL + cL * cL; |
||||
// aabb from mean u and variance sigma2 |
||||
CTYPE mu = m1 / 9.0; |
||||
CTYPE sigma = sqrt(m2 / 9.0 - mu * mu); |
||||
#endif |
||||
|
||||
#if VARIANCE_CLIPPING_4TAP || VARIANCE_CLIPPING_8TAP |
||||
float gamma = lerp(75.0, 0.75, velocityWeight); // scale down sigma for reduced ghosting |
||||
CTYPE cmin = mu - gamma * sigma; |
||||
CTYPE cmax = mu + gamma * sigma; |
||||
|
||||
// clipping |
||||
return clamp(aom1, cmin, cmax); |
||||
#else |
||||
return aom1; |
||||
#endif |
||||
} |
||||
|
||||
HistoryOutput TemporalFilter_Frag(Varyings input) |
||||
{ |
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); |
||||
|
||||
// fetch current frame data |
||||
CTYPE ao; float2 depth; |
||||
FetchAoAndDepth(input.uv, ao, depth); |
||||
|
||||
// fetch motion vectors, calculate previous frame uv |
||||
float2 mv = FetchMotionVectors(input.uv); |
||||
float2 uvm1 = input.uv - mv; |
||||
float mvl = length(mv); |
||||
|
||||
// fetch history |
||||
float4 aoHistory = FetchAoHistory(uvm1); |
||||
#if COLOR_BLEEDING |
||||
half4 colorBleedingHistory = FetchColorBleedingHistory(uvm1); |
||||
CTYPE aom1 = colorBleedingHistory; |
||||
#else |
||||
CTYPE aom1 = aoHistory.w; |
||||
#endif |
||||
float2 depthm1 = aoHistory.xy; |
||||
float mvlm1 = aoHistory.z; |
||||
|
||||
// velocity weight |
||||
float velocityWeight = saturate(abs(mvl - mvlm1) * 300.0); |
||||
|
||||
// do disocclusion test |
||||
half disocclusion = DisocclusionTest(uvm1, depth, depthm1); |
||||
|
||||
// apply velocity weight and disocclusion |
||||
#if COLOR_BLEEDING |
||||
aom1.a = aom1.a + saturate(dot(float2(velocityWeight, disocclusion), 1.0)) * (ao.a - aom1.a); |
||||
#else |
||||
aom1 = aom1 + saturate(dot(float2(velocityWeight, disocclusion), 1.0)) * (ao - aom1); |
||||
#endif |
||||
|
||||
// do variance clipping |
||||
aom1 = VarianceClipping(input.uv, ao, aom1, velocityWeight); |
||||
|
||||
// exponential accumulation buffer |
||||
// http://www.klayge.org/material/4_11/Filmic%20SMAA%20v7.pdf (page 54) |
||||
// http://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf (page 13) |
||||
ao = aom1 + 0.1 * (ao - aom1); |
||||
|
||||
HistoryOutput o; |
||||
#if COLOR_BLEEDING |
||||
o.aoHistory = float4(depth, mvl, ao.a); |
||||
o.colorBleedingHistory = ao; |
||||
#else |
||||
o.aoHistory = float4(depth, mvl, ao); |
||||
#endif |
||||
|
||||
return o; |
||||
} |
||||
|
||||
#endif // HBAO_TEMPORALFILTER_INCLUDED |
||||
@ -0,0 +1,16 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 5fb134650ee52e041b4eb742f0f5e6fc |
||||
timeCreated: 1583930399 |
||||
licenseType: Store |
||||
ShaderImporter: |
||||
defaultTextures: [] |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
AssetOrigin: |
||||
serializedVersion: 1 |
||||
productId: 54780 |
||||
packageName: Horizon Based Ambient Occlusion |
||||
packageVersion: 3.7 |
||||
assetPath: Assets/Horizon Based Ambient Occlusion/Shaders/HBAO_TemporalFilter.cginc |
||||
uploadId: 886976 |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,14 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 052faaac586de48259a63d0c4782560b |
||||
ScriptedImporter: |
||||
internalIDToNameTable: [] |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} |
||||
generateWrapperCode: 0 |
||||
wrapperCodePath: |
||||
wrapperClassName: |
||||
wrapperCodeNamespace: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 8434ef6815e9c7c4681acf829e0d84ee |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 9e27af73fb025934d90889c63af29bba |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,136 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!21 &2100000 |
||||
Material: |
||||
serializedVersion: 8 |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_Name: Black |
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} |
||||
m_Parent: {fileID: 0} |
||||
m_ModifiedSerializedProperties: 0 |
||||
m_ValidKeywords: [] |
||||
m_InvalidKeywords: [] |
||||
m_LightmapFlags: 4 |
||||
m_EnableInstancingVariants: 0 |
||||
m_DoubleSidedGI: 0 |
||||
m_CustomRenderQueue: -1 |
||||
stringTagMap: |
||||
RenderType: Opaque |
||||
disabledShaderPasses: |
||||
- MOTIONVECTORS |
||||
m_LockedProperties: |
||||
m_SavedProperties: |
||||
serializedVersion: 3 |
||||
m_TexEnvs: |
||||
- _BaseMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _BumpMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailAlbedoMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailMask: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailNormalMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _EmissionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MainTex: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MetallicGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _OcclusionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _ParallaxMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _SpecGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_Lightmaps: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_LightmapsInd: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_ShadowMasks: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
m_Ints: [] |
||||
m_Floats: |
||||
- _AddPrecomputedVelocity: 0 |
||||
- _AlphaClip: 0 |
||||
- _AlphaToMask: 0 |
||||
- _Blend: 0 |
||||
- _BlendModePreserveSpecular: 1 |
||||
- _BumpScale: 1 |
||||
- _ClearCoatMask: 0 |
||||
- _ClearCoatSmoothness: 0 |
||||
- _Cull: 2 |
||||
- _Cutoff: 0.5 |
||||
- _DetailAlbedoMapScale: 1 |
||||
- _DetailNormalMapScale: 1 |
||||
- _DstBlend: 0 |
||||
- _DstBlendAlpha: 0 |
||||
- _EnvironmentReflections: 1 |
||||
- _GlossMapScale: 0 |
||||
- _Glossiness: 0 |
||||
- _GlossyReflections: 0 |
||||
- _Metallic: 0 |
||||
- _OcclusionStrength: 1 |
||||
- _Parallax: 0.005 |
||||
- _QueueOffset: 0 |
||||
- _ReceiveShadows: 1 |
||||
- _Smoothness: 0.5 |
||||
- _SmoothnessTextureChannel: 0 |
||||
- _SpecularHighlights: 1 |
||||
- _SrcBlend: 1 |
||||
- _SrcBlendAlpha: 1 |
||||
- _Surface: 0 |
||||
- _WorkflowMode: 1 |
||||
- _ZWrite: 1 |
||||
m_Colors: |
||||
- _BaseColor: {r: 0.103999995, g: 0.103999995, b: 0.10053333, a: 1} |
||||
- _Color: {r: 0.10399995, g: 0.10399995, b: 0.1005333, a: 1} |
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} |
||||
m_BuildTextureStacks: [] |
||||
m_AllowLocking: 1 |
||||
--- !u!114 &4431363231931934953 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 11 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
version: 10 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 1295642f1274bc34a98dba24a73d45e6 |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 2100000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,254 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!114 &-6989835814840294288 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 3 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: 90fbf49926625114084d7e0c0cffe8d1, type: 3} |
||||
m_Name: HBAO |
||||
m_EditorClassIdentifier: HBAO.Universal.Runtime::HorizonBasedAmbientOcclusion.Universal.HBAO |
||||
active: 1 |
||||
preset: |
||||
m_OverrideState: 0 |
||||
m_Value: 2 |
||||
mode: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
renderingPath: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
quality: |
||||
m_OverrideState: 0 |
||||
m_Value: 2 |
||||
deinterleaving: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
resolution: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
noiseType: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
debugMode: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
radius: |
||||
m_OverrideState: 1 |
||||
m_Value: 4.51 |
||||
maxRadiusPixels: |
||||
m_OverrideState: 0 |
||||
m_Value: 128 |
||||
bias: |
||||
m_OverrideState: 1 |
||||
m_Value: 0.097 |
||||
intensity: |
||||
m_OverrideState: 1 |
||||
m_Value: 1 |
||||
useMultiBounce: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
multiBounceInfluence: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
directLightingStrength: |
||||
m_OverrideState: 0 |
||||
m_Value: 0.25 |
||||
offscreenSamplesContribution: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
maxDistance: |
||||
m_OverrideState: 0 |
||||
m_Value: 150 |
||||
distanceFalloff: |
||||
m_OverrideState: 0 |
||||
m_Value: 50 |
||||
perPixelNormals: |
||||
m_OverrideState: 0 |
||||
m_Value: 2 |
||||
baseColor: |
||||
m_OverrideState: 0 |
||||
m_Value: {r: 0, g: 0, b: 0, a: 1} |
||||
temporalFilterEnabled: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
varianceClipping: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
blurType: |
||||
m_OverrideState: 0 |
||||
m_Value: 2 |
||||
sharpness: |
||||
m_OverrideState: 0 |
||||
m_Value: 8 |
||||
colorBleedingEnabled: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
saturation: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
brightnessMask: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
brightnessMaskRange: |
||||
m_OverrideState: 0 |
||||
m_Value: {x: 0, y: 0.5} |
||||
min: 0 |
||||
max: 2 |
||||
--- !u!114 &-5474690943039039243 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 3 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: c01700fd266d6914ababb731e09af2eb, type: 3} |
||||
m_Name: DepthOfField |
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.DepthOfField |
||||
active: 1 |
||||
mode: |
||||
m_OverrideState: 1 |
||||
m_Value: 2 |
||||
gaussianStart: |
||||
m_OverrideState: 1 |
||||
m_Value: 60 |
||||
gaussianEnd: |
||||
m_OverrideState: 1 |
||||
m_Value: 70 |
||||
gaussianMaxRadius: |
||||
m_OverrideState: 1 |
||||
m_Value: 1 |
||||
highQualitySampling: |
||||
m_OverrideState: 1 |
||||
m_Value: 0 |
||||
focusDistance: |
||||
m_OverrideState: 1 |
||||
m_Value: 60 |
||||
aperture: |
||||
m_OverrideState: 1 |
||||
m_Value: 1 |
||||
focalLength: |
||||
m_OverrideState: 1 |
||||
m_Value: 300 |
||||
bladeCount: |
||||
m_OverrideState: 0 |
||||
m_Value: 5 |
||||
bladeCurvature: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
bladeRotation: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
--- !u!114 &-32820517437979890 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 3 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} |
||||
m_Name: Bloom |
||||
m_EditorClassIdentifier: |
||||
active: 1 |
||||
skipIterations: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
threshold: |
||||
m_OverrideState: 0 |
||||
m_Value: 0.9 |
||||
intensity: |
||||
m_OverrideState: 1 |
||||
m_Value: 0.5 |
||||
scatter: |
||||
m_OverrideState: 0 |
||||
m_Value: 0.7 |
||||
clamp: |
||||
m_OverrideState: 0 |
||||
m_Value: 65472 |
||||
tint: |
||||
m_OverrideState: 0 |
||||
m_Value: {r: 1, g: 1, b: 1, a: 1} |
||||
highQualityFiltering: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
filter: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
downscale: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
maxIterations: |
||||
m_OverrideState: 0 |
||||
m_Value: 6 |
||||
dirtTexture: |
||||
m_OverrideState: 0 |
||||
m_Value: {fileID: 0} |
||||
dimension: 1 |
||||
dirtIntensity: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
--- !u!114 &11400000 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} |
||||
m_Name: GlobalVolumeProfile |
||||
m_EditorClassIdentifier: |
||||
components: |
||||
- {fileID: 1881579288749618558} |
||||
- {fileID: -32820517437979890} |
||||
- {fileID: -5474690943039039243} |
||||
- {fileID: -6989835814840294288} |
||||
--- !u!114 &1881579288749618558 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 3 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3} |
||||
m_Name: Tonemapping |
||||
m_EditorClassIdentifier: |
||||
active: 1 |
||||
mode: |
||||
m_OverrideState: 1 |
||||
m_Value: 2 |
||||
neutralHDRRangeReductionMode: |
||||
m_OverrideState: 0 |
||||
m_Value: 2 |
||||
acesPreset: |
||||
m_OverrideState: 0 |
||||
m_Value: 3 |
||||
hueShiftAmount: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
detectPaperWhite: |
||||
m_OverrideState: 0 |
||||
m_Value: 0 |
||||
paperWhite: |
||||
m_OverrideState: 0 |
||||
m_Value: 300 |
||||
detectBrightnessLimits: |
||||
m_OverrideState: 0 |
||||
m_Value: 1 |
||||
minNits: |
||||
m_OverrideState: 0 |
||||
m_Value: 0.005 |
||||
maxNits: |
||||
m_OverrideState: 0 |
||||
m_Value: 1000 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 2f46645358cbbd04eaa1121591e09687 |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 11400000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,137 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!21 &2100000 |
||||
Material: |
||||
serializedVersion: 8 |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_Name: Gold |
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} |
||||
m_Parent: {fileID: 0} |
||||
m_ModifiedSerializedProperties: 0 |
||||
m_ValidKeywords: [] |
||||
m_InvalidKeywords: [] |
||||
m_LightmapFlags: 4 |
||||
m_EnableInstancingVariants: 0 |
||||
m_DoubleSidedGI: 0 |
||||
m_CustomRenderQueue: -1 |
||||
stringTagMap: |
||||
RenderType: Opaque |
||||
disabledShaderPasses: |
||||
- MOTIONVECTORS |
||||
m_LockedProperties: |
||||
m_SavedProperties: |
||||
serializedVersion: 3 |
||||
m_TexEnvs: |
||||
- _BaseMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _BumpMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailAlbedoMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailMask: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailNormalMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _EmissionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MainTex: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MetallicGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _OcclusionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _ParallaxMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _SpecGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_Lightmaps: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_LightmapsInd: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_ShadowMasks: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
m_Ints: [] |
||||
m_Floats: |
||||
- _AddPrecomputedVelocity: 0 |
||||
- _AlphaClip: 0 |
||||
- _AlphaToMask: 0 |
||||
- _Blend: 0 |
||||
- _BlendModePreserveSpecular: 1 |
||||
- _BumpScale: 1 |
||||
- _ClearCoatMask: 0 |
||||
- _ClearCoatSmoothness: 0 |
||||
- _Cull: 2 |
||||
- _Cutoff: 0.5 |
||||
- _DetailAlbedoMapScale: 1 |
||||
- _DetailNormalMapScale: 1 |
||||
- _DstBlend: 0 |
||||
- _DstBlendAlpha: 0 |
||||
- _EnvironmentReflections: 1 |
||||
- _GlossMapScale: 0 |
||||
- _Glossiness: 0 |
||||
- _GlossyReflections: 0 |
||||
- _Metallic: 1 |
||||
- _OcclusionStrength: 1 |
||||
- _Parallax: 0.005 |
||||
- _QueueOffset: 0 |
||||
- _ReceiveShadows: 1 |
||||
- _Smoothness: 0.829 |
||||
- _SmoothnessTextureChannel: 0 |
||||
- _SpecularHighlights: 1 |
||||
- _SrcBlend: 1 |
||||
- _SrcBlendAlpha: 1 |
||||
- _Surface: 0 |
||||
- _WorkflowMode: 1 |
||||
- _XRMotionVectorsPass: 1 |
||||
- _ZWrite: 1 |
||||
m_Colors: |
||||
- _BaseColor: {r: 1, g: 0.8235294, b: 0.5058824, a: 1} |
||||
- _Color: {r: 1, g: 0.8235294, b: 0.5058824, a: 1} |
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} |
||||
m_BuildTextureStacks: [] |
||||
m_AllowLocking: 1 |
||||
--- !u!114 &4431363231931934953 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 11 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
version: 10 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: ea33cab331b2f0e4fa84f1bf90a3c6db |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 2100000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,137 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!21 &2100000 |
||||
Material: |
||||
serializedVersion: 8 |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_Name: Ground |
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} |
||||
m_Parent: {fileID: 0} |
||||
m_ModifiedSerializedProperties: 0 |
||||
m_ValidKeywords: [] |
||||
m_InvalidKeywords: [] |
||||
m_LightmapFlags: 4 |
||||
m_EnableInstancingVariants: 0 |
||||
m_DoubleSidedGI: 0 |
||||
m_CustomRenderQueue: -1 |
||||
stringTagMap: |
||||
RenderType: Opaque |
||||
disabledShaderPasses: |
||||
- MOTIONVECTORS |
||||
m_LockedProperties: |
||||
m_SavedProperties: |
||||
serializedVersion: 3 |
||||
m_TexEnvs: |
||||
- _BaseMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _BumpMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailAlbedoMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailMask: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailNormalMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _EmissionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MainTex: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MetallicGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _OcclusionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _ParallaxMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _SpecGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_Lightmaps: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_LightmapsInd: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_ShadowMasks: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
m_Ints: [] |
||||
m_Floats: |
||||
- _AddPrecomputedVelocity: 0 |
||||
- _AlphaClip: 0 |
||||
- _AlphaToMask: 0 |
||||
- _Blend: 0 |
||||
- _BlendModePreserveSpecular: 1 |
||||
- _BumpScale: 1 |
||||
- _ClearCoatMask: 0 |
||||
- _ClearCoatSmoothness: 0 |
||||
- _Cull: 2 |
||||
- _Cutoff: 0.5 |
||||
- _DetailAlbedoMapScale: 1 |
||||
- _DetailNormalMapScale: 1 |
||||
- _DstBlend: 0 |
||||
- _DstBlendAlpha: 0 |
||||
- _EnvironmentReflections: 1 |
||||
- _GlossMapScale: 0 |
||||
- _Glossiness: 0 |
||||
- _GlossyReflections: 0 |
||||
- _Metallic: 0 |
||||
- _OcclusionStrength: 1 |
||||
- _Parallax: 0.005 |
||||
- _QueueOffset: 0 |
||||
- _ReceiveShadows: 1 |
||||
- _Smoothness: 0.5 |
||||
- _SmoothnessTextureChannel: 0 |
||||
- _SpecularHighlights: 1 |
||||
- _SrcBlend: 1 |
||||
- _SrcBlendAlpha: 1 |
||||
- _Surface: 0 |
||||
- _WorkflowMode: 1 |
||||
- _XRMotionVectorsPass: 1 |
||||
- _ZWrite: 1 |
||||
m_Colors: |
||||
- _BaseColor: {r: 0.65099996, g: 0.65099996, b: 0.65099996, a: 1} |
||||
- _Color: {r: 0.6509999, g: 0.6509999, b: 0.6509999, a: 1} |
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} |
||||
m_BuildTextureStacks: [] |
||||
m_AllowLocking: 1 |
||||
--- !u!114 &4431363231931934953 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 11 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
version: 10 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: df53c85fb9e7b32469227e519820b309 |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 2100000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
Binary file not shown.
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 38e65b272d6d7aa468b968dc218375f3 |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 112000000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,154 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!114 &-8081582795363580827 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 11 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
version: 10 |
||||
--- !u!21 &2100000 |
||||
Material: |
||||
serializedVersion: 8 |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_Name: Lit |
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} |
||||
m_Parent: {fileID: 0} |
||||
m_ModifiedSerializedProperties: 0 |
||||
m_ValidKeywords: [] |
||||
m_InvalidKeywords: [] |
||||
m_LightmapFlags: 4 |
||||
m_EnableInstancingVariants: 0 |
||||
m_DoubleSidedGI: 0 |
||||
m_CustomRenderQueue: 2000 |
||||
stringTagMap: |
||||
RenderType: Opaque |
||||
disabledShaderPasses: |
||||
- MOTIONVECTORS |
||||
m_LockedProperties: |
||||
m_SavedProperties: |
||||
serializedVersion: 3 |
||||
m_TexEnvs: |
||||
- _BaseMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _BumpMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _ClearCoatMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _Cube: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailAlbedoMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailMask: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailNormalMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _EmissionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MainTex: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MetallicGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MetallicSpecGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _OcclusionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _ParallaxMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _SpecGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_Lightmaps: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_LightmapsInd: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_ShadowMasks: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
m_Ints: [] |
||||
m_Floats: |
||||
- _AlphaClip: 0 |
||||
- _AlphaToMask: 0 |
||||
- _Blend: 0 |
||||
- _BlendModePreserveSpecular: 1 |
||||
- _BumpScale: 1 |
||||
- _ClearCoat: 0 |
||||
- _ClearCoatMask: 0 |
||||
- _ClearCoatSmoothness: 0 |
||||
- _Cull: 2 |
||||
- _Cutoff: 0.5 |
||||
- _DetailAlbedoMapScale: 1 |
||||
- _DetailNormalMapScale: 1 |
||||
- _DstBlend: 0 |
||||
- _DstBlendAlpha: 0 |
||||
- _EnvironmentReflections: 1 |
||||
- _GlossMapScale: 1 |
||||
- _Glossiness: 0.5 |
||||
- _GlossinessSource: 0 |
||||
- _GlossyReflections: 1 |
||||
- _Metallic: 0 |
||||
- _Mode: 0 |
||||
- _OcclusionStrength: 1 |
||||
- _Parallax: 0.02 |
||||
- _QueueOffset: 0 |
||||
- _ReceiveShadows: 1 |
||||
- _ReflectionSource: 0 |
||||
- _Shininess: 1 |
||||
- _Smoothness: 0.5 |
||||
- _SmoothnessTextureChannel: 0 |
||||
- _SpecSource: 0 |
||||
- _SpecularHighlights: 1 |
||||
- _SrcBlend: 1 |
||||
- _SrcBlendAlpha: 1 |
||||
- _Surface: 0 |
||||
- _UVSec: 0 |
||||
- _WorkflowMode: 1 |
||||
- _ZWrite: 1 |
||||
m_Colors: |
||||
- _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
||||
- _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||
- _SpecColor: {r: 1, g: 1, b: 1, a: 1} |
||||
m_BuildTextureStacks: [] |
||||
m_AllowLocking: 1 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 2f6c74585b8cf8e4d937f89ac4e94747 |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 2100000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
Binary file not shown.
@ -0,0 +1,117 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 19fde3f08bcb7fb40bff481b52835c30 |
||||
TextureImporter: |
||||
internalIDToNameTable: [] |
||||
externalObjects: {} |
||||
serializedVersion: 13 |
||||
mipmaps: |
||||
mipMapMode: 0 |
||||
enableMipMap: 1 |
||||
sRGBTexture: 1 |
||||
linearTexture: 0 |
||||
fadeOut: 0 |
||||
borderMipMap: 0 |
||||
mipMapsPreserveCoverage: 0 |
||||
alphaTestReferenceValue: 0.5 |
||||
mipMapFadeDistanceStart: 1 |
||||
mipMapFadeDistanceEnd: 3 |
||||
bumpmap: |
||||
convertToNormalMap: 0 |
||||
externalNormalMap: 0 |
||||
heightScale: 0.25 |
||||
normalMapFilter: 0 |
||||
flipGreenChannel: 0 |
||||
isReadable: 0 |
||||
streamingMipmaps: 0 |
||||
streamingMipmapsPriority: 0 |
||||
vTOnly: 0 |
||||
ignoreMipmapLimit: 0 |
||||
grayScaleToAlpha: 0 |
||||
generateCubemap: 6 |
||||
cubemapConvolution: 1 |
||||
seamlessCubemap: 1 |
||||
textureFormat: 1 |
||||
maxTextureSize: 2048 |
||||
textureSettings: |
||||
serializedVersion: 2 |
||||
filterMode: 2 |
||||
aniso: 0 |
||||
mipBias: 0 |
||||
wrapU: 1 |
||||
wrapV: 1 |
||||
wrapW: 1 |
||||
nPOTScale: 1 |
||||
lightmap: 0 |
||||
compressionQuality: 50 |
||||
spriteMode: 0 |
||||
spriteExtrude: 1 |
||||
spriteMeshType: 1 |
||||
alignment: 0 |
||||
spritePivot: {x: 0.5, y: 0.5} |
||||
spritePixelsToUnits: 100 |
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
||||
spriteGenerateFallbackPhysicsShape: 1 |
||||
alphaUsage: 1 |
||||
alphaIsTransparency: 0 |
||||
spriteTessellationDetail: -1 |
||||
textureType: 0 |
||||
textureShape: 2 |
||||
singleChannelComponent: 0 |
||||
flipbookRows: 1 |
||||
flipbookColumns: 1 |
||||
maxTextureSizeSet: 0 |
||||
compressionQualitySet: 0 |
||||
textureFormatSet: 0 |
||||
ignorePngGamma: 0 |
||||
applyGammaDecoding: 0 |
||||
swizzle: 50462976 |
||||
cookieLightType: 0 |
||||
platformSettings: |
||||
- serializedVersion: 4 |
||||
buildTarget: DefaultTexturePlatform |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 100 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
ignorePlatformSupport: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
forceMaximumCompressionQuality_BC6H_BC7: 0 |
||||
- serializedVersion: 4 |
||||
buildTarget: Standalone |
||||
maxTextureSize: 2048 |
||||
resizeAlgorithm: 0 |
||||
textureFormat: -1 |
||||
textureCompression: 1 |
||||
compressionQuality: 50 |
||||
crunchedCompression: 0 |
||||
allowsAlphaSplitting: 0 |
||||
overridden: 0 |
||||
ignorePlatformSupport: 0 |
||||
androidETC2FallbackOverride: 0 |
||||
forceMaximumCompressionQuality_BC6H_BC7: 0 |
||||
spriteSheet: |
||||
serializedVersion: 2 |
||||
sprites: [] |
||||
outline: [] |
||||
customData: |
||||
physicsShape: [] |
||||
bones: [] |
||||
spriteID: |
||||
internalID: 0 |
||||
vertices: [] |
||||
indices: |
||||
edges: [] |
||||
weights: [] |
||||
secondaryTextures: [] |
||||
spriteCustomMetadata: |
||||
entries: [] |
||||
nameFileIdTable: {} |
||||
mipmapLimitGroupName: |
||||
pSDRemoveMatte: 0 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
Binary file not shown.
@ -0,0 +1,112 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 222a53bfd672e6742a55f3f0809aa1fe |
||||
ModelImporter: |
||||
serializedVersion: 22102 |
||||
internalIDToNameTable: [] |
||||
externalObjects: |
||||
- first: |
||||
type: UnityEngine:Material |
||||
assembly: UnityEngine.CoreModule |
||||
name: 10 - Default |
||||
second: {fileID: 2100000, guid: e0f7961861aa5ae4a97805f16f8306b7, type: 2} |
||||
materials: |
||||
materialImportMode: 0 |
||||
materialName: 0 |
||||
materialSearch: 1 |
||||
materialLocation: 1 |
||||
animations: |
||||
legacyGenerateAnimations: 4 |
||||
bakeSimulation: 0 |
||||
resampleCurves: 1 |
||||
optimizeGameObjects: 0 |
||||
removeConstantScaleCurves: 0 |
||||
motionNodeName: |
||||
rigImportErrors: |
||||
rigImportWarnings: |
||||
animationImportErrors: |
||||
animationImportWarnings: |
||||
animationRetargetingWarnings: |
||||
animationDoRetargetingWarnings: 0 |
||||
importAnimatedCustomProperties: 0 |
||||
importConstraints: 0 |
||||
animationCompression: 1 |
||||
animationRotationError: 0.5 |
||||
animationPositionError: 0.5 |
||||
animationScaleError: 0.5 |
||||
animationWrapMode: 0 |
||||
extraExposedTransformPaths: [] |
||||
extraUserProperties: [] |
||||
clipAnimations: [] |
||||
isReadable: 0 |
||||
meshes: |
||||
lODScreenPercentages: [] |
||||
globalScale: 1 |
||||
meshCompression: 0 |
||||
addColliders: 0 |
||||
useSRGBMaterialColor: 1 |
||||
sortHierarchyByName: 1 |
||||
importVisibility: 1 |
||||
importBlendShapes: 1 |
||||
importCameras: 1 |
||||
importLights: 1 |
||||
nodeNameCollisionStrategy: 0 |
||||
fileIdsGeneration: 2 |
||||
swapUVChannels: 0 |
||||
generateSecondaryUV: 0 |
||||
useFileUnits: 1 |
||||
keepQuads: 0 |
||||
weldVertices: 1 |
||||
bakeAxisConversion: 0 |
||||
preserveHierarchy: 0 |
||||
skinWeightsMode: 0 |
||||
maxBonesPerVertex: 4 |
||||
minBoneWeight: 0.001 |
||||
optimizeBones: 1 |
||||
meshOptimizationFlags: -1 |
||||
indexFormat: 0 |
||||
secondaryUVAngleDistortion: 8 |
||||
secondaryUVAreaDistortion: 15.000001 |
||||
secondaryUVHardAngle: 88 |
||||
secondaryUVMarginMethod: 1 |
||||
secondaryUVMinLightmapResolution: 40 |
||||
secondaryUVMinObjectScale: 1 |
||||
secondaryUVPackMargin: 4 |
||||
useFileScale: 1 |
||||
strictVertexDataChecks: 0 |
||||
tangentSpace: |
||||
normalSmoothAngle: 60 |
||||
normalImportMode: 0 |
||||
tangentImportMode: 3 |
||||
normalCalculationMode: 4 |
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 |
||||
blendShapeNormalImportMode: 1 |
||||
normalSmoothingSource: 0 |
||||
referencedClips: [] |
||||
importAnimation: 1 |
||||
humanDescription: |
||||
serializedVersion: 3 |
||||
human: [] |
||||
skeleton: [] |
||||
armTwist: 0.5 |
||||
foreArmTwist: 0.5 |
||||
upperLegTwist: 0.5 |
||||
legTwist: 0.5 |
||||
armStretch: 0.05 |
||||
legStretch: 0.05 |
||||
feetSpacing: 0 |
||||
globalScale: 1 |
||||
rootMotionBoneName: |
||||
hasTranslationDoF: 0 |
||||
hasExtraRoot: 0 |
||||
skeletonHasParents: 1 |
||||
lastHumanDescriptionAvatarSource: {instanceID: 0} |
||||
autoGenerateAvatarMappingIfUnspecified: 1 |
||||
animationType: 2 |
||||
humanoidOversampling: 1 |
||||
avatarSetup: 0 |
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1 |
||||
importBlendShapeDeformPercent: 0 |
||||
additionalBone: 0 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,136 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!21 &2100000 |
||||
Material: |
||||
serializedVersion: 8 |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_Name: White |
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} |
||||
m_Parent: {fileID: 0} |
||||
m_ModifiedSerializedProperties: 0 |
||||
m_ValidKeywords: [] |
||||
m_InvalidKeywords: [] |
||||
m_LightmapFlags: 4 |
||||
m_EnableInstancingVariants: 0 |
||||
m_DoubleSidedGI: 0 |
||||
m_CustomRenderQueue: -1 |
||||
stringTagMap: |
||||
RenderType: Opaque |
||||
disabledShaderPasses: |
||||
- MOTIONVECTORS |
||||
m_LockedProperties: |
||||
m_SavedProperties: |
||||
serializedVersion: 3 |
||||
m_TexEnvs: |
||||
- _BaseMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _BumpMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailAlbedoMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailMask: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _DetailNormalMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _EmissionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MainTex: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _MetallicGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _OcclusionMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _ParallaxMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- _SpecGlossMap: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_Lightmaps: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_LightmapsInd: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
- unity_ShadowMasks: |
||||
m_Texture: {fileID: 0} |
||||
m_Scale: {x: 1, y: 1} |
||||
m_Offset: {x: 0, y: 0} |
||||
m_Ints: [] |
||||
m_Floats: |
||||
- _AddPrecomputedVelocity: 0 |
||||
- _AlphaClip: 0 |
||||
- _AlphaToMask: 0 |
||||
- _Blend: 0 |
||||
- _BlendModePreserveSpecular: 1 |
||||
- _BumpScale: 1 |
||||
- _ClearCoatMask: 0 |
||||
- _ClearCoatSmoothness: 0 |
||||
- _Cull: 2 |
||||
- _Cutoff: 0.5 |
||||
- _DetailAlbedoMapScale: 1 |
||||
- _DetailNormalMapScale: 1 |
||||
- _DstBlend: 0 |
||||
- _DstBlendAlpha: 0 |
||||
- _EnvironmentReflections: 1 |
||||
- _GlossMapScale: 0 |
||||
- _Glossiness: 0 |
||||
- _GlossyReflections: 0 |
||||
- _Metallic: 0 |
||||
- _OcclusionStrength: 1 |
||||
- _Parallax: 0.005 |
||||
- _QueueOffset: 0 |
||||
- _ReceiveShadows: 1 |
||||
- _Smoothness: 0.5 |
||||
- _SmoothnessTextureChannel: 0 |
||||
- _SpecularHighlights: 1 |
||||
- _SrcBlend: 1 |
||||
- _SrcBlendAlpha: 1 |
||||
- _Surface: 0 |
||||
- _WorkflowMode: 1 |
||||
- _ZWrite: 1 |
||||
m_Colors: |
||||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1} |
||||
- _Color: {r: 1, g: 1, b: 1, a: 1} |
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} |
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} |
||||
m_BuildTextureStacks: [] |
||||
m_AllowLocking: 1 |
||||
--- !u!114 &4431363231931934953 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 11 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 0} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
version: 10 |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 90cb37d4746524b45a22b588b2fa0f8e |
||||
NativeFormatImporter: |
||||
externalObjects: {} |
||||
mainObjectFileID: 2100000 |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,8 @@ |
||||
fileFormatVersion: 2 |
||||
guid: 91c90b6f4ca65b946a1e24669c8c19e0 |
||||
folderAsset: yes |
||||
DefaultImporter: |
||||
externalObjects: {} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
||||
@ -0,0 +1,432 @@ |
||||
%YAML 1.1 |
||||
%TAG !u! tag:unity3d.com,2011: |
||||
--- !u!29 &1 |
||||
OcclusionCullingSettings: |
||||
m_ObjectHideFlags: 0 |
||||
serializedVersion: 2 |
||||
m_OcclusionBakeSettings: |
||||
smallestOccluder: 5 |
||||
smallestHole: 0.25 |
||||
backfaceThreshold: 100 |
||||
m_SceneGUID: 00000000000000000000000000000000 |
||||
m_OcclusionCullingData: {fileID: 0} |
||||
--- !u!104 &2 |
||||
RenderSettings: |
||||
m_ObjectHideFlags: 0 |
||||
serializedVersion: 10 |
||||
m_Fog: 0 |
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
||||
m_FogMode: 3 |
||||
m_FogDensity: 0.01 |
||||
m_LinearFogStart: 0 |
||||
m_LinearFogEnd: 300 |
||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} |
||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} |
||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} |
||||
m_AmbientIntensity: 1 |
||||
m_AmbientMode: 0 |
||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} |
||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} |
||||
m_HaloStrength: 0.5 |
||||
m_FlareStrength: 1 |
||||
m_FlareFadeSpeed: 3 |
||||
m_HaloTexture: {fileID: 0} |
||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} |
||||
m_DefaultReflectionMode: 0 |
||||
m_DefaultReflectionResolution: 128 |
||||
m_ReflectionBounces: 1 |
||||
m_ReflectionIntensity: 1 |
||||
m_CustomReflection: {fileID: 0} |
||||
m_Sun: {fileID: 0} |
||||
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} |
||||
m_UseRadianceAmbientProbe: 0 |
||||
--- !u!157 &3 |
||||
LightmapSettings: |
||||
m_ObjectHideFlags: 0 |
||||
serializedVersion: 12 |
||||
m_GISettings: |
||||
serializedVersion: 2 |
||||
m_BounceScale: 1 |
||||
m_IndirectOutputScale: 1 |
||||
m_AlbedoBoost: 1 |
||||
m_EnvironmentLightingMode: 0 |
||||
m_EnableBakedLightmaps: 1 |
||||
m_EnableRealtimeLightmaps: 0 |
||||
m_LightmapEditorSettings: |
||||
serializedVersion: 12 |
||||
m_Resolution: 2 |
||||
m_BakeResolution: 40 |
||||
m_AtlasSize: 1024 |
||||
m_AO: 0 |
||||
m_AOMaxDistance: 1 |
||||
m_CompAOExponent: 1 |
||||
m_CompAOExponentDirect: 0 |
||||
m_ExtractAmbientOcclusion: 0 |
||||
m_Padding: 2 |
||||
m_LightmapParameters: {fileID: 0} |
||||
m_LightmapsBakeMode: 1 |
||||
m_TextureCompression: 1 |
||||
m_ReflectionCompression: 2 |
||||
m_MixedBakeMode: 2 |
||||
m_BakeBackend: 1 |
||||
m_PVRSampling: 1 |
||||
m_PVRDirectSampleCount: 32 |
||||
m_PVRSampleCount: 512 |
||||
m_PVRBounces: 2 |
||||
m_PVREnvironmentSampleCount: 256 |
||||
m_PVREnvironmentReferencePointCount: 2048 |
||||
m_PVRFilteringMode: 1 |
||||
m_PVRDenoiserTypeDirect: 1 |
||||
m_PVRDenoiserTypeIndirect: 1 |
||||
m_PVRDenoiserTypeAO: 1 |
||||
m_PVRFilterTypeDirect: 0 |
||||
m_PVRFilterTypeIndirect: 0 |
||||
m_PVRFilterTypeAO: 0 |
||||
m_PVREnvironmentMIS: 1 |
||||
m_PVRCulling: 1 |
||||
m_PVRFilteringGaussRadiusDirect: 1 |
||||
m_PVRFilteringGaussRadiusIndirect: 5 |
||||
m_PVRFilteringGaussRadiusAO: 2 |
||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5 |
||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2 |
||||
m_PVRFilteringAtrousPositionSigmaAO: 1 |
||||
m_ExportTrainingData: 0 |
||||
m_TrainingDataDestination: TrainingData |
||||
m_LightProbeSampleCountMultiplier: 4 |
||||
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} |
||||
m_LightingSettings: {fileID: 0} |
||||
--- !u!196 &4 |
||||
NavMeshSettings: |
||||
serializedVersion: 2 |
||||
m_ObjectHideFlags: 0 |
||||
m_BuildSettings: |
||||
serializedVersion: 3 |
||||
agentTypeID: 0 |
||||
agentRadius: 0.5 |
||||
agentHeight: 2 |
||||
agentSlope: 45 |
||||
agentClimb: 0.4 |
||||
ledgeDropHeight: 0 |
||||
maxJumpAcrossDistance: 0 |
||||
minRegionArea: 2 |
||||
manualCellSize: 0 |
||||
cellSize: 0.16666667 |
||||
manualTileSize: 0 |
||||
tileSize: 256 |
||||
buildHeightMesh: 0 |
||||
maxJobWorkers: 0 |
||||
preserveTilesOutsideBounds: 0 |
||||
debug: |
||||
m_Flags: 0 |
||||
m_NavMeshData: {fileID: 0} |
||||
--- !u!1 &330585543 |
||||
GameObject: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
serializedVersion: 6 |
||||
m_Component: |
||||
- component: {fileID: 330585546} |
||||
- component: {fileID: 330585545} |
||||
- component: {fileID: 330585544} |
||||
- component: {fileID: 330585547} |
||||
m_Layer: 0 |
||||
m_Name: Main Camera |
||||
m_TagString: MainCamera |
||||
m_Icon: {fileID: 0} |
||||
m_NavMeshLayer: 0 |
||||
m_StaticEditorFlags: 0 |
||||
m_IsActive: 1 |
||||
--- !u!81 &330585544 |
||||
AudioListener: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 330585543} |
||||
m_Enabled: 1 |
||||
--- !u!20 &330585545 |
||||
Camera: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 330585543} |
||||
m_Enabled: 1 |
||||
serializedVersion: 2 |
||||
m_ClearFlags: 1 |
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
||||
m_projectionMatrixMode: 1 |
||||
m_GateFitMode: 2 |
||||
m_FOVAxisMode: 0 |
||||
m_Iso: 200 |
||||
m_ShutterSpeed: 0.005 |
||||
m_Aperture: 16 |
||||
m_FocusDistance: 10 |
||||
m_FocalLength: 50 |
||||
m_BladeCount: 5 |
||||
m_Curvature: {x: 2, y: 11} |
||||
m_BarrelClipping: 0.25 |
||||
m_Anamorphism: 0 |
||||
m_SensorSize: {x: 36, y: 24} |
||||
m_LensShift: {x: 0, y: 0} |
||||
m_NormalizedViewPortRect: |
||||
serializedVersion: 2 |
||||
x: 0 |
||||
y: 0 |
||||
width: 1 |
||||
height: 1 |
||||
near clip plane: 0.3 |
||||
far clip plane: 1000 |
||||
field of view: 60 |
||||
orthographic: 0 |
||||
orthographic size: 5 |
||||
m_Depth: -1 |
||||
m_CullingMask: |
||||
serializedVersion: 2 |
||||
m_Bits: 4294967295 |
||||
m_RenderingPath: -1 |
||||
m_TargetTexture: {fileID: 0} |
||||
m_TargetDisplay: 0 |
||||
m_TargetEye: 3 |
||||
m_HDR: 1 |
||||
m_AllowMSAA: 1 |
||||
m_AllowDynamicResolution: 0 |
||||
m_ForceIntoRT: 0 |
||||
m_OcclusionCulling: 1 |
||||
m_StereoConvergence: 10 |
||||
m_StereoSeparation: 0.022 |
||||
--- !u!4 &330585546 |
||||
Transform: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 330585543} |
||||
serializedVersion: 2 |
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||
m_LocalPosition: {x: 0, y: 1, z: -10} |
||||
m_LocalScale: {x: 1, y: 1, z: 1} |
||||
m_ConstrainProportionsScale: 0 |
||||
m_Children: [] |
||||
m_Father: {fileID: 0} |
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||
--- !u!114 &330585547 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 330585543} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
m_RenderShadows: 1 |
||||
m_RequiresDepthTextureOption: 2 |
||||
m_RequiresOpaqueTextureOption: 2 |
||||
m_CameraType: 0 |
||||
m_Cameras: [] |
||||
m_RendererIndex: -1 |
||||
m_VolumeLayerMask: |
||||
serializedVersion: 2 |
||||
m_Bits: 1 |
||||
m_VolumeTrigger: {fileID: 0} |
||||
m_VolumeFrameworkUpdateModeOption: 2 |
||||
m_RenderPostProcessing: 1 |
||||
m_Antialiasing: 0 |
||||
m_AntialiasingQuality: 2 |
||||
m_StopNaN: 0 |
||||
m_Dithering: 0 |
||||
m_ClearDepth: 1 |
||||
m_AllowXRRendering: 1 |
||||
m_AllowHDROutput: 1 |
||||
m_UseScreenCoordOverride: 0 |
||||
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} |
||||
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} |
||||
m_RequiresDepthTexture: 0 |
||||
m_RequiresColorTexture: 0 |
||||
m_Version: 2 |
||||
m_TaaSettings: |
||||
quality: 3 |
||||
frameInfluence: 0.1 |
||||
jitterScale: 1 |
||||
mipBias: 0 |
||||
varianceClampScale: 0.9 |
||||
contrastAdaptiveSharpening: 0 |
||||
--- !u!1 &410087039 |
||||
GameObject: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
serializedVersion: 6 |
||||
m_Component: |
||||
- component: {fileID: 410087041} |
||||
- component: {fileID: 410087040} |
||||
- component: {fileID: 410087042} |
||||
m_Layer: 0 |
||||
m_Name: Directional Light |
||||
m_TagString: Untagged |
||||
m_Icon: {fileID: 0} |
||||
m_NavMeshLayer: 0 |
||||
m_StaticEditorFlags: 0 |
||||
m_IsActive: 1 |
||||
--- !u!108 &410087040 |
||||
Light: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 410087039} |
||||
m_Enabled: 1 |
||||
serializedVersion: 11 |
||||
m_Type: 1 |
||||
m_Color: {r: 1, g: 1, b: 1, a: 1} |
||||
m_Intensity: 2 |
||||
m_Range: 10 |
||||
m_SpotAngle: 30 |
||||
m_InnerSpotAngle: 21.80208 |
||||
m_CookieSize: 10 |
||||
m_Shadows: |
||||
m_Type: 2 |
||||
m_Resolution: -1 |
||||
m_CustomResolution: -1 |
||||
m_Strength: 1 |
||||
m_Bias: 0.05 |
||||
m_NormalBias: 0.4 |
||||
m_NearPlane: 0.2 |
||||
m_CullingMatrixOverride: |
||||
e00: 1 |
||||
e01: 0 |
||||
e02: 0 |
||||
e03: 0 |
||||
e10: 0 |
||||
e11: 1 |
||||
e12: 0 |
||||
e13: 0 |
||||
e20: 0 |
||||
e21: 0 |
||||
e22: 1 |
||||
e23: 0 |
||||
e30: 0 |
||||
e31: 0 |
||||
e32: 0 |
||||
e33: 1 |
||||
m_UseCullingMatrixOverride: 0 |
||||
m_Cookie: {fileID: 0} |
||||
m_DrawHalo: 0 |
||||
m_Flare: {fileID: 0} |
||||
m_RenderMode: 0 |
||||
m_CullingMask: |
||||
serializedVersion: 2 |
||||
m_Bits: 4294967295 |
||||
m_RenderingLayerMask: 1 |
||||
m_Lightmapping: 4 |
||||
m_LightShadowCasterMode: 0 |
||||
m_AreaSize: {x: 1, y: 1} |
||||
m_BounceIntensity: 1 |
||||
m_ColorTemperature: 5000 |
||||
m_UseColorTemperature: 1 |
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} |
||||
m_UseBoundingSphereOverride: 0 |
||||
m_UseViewFrustumForShadowCasterCull: 1 |
||||
m_ForceVisible: 0 |
||||
m_ShadowRadius: 0 |
||||
m_ShadowAngle: 0 |
||||
--- !u!4 &410087041 |
||||
Transform: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 410087039} |
||||
serializedVersion: 2 |
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} |
||||
m_LocalPosition: {x: 0, y: 3, z: 0} |
||||
m_LocalScale: {x: 1, y: 1, z: 1} |
||||
m_ConstrainProportionsScale: 0 |
||||
m_Children: [] |
||||
m_Father: {fileID: 0} |
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} |
||||
--- !u!114 &410087042 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 410087039} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
m_Version: 3 |
||||
m_UsePipelineSettings: 1 |
||||
m_AdditionalLightsShadowResolutionTier: 2 |
||||
m_LightLayerMask: 1 |
||||
m_RenderingLayers: 1 |
||||
m_CustomShadowLayers: 0 |
||||
m_ShadowLayerMask: 1 |
||||
m_ShadowRenderingLayers: 1 |
||||
m_LightCookieSize: {x: 1, y: 1} |
||||
m_LightCookieOffset: {x: 0, y: 0} |
||||
m_SoftShadowQuality: 1 |
||||
--- !u!1 &832575517 |
||||
GameObject: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
serializedVersion: 6 |
||||
m_Component: |
||||
- component: {fileID: 832575519} |
||||
- component: {fileID: 832575518} |
||||
m_Layer: 0 |
||||
m_Name: Global Volume |
||||
m_TagString: Untagged |
||||
m_Icon: {fileID: 0} |
||||
m_NavMeshLayer: 0 |
||||
m_StaticEditorFlags: 0 |
||||
m_IsActive: 1 |
||||
--- !u!114 &832575518 |
||||
MonoBehaviour: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 832575517} |
||||
m_Enabled: 1 |
||||
m_EditorHideFlags: 0 |
||||
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} |
||||
m_Name: |
||||
m_EditorClassIdentifier: |
||||
m_IsGlobal: 1 |
||||
priority: 0 |
||||
blendDistance: 0 |
||||
weight: 1 |
||||
sharedProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2} |
||||
--- !u!4 &832575519 |
||||
Transform: |
||||
m_ObjectHideFlags: 0 |
||||
m_CorrespondingSourceObject: {fileID: 0} |
||||
m_PrefabInstance: {fileID: 0} |
||||
m_PrefabAsset: {fileID: 0} |
||||
m_GameObject: {fileID: 832575517} |
||||
serializedVersion: 2 |
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||
m_LocalScale: {x: 1, y: 1, z: 1} |
||||
m_ConstrainProportionsScale: 0 |
||||
m_Children: [] |
||||
m_Father: {fileID: 0} |
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||
--- !u!1660057539 &9223372036854775807 |
||||
SceneRoots: |
||||
m_ObjectHideFlags: 0 |
||||
m_Roots: |
||||
- {fileID: 330585546} |
||||
- {fileID: 410087041} |
||||
- {fileID: 832575519} |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue