장보기 프로젝트

This commit is contained in:
2026-04-14 18:02:07 +09:00
commit dc19679985
2658 changed files with 235852 additions and 0 deletions

55
.gitattributes vendored Normal file
View File

@@ -0,0 +1,55 @@
## Unity ##
*.cs diff=csharp text
*.cginc text
*.shader text
*.mat merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicMaterial merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
## git-lfs ##
*.anim filter=lfs diff=lfs merge=lfs -text
*.asset filter=lfs diff=lfs merge=lfs -text
*.prefab filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
#Image
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.ai filter=lfs diff=lfs merge=lfs -text
#Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
#Video
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
#3D Object
*.FBX filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
#ETC
*.a filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text

76
.gitignore vendored Normal file
View File

@@ -0,0 +1,76 @@
# ---> Unity
# 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
*.slnx
*.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
*.unitypackage.meta
*.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/*

5
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"recommendations": [
"visualstudiotoolsforunity.vstuc"
]
}

10
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"type": "vstuc",
"request": "attach"
}
]
}

71
.vscode/settings.json vendored Normal file
View File

@@ -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": "VR_MyProject.slnx"
}

8
Assets/01_Scenes.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0cc1b79de78bc4991892d4d342d7211a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 99a74e827d78c674597fc0d9af458b28
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

BIN
Assets/01_Scenes/BasicScene.unity LFS Normal file

Binary file not shown.

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4e9fef26e6adb88479ad1b9834a32d94
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,164 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-1168661373884204669
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: Grid
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _EMISSION
m_InvalidKeywords: []
m_LightmapFlags: 6
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: 2800000, guid: 8685512c7856ffd40a4ad1859a7cb52c, type: 3}
m_Scale: {x: 100, y: 100}
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}
- _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: 50, y: 50}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 8685512c7856ffd40a4ad1859a7cb52c, type: 3}
m_Scale: {x: 100, y: 100}
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
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ClearCoat: 0
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _ColorMode: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EmissionEnabled: 0
- _EnvironmentReflections: 1
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _SampleGI: 0
- _Smoothness: 0
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 40d5f39ae0668b14f9d71f56c2981be7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,140 @@
fileFormatVersion: 2
guid: 8685512c7856ffd40a4ad1859a7cb52c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
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: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
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: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 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
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
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: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 54fe71ba3763bf643abb346ab65a3d81
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 172cd846ca2cc854eabcc9d96ccd12bd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c2511c72b8a9ede4d881353370e1087f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bf0fab083ea93724c836890fdc6c500e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c3fa27680ceac1249bbc13005ea91b87
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 55daccc09a3b69647bbab145b54a3ab3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: babed66f44e8b5445b185fac4e02e130
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 112000000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,141 @@
fileFormatVersion: 2
guid: 1b208c9c64896bb41804f87a20a84fad
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
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: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
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: 12
textureShape: 1
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: 2
compressionQuality: 50
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
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
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: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,141 @@
fileFormatVersion: 2
guid: a8efa23c6f03b7d449b0cf4aa8e6a06d
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: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
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: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 6
textureShape: 1
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: 2
compressionQuality: 50
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
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
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: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,141 @@
fileFormatVersion: 2
guid: 5b272b86282919a4488341408a338239
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
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: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
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: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 11
textureShape: 1
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: 2
compressionQuality: 50
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
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
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: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,141 @@
fileFormatVersion: 2
guid: bfb8f0735ac8c9b43a2f0251aea88e11
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
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
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: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,141 @@
fileFormatVersion: 2
guid: fe92f018ab9184b43b46c80b2a02e522
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
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
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: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

8
Assets/02_Scripts.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b4b320bdc2a88a64c9dfc2490ea4dce5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 13976d58f70d6d243a91f2516463219b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,46 @@
using UnityEngine;
namespace VRShopping.Items
{
[CreateAssetMenu(fileName = "ItemData", menuName = "VR Shopping/Item Data", order = 0)]
public class ItemData : ScriptableObject
{
[Header("Identity")]
[SerializeField] private string _itemId;
[SerializeField] private string _displayName;
[SerializeField] private string _brand;
[SerializeField] private ItemCategory _category;
[Header("Pricing")]
[SerializeField, Min(0)] private int _basePrice;
[SerializeField, Range(0f, 1f)] private float _discountRate;
[Header("Visuals")]
[SerializeField] private Sprite _icon;
[SerializeField] private GameObject _prefab;
public string ItemId => _itemId;
public string DisplayName => _displayName;
public string Brand => _brand;
public ItemCategory Category => _category;
public int BasePrice => _basePrice;
public float DiscountRate => _discountRate;
public Sprite Icon => _icon;
public GameObject Prefab => _prefab;
public int FinalPrice => Mathf.RoundToInt(_basePrice * (1f - _discountRate));
}
public enum ItemCategory
{
Fruit,
Vegetable,
Dairy,
Bakery,
Meat,
Drink,
Snack,
Household,
Etc
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ff778a7d4eb15f543822fc80a8606760

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f007d1dbc8db2534294dddaaad2ef53c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
namespace VRShopping.UI
{
public enum Handedness
{
Left,
Right
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1a0d39e1f63994241808d2d7d877caf3

View File

@@ -0,0 +1,43 @@
using UnityEngine;
using VRShopping.Items;
namespace VRShopping.UI
{
public class ItemInfoHud : MonoBehaviour
{
public static ItemInfoHud Instance { get; private set; }
[SerializeField] private ItemInfoPanel _leftPanel;
[SerializeField] private ItemInfoPanel _rightPanel;
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
}
private void OnDestroy()
{
if (Instance == this) Instance = null;
}
public void Show(Handedness hand, ItemData data)
{
GetPanel(hand)?.Show(data);
}
public void Hide(Handedness hand)
{
GetPanel(hand)?.Hide();
}
private ItemInfoPanel GetPanel(Handedness hand)
{
return hand == Handedness.Left ? _leftPanel : _rightPanel;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 03f393b2916cda845895fdd629622563

View File

@@ -0,0 +1,66 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using VRShopping.Items;
namespace VRShopping.UI
{
public class ItemInfoPanel : MonoBehaviour
{
[Header("Refs")]
[SerializeField] private GameObject _root;
[SerializeField] private Image _iconImage;
[SerializeField] private TMP_Text _nameText;
[SerializeField] private TMP_Text _brandText;
[SerializeField] private TMP_Text _priceText;
[SerializeField] private TMP_Text _originalPriceText;
[SerializeField] private GameObject _discountBadge;
[SerializeField] private TMP_Text _discountRateText;
private void Awake()
{
if (_root == null) _root = gameObject;
Hide();
}
public void Show(ItemData data)
{
if (data == null)
{
Hide();
return;
}
if (_iconImage != null)
{
_iconImage.sprite = data.Icon;
_iconImage.enabled = data.Icon != null;
}
if (_nameText != null) _nameText.text = data.DisplayName;
if (_brandText != null) _brandText.text = data.Brand;
if (_priceText != null) _priceText.text = FormatPrice(data.FinalPrice);
bool hasDiscount = data.DiscountRate > 0f;
if (_originalPriceText != null)
{
_originalPriceText.gameObject.SetActive(hasDiscount);
if (hasDiscount) _originalPriceText.text = $"<s>{FormatPrice(data.BasePrice)}</s>";
}
if (_discountBadge != null) _discountBadge.SetActive(hasDiscount);
if (_discountRateText != null && hasDiscount)
{
_discountRateText.text = $"-{Mathf.RoundToInt(data.DiscountRate * 100f)}%";
}
_root.SetActive(true);
}
public void Hide()
{
_root.SetActive(false);
}
private static string FormatPrice(int price) => $"₩{price:N0}";
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4ee2f146032fb094aa2a69f2843dac33

BIN
Assets/DefaultVolumeProfile.asset LFS Normal file

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b6d8050cecbe75e4c8b3445d5ccd33ff
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Ilumisoft.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 21fb9c8d7e3eb3c44a68527c66cef023
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 852e1e9d0daeb1447a383fd4a616b39f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 50ffa7506ebaa5a4b8a92c160c4bfa2a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Get Started.pdf
uploadId: 782589

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 786da5eef0cd1544eb42686879c2c93e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 94708de8987a48546a9253d442859f4d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Materials/Black.mat
uploadId: 782589

View File

@@ -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: 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
- _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

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: 45fd4ab01efdea24e9b5d94dec1c9acc
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Materials/Ground.mat
uploadId: 782589

View File

@@ -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: Red
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: 0.39308167, b: 0.39308167, a: 1}
- _Color: {r: 1, g: 0.39308164, b: 0.39308164, a: 1}
- _EmissionColor: {r: 32, 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 &5129919972173723247
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

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: c1ff4da0408b93e4b897589ee9d50025
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Materials/Red.mat
uploadId: 782589

View File

@@ -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

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: e8f5dce1453289e4c82494e2cdc0805d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Materials/White.mat
uploadId: 782589

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eeb7c840c546a75458c6b01dcfdb42aa
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b2c2465314d3c7f4cba2f3c0021a908d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 6bf62fbadabac69439461d3f2bc4b0d1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Scenes/Demo.unity
uploadId: 782589

View File

@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: de4eff802645df84983388733f88e870
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Scenes/Demo/Global Volume Profile.asset
uploadId: 782589

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5a22abadb745a2a45ab95a0840e52cff
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8c8fd3bfbcdb32940886b38f2fb2f287
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,15 @@
using UnityEditor;
namespace Ilumisoft.Rendering
{
[CustomEditor(typeof(OutlineRendererFeature))]
public class OutlineRendererFeatureEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
EditorGUILayout.HelpBox("Add the Outline override to a Post-processing Volume to further adjust the appearance of the outlines.", MessageType.Info);
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 52c9e5f2c261c9e4f83f233c1ead1899
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Scripts/Editor/OutlineRendererFeatureEditor.cs
uploadId: 782589

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0e32bd9ee22bd924997a1de85dba93f5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,206 @@
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.RenderGraphModule;
using UnityEngine.Rendering.RenderGraphModule.Util;
using UnityEngine.Rendering.Universal;
namespace Ilumisoft.Rendering
{
[SupportedOnRenderer(typeof(UniversalRendererData))]
[DisallowMultipleRendererFeature("Outline")]
public class OutlineRendererFeature : ScriptableRendererFeature
{
public enum InjectionPoint
{
BeforeRenderingTransparents = 450,
BeforeRenderingPostProcessing = 550
}
public enum OutlineMode
{
DepthOnly,
[InspectorName("Depth + Normal")]
DepthNormal
}
public struct Settings
{
public OutlineMode Mode;
public bool ScaleWithResolution;
public int ReferenceHeight;
}
class OutlineRenderPass : ScriptableRenderPass
{
private readonly int LUMINANCE_CONTRAST = Shader.PropertyToID("_LuminanceContrast");
private readonly int LUMINANCE_POWER = Shader.PropertyToID("_LuminancePower");
private readonly int BACKGROUND_COLOR = Shader.PropertyToID("_BackgroundColor");
private readonly int BACKGROUND_COLOR_OPACITY = Shader.PropertyToID("_BackgroundColorOpacity");
private readonly int DEPTH_EDGE = Shader.PropertyToID("_DepthEdge");
private readonly int NORMAL_EDGE = Shader.PropertyToID("_NormalEdge");
private readonly int IS_FADE_ENABLED = Shader.PropertyToID("_IsFadeEnabled");
private readonly int FADE_START = Shader.PropertyToID("_FadeStart");
private readonly int FADE_END = Shader.PropertyToID("_FadeEnd");
private readonly int REFERENCE_HEIGHT = Shader.PropertyToID("_ReferenceHeight");
private readonly int OUTLINE_THICKNESS_ID = Shader.PropertyToID("_OutlineThickness");
private readonly int OUTLINE_COLOR_ID = Shader.PropertyToID("_OutlineColor");
Material material;
Settings settings;
public void Setup(Material material, Settings settings)
{
this.material = material;
this.settings = settings;
}
public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData)
{
var volumeComponent = VolumeManager.instance.stack.GetComponent<OutlineVolumeComponent>();
// Get settings from volume component
int thickness = volumeComponent.thickness.value;
Color outlineColor = volumeComponent.outlineColor.value;
Color backgroundColor = volumeComponent.backgroundColor.value;
bool isDistanceFadeEnabled = volumeComponent.distanceFade.value;
float distanceFadeStart = volumeComponent.fadeStart.value;
float distanceFadeDistance = volumeComponent.fadeDistance.value;
bool backgroundFill = volumeComponent.backgroundFill.value;
Vector2 depthEdge = volumeComponent.depthSmoothstep.value;
Vector2 normalEdge = volumeComponent.normalSmoothstep.value;
float luminancePower = volumeComponent.luminanceDetail.value;
float luminanceContrast = volumeComponent.luminanceContrast.value;
int referenceHeight = settings.ReferenceHeight;
// Cancel if outline are disabled
if (thickness == 0)
{
return;
}
UniversalResourceData resourceData = frameData.Get<UniversalResourceData>();
var sourceHandle = resourceData.activeColorTexture;
var descriptor = sourceHandle.GetDescriptor(renderGraph);
descriptor.clearBuffer = false;
descriptor.name = "_CameraColorOutline";
if (!sourceHandle.IsValid())
{
return;
}
// Get current image height if outlines should not be scaled by a reference resolution
if (!settings.ScaleWithResolution)
{
referenceHeight = descriptor.height;
}
// Set material properties
material.SetColor(OUTLINE_COLOR_ID, outlineColor);
material.SetInt(OUTLINE_THICKNESS_ID, thickness);
material.SetInt(REFERENCE_HEIGHT, referenceHeight);
material.SetInt(IS_FADE_ENABLED, isDistanceFadeEnabled ? 1 : 0);
material.SetFloat(FADE_START, distanceFadeStart);
material.SetFloat(FADE_END, distanceFadeStart + distanceFadeDistance);
material.SetColor(BACKGROUND_COLOR, backgroundColor);
material.SetFloat(BACKGROUND_COLOR_OPACITY, backgroundFill ? 1 : 0);
material.SetVector(DEPTH_EDGE, depthEdge);
material.SetVector(NORMAL_EDGE, normalEdge);
material.SetFloat(LUMINANCE_POWER, luminancePower);
material.SetFloat(LUMINANCE_CONTRAST, luminanceContrast);
// Outline blit
TextureHandle targetHandle = renderGraph.CreateTexture(descriptor);
var parameters = new RenderGraphUtils.BlitMaterialParameters(sourceHandle, targetHandle, material, (int)settings.Mode);
renderGraph.AddBlitPass(parameters, passName: "Draw Outlines");
resourceData.cameraColor = targetHandle;
}
}
[Tooltip("Specifies where in the frame this pass will be injected.")]
public InjectionPoint injectionPoint = InjectionPoint.BeforeRenderingTransparents;
[Tooltip("Determines which scene data is used for edge detection. 'Depth Only' uses depth differences. 'Depth + Normal' uses surface angle changes as well.")]
public OutlineMode mode = OutlineMode.DepthNormal;
[Tooltip("When enabled, outline thickness scales proportionally with screen resolution to maintain visual consistency across different screen resolutions.")]
public bool scaleWithResolution = true;
[Tooltip("The vertical resolution used as a baseline for outline thickness scaling. A value of 1080 means the effect appears 1:1 at 1080p.")]
[Min(720)]
public int referenceHeight = 1080;
public bool showInSceneView = false;
Shader shader;
Material material;
OutlineRenderPass renderPass;
public override void Create()
{
shader = Shader.Find("Hidden/Ilumisoft/PostProcessing/Outline");
if (shader == null)
{
Debug.LogWarning("Outline Renderer Feature: Could not find outline shader");
return;
}
material = CoreUtils.CreateEngineMaterial(shader);
renderPass = new OutlineRenderPass();
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
if (renderPass == null || material == null)
{
return;
}
if (renderingData.cameraData.cameraType == CameraType.Preview || renderingData.cameraData.cameraType == CameraType.Reflection || UniversalRenderer.IsOffscreenDepthTexture(ref renderingData.cameraData))
{
return;
}
if (renderingData.cameraData.cameraType != CameraType.Game && !(showInSceneView && renderingData.cameraData.cameraType == CameraType.SceneView))
{
return;
}
var inputRequirements = ScriptableRenderPassInput.Depth;
if (mode == OutlineMode.DepthNormal)
{
inputRequirements |= ScriptableRenderPassInput.Normal;
}
renderPass.ConfigureInput(inputRequirements);
renderPass.requiresIntermediateTexture = true;
renderPass.renderPassEvent = injectionPoint switch
{
InjectionPoint.BeforeRenderingTransparents => RenderPassEvent.BeforeRenderingTransparents,
InjectionPoint.BeforeRenderingPostProcessing => RenderPassEvent.BeforeRenderingPostProcessing,
_ => RenderPassEvent.BeforeRenderingTransparents,
};
renderPass.Setup(material, new Settings()
{
Mode = mode,
ReferenceHeight = referenceHeight,
ScaleWithResolution = scaleWithResolution
});
renderer.EnqueuePass(renderPass);
}
protected override void Dispose(bool disposing)
{
CoreUtils.Destroy(material);
renderPass = null;
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: fb259e2f978090e4f987a7c376e9b952
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Scripts/Runtime/OutlineRendererFeature.cs
uploadId: 782589

View File

@@ -0,0 +1,56 @@
using System;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
namespace Ilumisoft.Rendering
{
[Serializable]
[VolumeComponentMenu("Post-processing/Outline")]
[VolumeRequiresRendererFeatures(typeof(OutlineRendererFeature))]
public class OutlineVolumeComponent : VolumeComponent
{
[Header("Outline Settings")]
[Tooltip("The width of the outline in pixels. A value of 0 will disable outlines.")]
public ClampedIntParameter thickness = new ClampedIntParameter(1, 0, 4);
[Tooltip("The color used for the outline.")]
public ColorParameter outlineColor = new ColorParameter(Color.black);
[Header("Edge Detection Sensitivity")]
[Tooltip("Depth sensitivity for edge detection. Defines the lower and upper threshold used in the smoothstep function. Smaller values make the effect more sensitive to depth differences.")]
public FloatRangeParameter depthSmoothstep = new FloatRangeParameter(new Vector2(0.1f, 0.2f), 0, 1);
[Tooltip("Normal sensitivity for edge detection. Defines the lower and upper threshold used in the smoothstep function. Smaller values make the effect more sensitive to surface angle changes.")]
public FloatRangeParameter normalSmoothstep = new FloatRangeParameter(new Vector2(0.2f, 0.7f), 0, 1);
[Header("Background Fill (Optional)")]
[Tooltip("Enable fill of the background color.")]
public BoolParameter backgroundFill = new BoolParameter(false);
[Tooltip("Optional background color fill. Only visible if 'Background Fill' is enabled.")]
public ColorParameter backgroundColor = new ColorParameter(Color.white);
[Tooltip("Controls how much detail from the original images luminance is preserved in the background fill. A value of 0 results in a flat fill, 1 keeps full luminance detail.")]
public ClampedFloatParameter luminanceDetail = new ClampedFloatParameter(1, 0, 1);
[Tooltip("Applies a contrast adjustment to the luminance before blending with the fill color. Higher values increase the brightness difference between dark and light areas.")]
public MinFloatParameter luminanceContrast = new MinFloatParameter(1, 0);
[Header("Distance-Based Fading")]
[Tooltip("Enable distance-based fading of the outline effect.")]
public BoolParameter distanceFade = new BoolParameter(false);
[Tooltip("The distance from the camera (in metres) at which outline fading begins. Only used if Distance Fade is enabled.")]
public MinFloatParameter fadeStart = new MinFloatParameter(0, 0);
[Tooltip("How far from the fade start point (in metres) the outlines will fully fade out. Only used if Distance Fade is enabled.")]
public MinFloatParameter fadeDistance = new MinFloatParameter(100, 0);
protected override void OnEnable()
{
base.OnEnable();
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: ffbcdfc145ceaa7468c1bc9b6c4e3e9e
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Scripts/Runtime/OutlineVolumeComponent.cs
uploadId: 782589

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e30cc0484d05e748a85bc726b197657
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,203 @@
Shader "Hidden/Ilumisoft/PostProcessing/Outline"
{
HLSLINCLUDE
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.core/Runtime/Utilities/Blit.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareNormalsTexture.hlsl"
float4 _OutlineColor;
float4 _BackgroundColor;
float _BackgroundColorOpacity;
float _ReferenceHeight;
int _OutlineThickness;
int _IsFadeEnabled;
float _FadeStart;
float _FadeEnd;
float2 _DepthEdge;
float2 _NormalEdge;
float _LuminancePower;
float _LuminanceContrast;
// Samples the scene normals remapped to [0,1]
inline float3 SampleNormal(float2 uv)
{
return SampleSceneNormals(uv) * 0.5 + 0.5;
}
// Samples the scene color
inline float3 SampleColor(float2 uv)
{
return SAMPLE_TEXTURE2D(_BlitTexture,sampler_LinearClamp, uv).rgb;
}
// Samples the scene depth linear01
inline float SampleDepthLinear01(float2 uv)
{
return Linear01Depth(SampleSceneDepth(uv),_ZBufferParams);
}
float GetNormalOutline(float3 topLeft, float3 bottomRight, float3 topRight, float3 bottomLeft)
{
float3 delta = abs(topLeft-bottomRight) + abs(topRight-bottomLeft);
float normalOutline = saturate(max(delta.r, max(delta.g, delta.b)));
return smoothstep(_NormalEdge.x, _NormalEdge.y, normalOutline);
}
float GetDepthOutline(float topLeft, float bottomRight, float topRight, float bottomLeft)
{
float result = abs(topLeft - bottomRight) + abs(topRight - bottomLeft);
result /= max(topLeft, max(bottomRight, max(topRight, bottomLeft)));
return smoothstep(_DepthEdge.x, _DepthEdge.y, saturate(result));
}
inline float InverseLerp(float a, float b, float t)
{
return saturate((t-a)/(b-a));
}
float LuminancePowerContrast(float3 color, float power, float contrast)
{
float luminance = pow(saturate(Luminance(color)), power);
float midpoint = pow(0.5, 2.2);
return saturate((luminance - midpoint) * contrast + midpoint);
}
float4 OutlineDepthOnly (Varyings input) : SV_Target
{
float2 offset = _OutlineThickness * _BlitTexture_TexelSize.xy*_ScreenParams.y/_ReferenceHeight;
float2 centerUV = input.texcoord;
// Sample color and depth of the current pixel
float3 centerColor = SampleColor(centerUV);
float centerDepth = SampleSceneDepth(centerUV);
float distance = LinearEyeDepth(centerDepth,_ZBufferParams);
centerDepth = Linear01Depth(centerDepth,_ZBufferParams);
float cornerDepths[4];
float2 cornerUVs[4];
// Create corner UVs
cornerUVs[0] = centerUV + float2(-offset.x, offset.y);
cornerUVs[1] = centerUV - float2(-offset.x, offset.y);
cornerUVs[2] = centerUV + offset;
cornerUVs[3] = centerUV - offset;
[unroll]
for(int i=0; i<4; i++)
{
// depth
cornerDepths[i] = SampleDepthLinear01(cornerUVs[i]);
// Discard values with a lower depth
cornerDepths[i] = (cornerDepths[i]>centerDepth) ? cornerDepths[i] : centerDepth;
}
// Compute outline
float outline = GetDepthOutline(cornerDepths[0], cornerDepths[1], cornerDepths[2], cornerDepths[3]);
// Apply distance fade
outline *= 1.0 - InverseLerp(_FadeStart, _FadeEnd, distance) * _IsFadeEnabled;
// Apply background color fill
float3 color = LuminancePowerContrast(centerColor, _LuminancePower, _LuminanceContrast) * _BackgroundColor.rgb;
color = lerp(centerColor, color, _BackgroundColorOpacity);
// Apply outline
color = lerp(color, _OutlineColor.rgb, outline*_OutlineColor.a);
return float4(color, 1.0);
}
float4 OutlineDepthNormal (Varyings input) : SV_Target
{
float2 offset = _OutlineThickness * _BlitTexture_TexelSize.xy*_ScreenParams.y/_ReferenceHeight;
float2 centerUV = input.texcoord;
// Sample color, depth and normal of the current pixel
float3 centerNormal = SampleNormal(centerUV);
float3 centerColor = SampleColor(centerUV);
float centerDepth = SampleSceneDepth(centerUV);
float distance = LinearEyeDepth(centerDepth,_ZBufferParams);
centerDepth = Linear01Depth(centerDepth,_ZBufferParams);
float3 cornerNormals[4];
float cornerDepths[4];
float2 cornerUVs[4];
// Create corner UVs
cornerUVs[0] = centerUV + float2(-offset.x, offset.y);
cornerUVs[1] = centerUV - float2(-offset.x, offset.y);
cornerUVs[2] = centerUV + offset;
cornerUVs[3] = centerUV - offset;
[unroll]
for(int i=0; i<4; i++)
{
// sample normal and depth
cornerNormals[i] = SampleNormal(cornerUVs[i]);
cornerDepths[i] = SampleDepthLinear01(cornerUVs[i]);
// Discard values with a lower depth
cornerNormals[i] = (cornerDepths[i]>centerDepth) ? cornerNormals[i] : centerNormal;
cornerDepths[i] = (cornerDepths[i]>centerDepth) ? cornerDepths[i] : centerDepth;
}
// Compute outline
float normalOutline = GetNormalOutline(cornerNormals[0], cornerNormals[1], cornerNormals[2], cornerNormals[3]);
float depthOutline = GetDepthOutline(cornerDepths[0], cornerDepths[1], cornerDepths[2], cornerDepths[3]);
float outline = max(normalOutline, depthOutline);
// Apply distance fade
outline *= 1.0 - InverseLerp(_FadeStart, _FadeEnd, distance) * _IsFadeEnabled;
// Apply background color fill
float3 color = LuminancePowerContrast(centerColor, _LuminancePower, _LuminanceContrast) * _BackgroundColor.rgb;
color = lerp(centerColor, color, _BackgroundColorOpacity);
// Apply outline
color = lerp(color, _OutlineColor.rgb, outline*_OutlineColor.a);
return float4(color, 1.0);
}
ENDHLSL
SubShader
{
Tags { "RenderType"="Opaque" "RenderPipeline" = "UniversalPipeline"}
LOD 100
ZWrite Off Cull Off
Pass
{
Name "OutlineDepthOnlyPass"
HLSLPROGRAM
#pragma vertex Vert
#pragma fragment OutlineDepthOnly
ENDHLSL
}
Pass
{
Name "OutlineDepthNormalPass"
HLSLPROGRAM
#pragma vertex Vert
#pragma fragment OutlineDepthNormal
ENDHLSL
}
}
}

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: e345fb186ff59814ea62283f99352b37
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 327778
packageName: Outline Plus - Post Processing Edge Detection for URP
packageVersion: 1.0
assetPath: Assets/Ilumisoft/Outline Plus/Shaders/OutlineShader.shader
uploadId: 782589

8
Assets/RealToon.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 48709b0e657673f43b9175666f7d90d6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: dc22032b278b46f469de30872180ade5
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 65518
packageName: RealToon (Pro Anime/Toon Shader)
packageVersion: 5.0.15
assetPath: Assets/RealToon/Change - Fix Log.txt
uploadId: 889742

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 658e403a0a86079459a910d6eb1ee150
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: d5a3be5e8e97b7a4bbb0c7eb475b4cbd
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 65518
packageName: RealToon (Pro Anime/Toon Shader)
packageVersion: 5.0.15
assetPath: Assets/RealToon/Editor/RTW.sett
uploadId: 889742

Binary file not shown.

View File

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 298e5d8daf2346e47855e78e1b794f1d
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: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
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: 1
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: 0
compressionQuality: 50
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:

View File

@@ -0,0 +1,584 @@
//MJQStudioWorks
using UnityEditor;
using System.IO;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEditor.PackageManager;
using System.Linq;
namespace RealToon.Editor.Welcome
{
[InitializeOnLoad]
public class RTWelcome : EditorWindow
{
#region Variables
static float WinHig = 300;
static EditorWindow EdiWin;
static string CurrRP;
static string CurrRPDisp;
static string CurrRPVer;
static string CurrRPFullVer;
static char UniVerRev;
static string UniVer;
static string UniVerFull = null;
static string VRC_LV_Stat;
#pragma warning disable CS0414
static bool VRC_LV_CHK;
static bool SRP_CHK_AVAI;
#pragma warning restore CS0414
static Object RT_Pack;
static string RT_pac_name;
static Object RP_ReMe;
static Object RP_Qui_ReMe;
static Object RP_Exam;
static Vector2 scroll;
static Vector2 scroll2;
static Vector2 scroll3;
static string rt_welcome_settings = "Assets/RealToon/Editor/RTW.sett";
static string[] RP_Info = { "Built-In Render Pipeline (BiRP)",
"Universal Render Pipeline (URP)",
"High Definition Render Pipeline (HDRP)" };
#endregion
#region RT_Welcome
static RTWelcome()
{
if (File.Exists(rt_welcome_settings))
{
if (File.ReadAllText(rt_welcome_settings) == "0")
{
if (File.Exists(rt_welcome_settings))
{
EditorApplication.delayCall += Ini;
}
}
}
}
#endregion
#region ini
[MenuItem("Window/RealToon/Welcome Screen")]
static void Ini()
{
EdiWin = GetWindow<RTWelcome>(true);
EdiWin.titleContent = new GUIContent("Welcome RealToon Shader User");
WinHig = 800;
EdiWin.minSize = new Vector2(658, WinHig);
EdiWin.maxSize = new Vector2(658, WinHig);
}
#endregion
#region check_srp_ver
static void check_srp_ver()
{
var request = Client.List();
while (!request.IsCompleted) { }
if (request.Status == StatusCode.Success)
{
foreach (var package in request.Result)
{
if (package.name == "com.unity.render-pipelines.universal")
{
CurrRPVer = package.version.Substring(0, 2);
CurrRPFullVer = package.version;
CurrRP = package.displayName;
SRP_CHK_AVAI = true;
return;
}
else if (package.name == "com.unity.render-pipelines.high-definition")
{
CurrRPVer = package.version.Substring(0, 2);
CurrRPFullVer = package.version;
CurrRP = package.displayName;
SRP_CHK_AVAI = true;
return;
}
}
}
else if (request.Status >= StatusCode.Failure)
{
UnityEngine.Debug.LogWarning("URP and HDRP Packages are not available or present in your project.");
SRP_CHK_AVAI = false;
}
}
#endregion
#region check_vrc_lv
static void check_vrc_lv()
{
if (GraphicsSettings.currentRenderPipeline == null)
{
if (Directory.Exists("Assets/VRC Light Volumes") || Directory.Exists("Packages/red.sim.lightvolumes"))
{
VRC_LV_CHK = true;
VRC_LV_Stat = "Is present";
}
else
{
VRC_LV_CHK = false;
VRC_LV_Stat = "Not Present";
}
if (Directory.Exists("Assets/VRCLightVolumes"))
{
VRC_LV_CHK = false;
VRC_LV_Stat = "It Is Present\nBut the folder name should be\n'VRC Light Volumes' not 'VRCLightVolumes'.";
}
}
else
{
VRC_LV_CHK = false;
VRC_LV_Stat = "BiRP Only";
}
}
#endregion
#region rt_pac_set
static void rt_pac_set()
{
if (GraphicsSettings.currentRenderPipeline != null)
{
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
{
if (int.Parse(CurrRPVer) == 12 || int.Parse(CurrRPVer) == 13)
{
RT_pac_name = "RealToon URP (URP 15 and 16)";
}
if (int.Parse(CurrRPVer) == 14)
{
RT_pac_name = "RealToon URP (URP 14)";
}
if (int.Parse(CurrRPVer) == 15 || int.Parse(CurrRPVer) == 16)
{
RT_pac_name = "RealToon URP (URP 15 and 16)";
}
if (UniVerFull.Substring(0, 6) == "6000.0")
{
RT_pac_name = "RealToon URP (Unity 6.0)";
}
else if (UniVerFull.Substring(0, 6) == "6000.1")
{
RT_pac_name = "RealToon URP (Unity 6.1)";
}
else if (UniVerFull.Substring(0, 6) == "6000.2")
{
RT_pac_name = "RealToon URP (Unity 6.2)";
}
else if (UniVerFull.Substring(0, 6) == "6000.3" || UniVerFull.Substring(0, 6) == "6000.4")
{
RT_pac_name = "RealToon URP (Unity 6.3 and 6.4)";
}
else if (UniVerFull.Substring(0, 6) == "6000.5" || (int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5) )
{
RT_pac_name = "RealToon URP (Unity 6.5 To Later)";
}
else if ( (int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5 && ( (UniVerRev.ToString() == "a") || (UniVerRev.ToString() == "b") ) ) )
{
RT_pac_name = "RealToon URP (Unity 6.5 To Later)";
}
var ids_reme = AssetDatabase.FindAssets("Please read before you unpack or import", new[] { "Assets/RealToon/RealToon Shader Packages/SRP (LWRP - URP - HDRP)/URP" });
if (ids_reme.Length == 1)
{
RP_ReMe = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_reme[0]));
}
else
{
Debug.Log("Couldn't find ReadMe's");
}
var ids_examp = AssetDatabase.FindAssets("RealToon URP (Simple Example)", new[] { "Assets/RealToon/RealToon Examples/SRP/URP" });
if (ids_examp.Length == 1)
{
RP_Exam = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_examp[0]));
}
else
{
Debug.Log("Couldn't find Example's");
}
}
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
{
if (int.Parse(CurrRPVer) == 12 || int.Parse(CurrRPVer) == 13)
{
RT_pac_name = "RealToon HDRP (HDRP 12 and 13)";
}
else if (int.Parse(CurrRPVer) == 16)
{
RT_pac_name = "RealToon HDRP (HDRP 16)";
}
else if (int.Parse(CurrRPVer) == 14 || int.Parse(CurrRPVer) == 15)
{
RT_pac_name = "RealToon HDRP (HDRP 14 and 15)";
}
if (UniVerFull.Substring(0, 6) == "6000.0")
{
RT_pac_name = "RealToon HDRP (Unity 6.0)";
}
else if (UniVerFull.Substring(0, 6) == "6000.1" || UniVerFull.Substring(0, 6) == "6000.2" || UniVerFull.Substring(0, 6) == "6000.3")
{
RT_pac_name = "RealToon HDRP (Unity 6.1 To 6.4)";
}
else if (UniVerFull.Substring(0, 6) == "6000.5" || (int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5))
{
RT_pac_name = "RealToon HDRP (Unity 6.5 To Later)";
}
else if ((int.Parse(UniVerFull.Substring(0, 1)) == 6 && int.Parse(UniVerFull.Substring(5, 1)) >= 5 && ((UniVerRev.ToString() == "a") || (UniVerRev.ToString() == "b"))))
{
RT_pac_name = "RealToon HDRP (Unity 6.5 To Later)";
}
var ids_reme = AssetDatabase.FindAssets("Please read before you unpack or import", new[] { "Assets/RealToon/RealToon Shader Packages/SRP (LWRP - URP - HDRP)/HDRP" });
if (ids_reme.Length == 1)
{
RP_ReMe = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_reme[0]));
}
else
{
Debug.Log("Couldn't find ReadMe's");
}
var ids_qui_reme = AssetDatabase.FindAssets("RealToon HDRP (Quick Guide)", new[] { "Assets/RealToon/RealToon Shader Packages/SRP (LWRP - URP - HDRP)/HDRP" });
if (ids_qui_reme.Length == 1)
{
RP_Qui_ReMe = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_qui_reme[0]));
}
else
{
Debug.Log("Couldn't find Quick ReadMe's");
}
var ids_examp = AssetDatabase.FindAssets("RealToon HDRP (Simple Example)", new[] { "Assets/RealToon/RealToon Examples/SRP/HDRP" });
if (ids_examp.Length == 1)
{
RP_Exam = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_examp[0]));
}
else
{
Debug.Log("Couldn't find Example's");
}
}
}
else
{
if (int.Parse(Application.unityVersion.Substring(0, 4)) >= 2019)
{
RT_pac_name = "RealToon Built-In RP [3D] (Unity 2019 and Later)";
}
else if (int.Parse(Application.unityVersion.Substring(0, 4)) < 2019)
{
RT_pac_name = "RealToon Built-In RP [3D] (Unity 2018 and below) (FV)";
}
var ids_examp = AssetDatabase.FindAssets("RealToon Built-In RP [3D] (Example)", new[] { "Assets/RealToon/RealToon Examples/Built-In RP [3D]" });
if (ids_examp.Length == 1)
{
RP_Exam = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids_examp[0]));
}
else
{
Debug.Log("Couldn't find Example's");
}
}
var ids = AssetDatabase.FindAssets(RT_pac_name);
if (ids.Length == 1)
{
RT_Pack = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
}
else
{
RT_pac_name = "Package Not Found In Your Project";
Debug.Log("Couldn't find packages");
}
}
#endregion
#region Process & UI
void OnGUI()
{
Texture2D t = EditorGUIUtility.Load("Assets/RealToon/Editor/RT_GUI_Img.png") as Texture2D;
Rect rect = new Rect(233, 0, t.width + 70, t.height + 70);
GUI.DrawTexture(rect, t, ScaleMode.ScaleToFit);
EditorGUILayout.Space(76);
EditorGUILayout.BeginVertical();
EditorGUILayout.BeginVertical();
if (GraphicsSettings.currentRenderPipeline != null)
{
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
{
CurrRPDisp = RP_Info[1] + " v" + CurrRPFullVer;
}
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
{
CurrRPDisp = RP_Info[2] + " v" + CurrRPFullVer;
}
}
else
{
CurrRPDisp = RP_Info[0] + CurrRPFullVer;
}
GUIStyle centeredtext = GUI.skin.GetStyle("Label");
centeredtext.alignment = TextAnchor.MiddleCenter;
centeredtext.fontSize = 18;
centeredtext.fontStyle = FontStyle.Bold;
EditorGUILayout.LabelField("A PRO Anime/Toon Shader", centeredtext);
EditorGUILayout.EndVertical();
EditorGUILayout.Space(19);
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.Space(22);
EditorGUILayout.BeginVertical("TextArea", GUILayout.Height(310));
EditorGUILayout.LabelField("Introduction:");
scroll = EditorGUILayout.BeginScrollView(scroll, GUILayout.Height(285));
EditorGUILayout.Space(4);
GUILayout.TextArea(
"*Thank you for purchasing RealToon Shader, before you start using RealToon, please read first the 'ReadMe - Important - Guide.txt' text file for setups and infos.\n\n" +
"*All shaders packages are in the folder 'RealToon Shader Packages', just unpack the 'RealToon Shader' that correspond to your projects render pipeline.\n" +
"You can also just click the package on the Welcome Screen, To access the Welcome Screen just go to 'Window > RealToon > Welcome Screen'.\n\n" +
"*If you are a VRoid user, read the 'For VRoid-VRM users.txt' text file.\n\n" +
"*For video tutorials and user guide, see the bottom part of RealToon Inspector panel.\n\n" +
"*If you need some help/support, just send an email including the invoice number.\n" +
"See the 'User Guide.pdf' file for the links and email support.\n\n" +
"*PlayStation support is currently for URP and HDRP only.\n\n" +
"Note:\nDon't move the 'RealToon' folder to other folder, it should stay in the root folder 'Asset'.");
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
EditorGUILayout.Space(22);
EditorGUILayout.EndHorizontal();
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.Space(20);
EditorGUILayout.BeginVertical("TextArea", GUILayout.Height(220));
EditorGUILayout.LabelField("Project Info:");
scroll2 = EditorGUILayout.BeginScrollView(scroll2, GUILayout.Height(240));
EditorGUILayout.Space(4);
GUIStyle Pro_info = GUI.skin.GetStyle("Label");
Pro_info.alignment = TextAnchor.MiddleLeft;
Pro_info.fontSize = 12;
GUILayout.Label("Rendering Pipeline: \n" + CurrRPDisp, Pro_info);
EditorGUILayout.Space(10);
GUILayout.Label("Unity Version: \n" + UniVerFull, Pro_info);
EditorGUILayout.Space(10);
if (GraphicsSettings.currentRenderPipeline == null)
{
GUILayout.Label("VRC Light Volumes (VRC Users Only): \n" + VRC_LV_Stat, Pro_info);
}
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
EditorGUILayout.Space(30);
EditorGUILayout.BeginVertical("TextArea", GUILayout.Height(220));
EditorGUILayout.LabelField("Suitable Packages, ReadMe & Examples:");
scroll3 = EditorGUILayout.BeginScrollView(scroll3, GUILayout.Height(240));
GUIStyle Pro_info2 = GUI.skin.GetStyle("Label");
Pro_info2.fontSize = 12;
Pro_info2.fontStyle = FontStyle.Bold;
EditorGUILayout.LabelField("Packages: ", Pro_info2);
if(GUILayout.Button(RT_pac_name))
{
if(RT_pac_name != "Package Not Found In Your Project")
{
Debug.LogWarning("Now opening RealToon Shader package: " + RT_Pack.name);
AssetDatabase.OpenAsset(RT_Pack);
}
}
EditorGUILayout.Space(10);
EditorGUILayout.LabelField("Examples: ", Pro_info2);
if (GraphicsSettings.currentRenderPipeline != null)
{
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
{
if(GUILayout.Button("RealToon URP Example"))
{
AssetDatabase.OpenAsset(RP_Exam);
}
}
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
{
if(GUILayout.Button("RealToon HDRP Example"))
{
AssetDatabase.OpenAsset(RP_Exam);
}
}
}
else
{
if(GUILayout.Button("RealToon Built-In RP/BiRP Example"))
{
AssetDatabase.OpenAsset(RP_Exam);
}
}
EditorGUILayout.Space(10);
EditorGUILayout.LabelField("ReadMe: ", Pro_info2);
if (GraphicsSettings.currentRenderPipeline != null)
{
if (CurrRP == "Universal Render Pipeline" || CurrRP == "Universal RP")
{
if(GUILayout.Button("Read Me First (URP)"))
{
AssetDatabase.OpenAsset(RP_ReMe);
}
}
else if (CurrRP == "High Definition Render Pipeline" || CurrRP == "High Definition RP")
{
if(GUILayout.Button("Read Me First (HDRP)"))
{
AssetDatabase.OpenAsset(RP_ReMe);
}
if(GUILayout.Button("Quick Guide (HDRP)"))
{
AssetDatabase.OpenAsset(RP_Qui_ReMe);
}
}
}
if(GUILayout.Button("ReadMe for Manual Unpacking & Info"))
{
Application.OpenURL(Application.dataPath + "/RealToon/ReadMe - Important - Guide.txt");
}
if(GUILayout.Button("VRoid-VRM users Read Me"))
{
Application.OpenURL(Application.dataPath + "/RealToon/For VRoid-VRM users.txt");
}
if(GUILayout.Button("What's New"))
{
Application.OpenURL(Application.dataPath + "/RealToon/What's New.txt");
}
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
EditorGUILayout.Space(20);
EditorGUILayout.EndHorizontal();
EditorGUILayout.Space(5);
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("User Guide"))
{
Application.OpenURL(Application.dataPath + "/RealToon/RealToon (User Guide).pdf");
}
if (GUILayout.Button("Video Tutorials"))
{
Application.OpenURL("www.youtube.com/playlist?list=PL0M1m9smMVPJ4qEkJnZObqJE5mU9uz6SY");
}
if (GUILayout.Button("Contact/Support"))
{
Application.OpenURL("www.mjqstudioworks.weebly.com/contact.html");
}
if (GUILayout.Button("Website"))
{
Application.OpenURL("www.mjqstudioworks.weebly.com");
}
if (GUILayout.Button("Check Updates"))
{
Application.OpenURL("https://mjqstudioworks.weebly.com/realtoonshaderupdates.html");
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.EndVertical();
}
private void OnEnable()
{
UniVer = Application.unityVersion.Substring(0, 4);
UniVerFull = Application.unityVersion;
string[] UniVerPar = Application.unityVersion.Split('.');
UniVerRev = UniVerPar[2].FirstOrDefault(char.IsLetter);
check_srp_ver();
check_vrc_lv();
rt_pac_set();
}
private void OnDestroy()
{
if (File.Exists(rt_welcome_settings) && File.ReadAllText(rt_welcome_settings) == "0")
{
File.WriteAllText(rt_welcome_settings, "1");
AssetDatabase.Refresh();
}
}
#endregion
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 3eddd3adb3383a342a543d148d492447
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 65518
packageName: RealToon (Pro Anime/Toon Shader)
packageVersion: 5.0.15
assetPath: Assets/RealToon/Editor/RT_Welcome.cs
uploadId: 889742

View File

@@ -0,0 +1,129 @@
//RealToon Shader Cache
//©MJQStudioWorks
using UnityEngine;
using UnityEditor;
using System.IO;
namespace RealToon.Tools
{
public class RealToonShaderCache : EditorWindow
{
#region Variables
static float WinHig = 300;
static EditorWindow EdiWin;
static int countsha = 0;
static string shaderCachePath = Directory.GetParent(Application.dataPath).ToString() + "/Library/ShaderCache/shader";
static string infospace = null;
static string[] rt_shaders =
{ "D_Default"
, "D_Fade_Transparency"
, "D_Refraction"
, "L_Default"
, "L_Fade_Transparency"
, "T_Default"
, "T_Fade_Transparency"
, "T_Refraction"
, "D_Default_URP"
, "D_Default_HDRP"
, "RealToon_Sobel_Outline_FX"
, "DeNorSobOutline"};
#endregion
[MenuItem("Window/RealToon/RealToon Shader Cache")]
static void Init()
{
EdiWin = GetWindow<RealToonShaderCache>(true);
EdiWin.titleContent = new GUIContent("RealToon Shader Cache");
WinHig = 200;
EdiWin.minSize = new Vector2(440, WinHig);
EdiWin.maxSize = new Vector2(440, WinHig);
CountRTCache();
infospace = "There are " + countsha + " RealToon Shaders & Effects cached.";
}
void OnGUI()
{
var lblcenstyle = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleCenter };
GUILayout.Space(10);
EditorGUILayout.BeginVertical();
GUILayout.Label(infospace, lblcenstyle);
CountRTCache();
infospace = "There are " + countsha + " RealToon Shaders cached.";
GUILayout.Space(10);
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
if (GUILayout.Button("Reduce/Clean Cached RealToon Shader"))
{
foreach (string rt_sha in rt_shaders)
{
string[] direc = Directory.GetDirectories(@shaderCachePath, rt_sha + "*");
foreach (string dir in direc)
{
if (direc.Length == 1)
{
Debug.Log("RealToon Shader Cache: " + rt_sha + " Shader Cache removed.");
Directory.Delete(dir.ToString(), true);
}
}
if (direc.Length == 0)
{
Debug.LogWarning("RealToon Shader Cache: " + rt_sha + " Shader already removed or not present.");
}
}
}
if (GUILayout.Button("Re-import RealToon Shader"))
{
AssetDatabase.ImportAsset("Assets/RealToon", ImportAssetOptions.ImportRecursive);
}
EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
GUILayout.Label("Note:");
GUILayout.Label("*This will reduce or clear cached RealToon Shaders.\n" +
"*Useful for after update RealToon Shader or Re-import RealToon Shader.\n" +
"*'Re-import RealToon Shader', will cache RealToon Shaders again.");
EditorGUILayout.EndVertical();
}
static void CountRTCache()
{
countsha = 0;
foreach (string rt_sha in rt_shaders)
{
string[] direc = Directory.GetDirectories(@shaderCachePath, rt_sha + "*");
foreach (string dir in direc)
{
++countsha;
}
}
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b57f4820f70afb6469f99f2a6e73e607
AssetOrigin:
serializedVersion: 1
productId: 65518
packageName: RealToon (Pro Anime/Toon Shader)
packageVersion: 5.0.15
assetPath: Assets/RealToon/Editor/RealToonShaderCache.cs
uploadId: 889742

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e44691c063f9e5943b99e9a918b7647a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,37 @@
//RealToonGUI
//MJQStudioWorks
//©2025
using UnityEngine;
using UnityEditor;
using System;
namespace RealToon.SettingsOptions
{
internal class RTToggleOption : MaterialPropertyDrawer
{
public override void OnGUI(Rect position, MaterialProperty prop, GUIContent label, MaterialEditor editor)
{
bool value = (prop.floatValue != 0.0f);
EditorGUI.BeginChangeCheck();
EditorGUI.showMixedValue = prop.hasMixedValue;
value = EditorGUI.Toggle(position, label, value);
EditorGUI.showMixedValue = false;
if (EditorGUI.EndChangeCheck())
{
prop.floatValue = value ? 1.0f : 0.0f;
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1cd58e2ff61cd5e459c58cecf73d687b

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: b5506465586dd18499b022aff98e6ac8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 65518
packageName: RealToon (Pro Anime/Toon Shader)
packageVersion: 5.0.15
assetPath: Assets/RealToon/Editor/SwapShaderToRealToon.cs
uploadId: 889742

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ee6ea4c84f5a5a745b829d589b86cc96
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7b0d46c0bede85d44bfb1cf332629acb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 99daaf95688bded47ab05eff0314e09a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More