diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.mat b/Assets/Resources/BiggerPointLight.mat new file mode 100755 index 0000000..70548b7 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiggerPointLight + m_Shader: {fileID: 4800000, guid: fc8355eab77f9544a97385d1e17bca1b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.mat b/Assets/Resources/BiggerPointLight.mat new file mode 100755 index 0000000..70548b7 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiggerPointLight + m_Shader: {fileID: 4800000, guid: fc8355eab77f9544a97385d1e17bca1b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Resources/BiggerPointLight.mat.meta b/Assets/Resources/BiggerPointLight.mat.meta new file mode 100755 index 0000000..96c797f --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ad3c71d8b85a624289f4eb29981a85c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.mat b/Assets/Resources/BiggerPointLight.mat new file mode 100755 index 0000000..70548b7 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiggerPointLight + m_Shader: {fileID: 4800000, guid: fc8355eab77f9544a97385d1e17bca1b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Resources/BiggerPointLight.mat.meta b/Assets/Resources/BiggerPointLight.mat.meta new file mode 100755 index 0000000..96c797f --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ad3c71d8b85a624289f4eb29981a85c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.shader b/Assets/Resources/BiggerPointLight.shader new file mode 100755 index 0000000..08c25a9 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader @@ -0,0 +1,53 @@ +Shader "Custom/Standard" +{ + Properties + { + _Color ("Color", Color) = (1,1,1,1) + _MainTex ("Albedo (RGB)", 2D) = "white" {} + _Glossiness ("Smoothness", Range(0,1)) = 0.5 + _Metallic ("Metallic", Range(0,1)) = 0.0 + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input + { + float2 uv_MainTex; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + // put more per-instance properties here + UNITY_INSTANCING_BUFFER_END(Props) + + void surf (Input IN, inout SurfaceOutputStandard o) + { + // Albedo comes from a texture tinted by color + fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = c.a; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.mat b/Assets/Resources/BiggerPointLight.mat new file mode 100755 index 0000000..70548b7 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiggerPointLight + m_Shader: {fileID: 4800000, guid: fc8355eab77f9544a97385d1e17bca1b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Resources/BiggerPointLight.mat.meta b/Assets/Resources/BiggerPointLight.mat.meta new file mode 100755 index 0000000..96c797f --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ad3c71d8b85a624289f4eb29981a85c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.shader b/Assets/Resources/BiggerPointLight.shader new file mode 100755 index 0000000..08c25a9 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader @@ -0,0 +1,53 @@ +Shader "Custom/Standard" +{ + Properties + { + _Color ("Color", Color) = (1,1,1,1) + _MainTex ("Albedo (RGB)", 2D) = "white" {} + _Glossiness ("Smoothness", Range(0,1)) = 0.5 + _Metallic ("Metallic", Range(0,1)) = 0.0 + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input + { + float2 uv_MainTex; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + // put more per-instance properties here + UNITY_INSTANCING_BUFFER_END(Props) + + void surf (Input IN, inout SurfaceOutputStandard o) + { + // Albedo comes from a texture tinted by color + fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = c.a; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Resources/BiggerPointLight.shader.meta b/Assets/Resources/BiggerPointLight.shader.meta new file mode 100755 index 0000000..0d8f991 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fc8355eab77f9544a97385d1e17bca1b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.mat b/Assets/Resources/BiggerPointLight.mat new file mode 100755 index 0000000..70548b7 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiggerPointLight + m_Shader: {fileID: 4800000, guid: fc8355eab77f9544a97385d1e17bca1b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Resources/BiggerPointLight.mat.meta b/Assets/Resources/BiggerPointLight.mat.meta new file mode 100755 index 0000000..96c797f --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ad3c71d8b85a624289f4eb29981a85c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.shader b/Assets/Resources/BiggerPointLight.shader new file mode 100755 index 0000000..08c25a9 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader @@ -0,0 +1,53 @@ +Shader "Custom/Standard" +{ + Properties + { + _Color ("Color", Color) = (1,1,1,1) + _MainTex ("Albedo (RGB)", 2D) = "white" {} + _Glossiness ("Smoothness", Range(0,1)) = 0.5 + _Metallic ("Metallic", Range(0,1)) = 0.0 + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input + { + float2 uv_MainTex; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + // put more per-instance properties here + UNITY_INSTANCING_BUFFER_END(Props) + + void surf (Input IN, inout SurfaceOutputStandard o) + { + // Albedo comes from a texture tinted by color + fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = c.a; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Resources/BiggerPointLight.shader.meta b/Assets/Resources/BiggerPointLight.shader.meta new file mode 100755 index 0000000..0d8f991 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fc8355eab77f9544a97385d1e17bca1b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index b5868cd..5ab2cce 100755 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -171,7 +171,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -214,6 +214,50 @@ m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &55201495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 55201497} + - component: {fileID: 55201496} + m_Layer: 0 + m_Name: LightHelper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &55201496 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55201495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e25c2d107d91a3f48ad678789a21e7d0, type: 3} + m_Name: + m_EditorClassIdentifier: + LightAtten: {fileID: 2800000, guid: 8c07e606fd21879408db897e33ccde5f, type: 3} +--- !u!4 &55201497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55201495} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.15600252, y: 0.086657524, z: 12.885137} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -347,7 +391,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -552,7 +596,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -645,7 +689,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Attenuate.png b/Assets/Attenuate.png new file mode 100755 index 0000000..4ac11e8 --- /dev/null +++ b/Assets/Attenuate.png Binary files differ diff --git a/Assets/Attenuate.png.meta b/Assets/Attenuate.png.meta new file mode 100755 index 0000000..7659f24 --- /dev/null +++ b/Assets/Attenuate.png.meta @@ -0,0 +1,91 @@ +fileFormatVersion: 2 +guid: 2ca38f31b36295943b27fe55d9887061 +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AttenuateNone.png b/Assets/AttenuateNone.png new file mode 100755 index 0000000..a383911 --- /dev/null +++ b/Assets/AttenuateNone.png Binary files differ diff --git a/Assets/AttenuateNone.png.meta b/Assets/AttenuateNone.png.meta new file mode 100755 index 0000000..36fa8c4 --- /dev/null +++ b/Assets/AttenuateNone.png.meta @@ -0,0 +1,103 @@ +fileFormatVersion: 2 +guid: 8c07e606fd21879408db897e33ccde5f +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: 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 + 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 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LightHelper.cs b/Assets/LightHelper.cs new file mode 100755 index 0000000..f89fdb1 --- /dev/null +++ b/Assets/LightHelper.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LightHelper : MonoBehaviour +{ + public Texture LightAtten; + // Start is called before the first frame update + void Start() + { + Shader.SetGlobalTexture("_LightTexturePoint", LightAtten); + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/LightHelper.cs.meta b/Assets/LightHelper.cs.meta new file mode 100755 index 0000000..f36f125 --- /dev/null +++ b/Assets/LightHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e25c2d107d91a3f48ad678789a21e7d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta deleted file mode 100755 index 894faf1..0000000 --- a/Assets/Plugins.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7a5208056b259b94c93011f559630e34 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Resources.meta b/Assets/Resources.meta new file mode 100755 index 0000000..fdc8db4 --- /dev/null +++ b/Assets/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c8275feb02950c49b8a00f62ec3c35e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/AutoLight.cginc b/Assets/Resources/AutoLight.cginc new file mode 100755 index 0000000..cfc843c --- /dev/null +++ b/Assets/Resources/AutoLight.cginc @@ -0,0 +1,300 @@ +// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) + +#ifndef AUTOLIGHT_INCLUDED +#define AUTOLIGHT_INCLUDED + +#include "HLSLSupport.cginc" +#include "UnityShadowLibrary.cginc" + +// ---------------- +// Shadow helpers +// ---------------- + +// If none of the keywords are defined, assume directional? +#if !defined(POINT) && !defined(SPOT) && !defined(DIRECTIONAL) && !defined(POINT_COOKIE) && !defined(DIRECTIONAL_COOKIE) + #define DIRECTIONAL +#endif + +// ---- Screen space direction light shadows helpers (any version) +#if defined (SHADOWS_SCREEN) + + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) + UNITY_DECLARE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = mul( unity_WorldToShadow[0], mul( unity_ObjectToWorld, v.vertex ) ); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + #if defined(SHADOWS_NATIVE) + fixed shadow = UNITY_SAMPLE_SHADOW(_ShadowMapTexture, shadowCoord.xyz); + shadow = _LightShadowData.r + shadow * (1-_LightShadowData.r); + return shadow; + #else + unityShadowCoord dist = SAMPLE_DEPTH_TEXTURE(_ShadowMapTexture, shadowCoord.xy); + // tegra is confused if we use _LightShadowData.x directly + // with "ambiguous overloaded function reference max(mediump float, float)" + unityShadowCoord lightShadowDataX = _LightShadowData.x; + unityShadowCoord threshold = shadowCoord.z; + return max(dist > threshold, lightShadowDataX); + #endif + } + + #else // UNITY_NO_SCREENSPACE_SHADOWS + UNITY_DECLARE_SCREENSPACE_SHADOWMAP(_ShadowMapTexture); + #define TRANSFER_SHADOW(a) a._ShadowCoord = ComputeScreenPos(a.pos); + inline fixed unitySampleShadow (unityShadowCoord4 shadowCoord) + { + fixed shadow = UNITY_SAMPLE_SCREEN_SHADOW(_ShadowMapTexture, shadowCoord); + return shadow; + } + + #endif + + #define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; + #define SHADOW_ATTENUATION(a) unitySampleShadow(a._ShadowCoord) +#endif + +// ----------------------------- +// Shadow helpers (5.6+ version) +// ----------------------------- +// This version depends on having worldPos available in the fragment shader and using that to compute light coordinates. +// if also supports ShadowMask (separately baked shadows for lightmapped objects) + +half UnityComputeForwardShadows(float2 lightmapUV, float3 worldPos, float4 screenPos) +{ + //fade value + float zDist = dot(_WorldSpaceCameraPos - worldPos, UNITY_MATRIX_V[2].xyz); + float fadeDist = UnityComputeShadowFadeDistance(worldPos, zDist); + half realtimeToBakedShadowFade = UnityComputeShadowFade(fadeDist); + + //baked occlusion if any + half shadowMaskAttenuation = UnitySampleBakedOcclusion(lightmapUV, worldPos); + + half realtimeShadowAttenuation = 1.0f; + //directional realtime shadow + #if defined (SHADOWS_SCREEN) + #if defined(UNITY_NO_SCREENSPACE_SHADOWS) && !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + realtimeShadowAttenuation = unitySampleShadow(mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1))); + #else + //Only reached when LIGHTMAP_ON is NOT defined (and thus we use interpolator for screenPos rather than lightmap UVs). See HANDLE_SHADOWS_BLENDING_IN_GI below. + realtimeShadowAttenuation = unitySampleShadow(screenPos); + #endif + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + //avoid expensive shadows fetches in the distance where coherency will be good + UNITY_BRANCH + if (realtimeToBakedShadowFade < (1.0f - 1e-2f)) + { + #endif + + //spot realtime shadow + #if (defined (SHADOWS_DEPTH) && defined (SPOT)) + #if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) + unityShadowCoord4 spotShadowCoord = mul(unity_WorldToShadow[0], unityShadowCoord4(worldPos, 1)); + #else + unityShadowCoord4 spotShadowCoord = screenPos; + #endif + realtimeShadowAttenuation = UnitySampleShadowmap(spotShadowCoord); + #endif + + //point realtime shadow + #if defined (SHADOWS_CUBE) + realtimeShadowAttenuation = UnitySampleShadowmap(worldPos - _LightPositionRange.xyz); + #endif + + #if defined(UNITY_FAST_COHERENT_DYNAMIC_BRANCHING) && defined(SHADOWS_SOFT) && !defined(LIGHTMAP_SHADOW_MIXING) + } + #endif + + return UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, realtimeToBakedShadowFade); +} + +#if defined(SHADER_API_D3D11) || defined(SHADER_API_D3D12) || defined(SHADER_API_XBOXONE) || defined(SHADER_API_PSSL) || defined(UNITY_COMPILER_HLSLCC) +# define UNITY_SHADOW_W(_w) _w +#else +# define UNITY_SHADOW_W(_w) (1.0/_w) +#endif + +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_READ_SHADOW_COORDS(input) 0 +#else +# define UNITY_READ_SHADOW_COORDS(input) READ_SHADOW_COORDS(input) +#endif + +#if defined(HANDLE_SHADOWS_BLENDING_IN_GI) // handles shadows in the depths of the GI function for performance reasons +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) SHADOW_ATTENUATION(a) +#elif defined(SHADOWS_SCREEN) && !defined(LIGHTMAP_ON) && !defined(UNITY_NO_SCREENSPACE_SHADOWS) // no lightmap uv thus store screenPos instead + // can happen if we have two directional lights. main light gets handled in GI code, but 2nd dir light can have shadow screen and mask. + // - Disabled on ES2 because WebGL 1.0 seems to have junk in .w (even though it shouldn't) +# if defined(SHADOWS_SHADOWMASK) && !defined(SHADER_API_GLES) +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# define UNITY_TRANSFER_SHADOW(a, coord) {a._ShadowCoord.xy = coord * unity_LightmapST.xy + unity_LightmapST.zw; a._ShadowCoord.zw = ComputeScreenPos(a.pos).xy;} +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, float4(a._ShadowCoord.zw, 0.0, UNITY_SHADOW_W(a.pos.w))); +# else +# define UNITY_SHADOW_COORDS(idx1) SHADOW_COORDS(idx1) +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, a._ShadowCoord) +# endif +#else +# define UNITY_SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +# if defined(SHADOWS_SHADOWMASK) +# define UNITY_TRANSFER_SHADOW(a, coord) a._ShadowCoord.xy = coord.xy * unity_LightmapST.xy + unity_LightmapST.zw; +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE) || UNITY_LIGHT_PROBE_PROXY_VOLUME) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(a._ShadowCoord.xy, 0, 0) +# endif +# else +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define UNITY_TRANSFER_SHADOW(a, coord) +# else +# define UNITY_TRANSFER_SHADOW(a, coord) TRANSFER_SHADOW(a) +# endif +# if (defined(SHADOWS_DEPTH) || defined(SHADOWS_SCREEN) || defined(SHADOWS_CUBE)) +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# if UNITY_LIGHT_PROBE_PROXY_VOLUME +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, worldPos, UNITY_READ_SHADOW_COORDS(a)) +# else +# define UNITY_SHADOW_ATTENUATION(a, worldPos) UnityComputeForwardShadows(0, 0, 0) +# endif +# endif +# endif +#endif + +#ifdef POINT +//sampler2D_float _LightTexture0; +sampler2D_float _LightTexturePoint; +unityShadowCoord4x4 unity_WorldToLight; +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz; \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexturePoint, dot(lightCoord, lightCoord).rr).r * shadow; +#endif + +#ifdef SPOT +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +inline fixed UnitySpotCookie(unityShadowCoord4 LightCoord) +{ + return tex2D(_LightTexture0, LightCoord.xy / LightCoord.w + 0.5).w; +} +inline fixed UnitySpotAttenuate(unityShadowCoord3 LightCoord) +{ + return tex2D(_LightTextureB0, dot(LightCoord, LightCoord).xx).r; +} +#if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)) +#else +#define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord4 lightCoord = input._LightCoord +#endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = (lightCoord.z > 0) * UnitySpotCookie(lightCoord) * UnitySpotAttenuate(lightCoord.xyz) * shadow; +#endif + +#ifdef DIRECTIONAL +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) fixed destName = UNITY_SHADOW_ATTENUATION(input, worldPos); +#endif + +#ifdef POINT_COOKIE +samplerCUBE_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +sampler2D_float _LightTextureB0; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xyz +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord3 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTextureB0, dot(lightCoord, lightCoord).rr).r * texCUBE(_LightTexture0, lightCoord).w * shadow; +#endif + +#ifdef DIRECTIONAL_COOKIE +sampler2D_float _LightTexture0; +unityShadowCoord4x4 unity_WorldToLight; +# if !defined(UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS) +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = mul(unity_WorldToLight, unityShadowCoord4(worldPos, 1)).xy +# else +# define DECLARE_LIGHT_COORD(input, worldPos) unityShadowCoord2 lightCoord = input._LightCoord +# endif +# define UNITY_LIGHT_ATTENUATION(destName, input, worldPos) \ + DECLARE_LIGHT_COORD(input, worldPos); \ + fixed shadow = UNITY_SHADOW_ATTENUATION(input, worldPos); \ + fixed destName = tex2D(_LightTexture0, lightCoord).w * shadow; +#endif + + +// ----------------------------- +// Light/Shadow helpers (4.x version) +// ----------------------------- +// This version computes light coordinates in the vertex shader and passes them to the fragment shader. + +// ---- Spot light shadows +#if defined (SHADOWS_DEPTH) && defined (SPOT) +#define SHADOW_COORDS(idx1) unityShadowCoord4 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord = mul (unity_WorldToShadow[0], mul(unity_ObjectToWorld,v.vertex)); +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#endif + +// ---- Point light shadows +#if defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) unityShadowCoord3 _ShadowCoord : TEXCOORD##idx1; +#define TRANSFER_SHADOW(a) a._ShadowCoord.xyz = mul(unity_ObjectToWorld, v.vertex).xyz - _LightPositionRange.xyz; +#define SHADOW_ATTENUATION(a) UnitySampleShadowmap(a._ShadowCoord) +#define READ_SHADOW_COORDS(a) unityShadowCoord4(a._ShadowCoord.xyz, 1.0) +#endif + +// ---- Shadows off +#if !defined (SHADOWS_SCREEN) && !defined (SHADOWS_DEPTH) && !defined (SHADOWS_CUBE) +#define SHADOW_COORDS(idx1) +#define TRANSFER_SHADOW(a) +#define SHADOW_ATTENUATION(a) 1.0 +#define READ_SHADOW_COORDS(a) 0 +#else +#ifndef READ_SHADOW_COORDS +#define READ_SHADOW_COORDS(a) a._ShadowCoord +#endif +#endif + +#ifdef POINT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexturePoint, dot(a._LightCoord,a._LightCoord).rr).r * SHADOW_ATTENUATION(a)) +#endif + +#ifdef SPOT +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord4 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)); +# define LIGHT_ATTENUATION(a) ( (a._LightCoord.z > 0) * UnitySpotCookie(a._LightCoord) * UnitySpotAttenuate(a._LightCoord.xyz) * SHADOW_ATTENUATION(a) ) +#endif + +#ifdef DIRECTIONAL +# define DECLARE_LIGHT_COORDS(idx) +# define COMPUTE_LIGHT_COORDS(a) +# define LIGHT_ATTENUATION(a) SHADOW_ATTENUATION(a) +#endif + +#ifdef POINT_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord3 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xyz; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTextureB0, dot(a._LightCoord,a._LightCoord).rr).r * texCUBE(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#ifdef DIRECTIONAL_COOKIE +# define DECLARE_LIGHT_COORDS(idx) unityShadowCoord2 _LightCoord : TEXCOORD##idx; +# define COMPUTE_LIGHT_COORDS(a) a._LightCoord = mul(unity_WorldToLight, mul(unity_ObjectToWorld, v.vertex)).xy; +# define LIGHT_ATTENUATION(a) (tex2D(_LightTexture0, a._LightCoord).w * SHADOW_ATTENUATION(a)) +#endif + +#define UNITY_LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) UNITY_SHADOW_COORDS(idx2) +#define LIGHTING_COORDS(idx1, idx2) DECLARE_LIGHT_COORDS(idx1) SHADOW_COORDS(idx2) +#define UNITY_TRANSFER_LIGHTING(a, coord) COMPUTE_LIGHT_COORDS(a) UNITY_TRANSFER_SHADOW(a, coord) +#define TRANSFER_VERTEX_TO_FRAGMENT(a) COMPUTE_LIGHT_COORDS(a) TRANSFER_SHADOW(a) + +#endif diff --git a/Assets/Resources/AutoLight.cginc.meta b/Assets/Resources/AutoLight.cginc.meta new file mode 100755 index 0000000..6e4d47e --- /dev/null +++ b/Assets/Resources/AutoLight.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 662919dc7e3514c4d9cf77d41debc698 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.mat b/Assets/Resources/BiggerPointLight.mat new file mode 100755 index 0000000..70548b7 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BiggerPointLight + m_Shader: {fileID: 4800000, guid: fc8355eab77f9544a97385d1e17bca1b, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _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} + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Resources/BiggerPointLight.mat.meta b/Assets/Resources/BiggerPointLight.mat.meta new file mode 100755 index 0000000..96c797f --- /dev/null +++ b/Assets/Resources/BiggerPointLight.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ad3c71d8b85a624289f4eb29981a85c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/BiggerPointLight.shader b/Assets/Resources/BiggerPointLight.shader new file mode 100755 index 0000000..08c25a9 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader @@ -0,0 +1,53 @@ +Shader "Custom/Standard" +{ + Properties + { + _Color ("Color", Color) = (1,1,1,1) + _MainTex ("Albedo (RGB)", 2D) = "white" {} + _Glossiness ("Smoothness", Range(0,1)) = 0.5 + _Metallic ("Metallic", Range(0,1)) = 0.0 + } + SubShader + { + Tags { "RenderType"="Opaque" } + LOD 200 + + CGPROGRAM + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Standard fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input + { + float2 uv_MainTex; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + + // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader. + // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing. + // #pragma instancing_options assumeuniformscaling + UNITY_INSTANCING_BUFFER_START(Props) + // put more per-instance properties here + UNITY_INSTANCING_BUFFER_END(Props) + + void surf (Input IN, inout SurfaceOutputStandard o) + { + // Albedo comes from a texture tinted by color + fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = c.a; + } + ENDCG + } + FallBack "Diffuse" +} diff --git a/Assets/Resources/BiggerPointLight.shader.meta b/Assets/Resources/BiggerPointLight.shader.meta new file mode 100755 index 0000000..0d8f991 --- /dev/null +++ b/Assets/Resources/BiggerPointLight.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fc8355eab77f9544a97385d1e17bca1b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index b5868cd..5ab2cce 100755 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -171,7 +171,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -214,6 +214,50 @@ m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &55201495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 55201497} + - component: {fileID: 55201496} + m_Layer: 0 + m_Name: LightHelper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &55201496 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55201495} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e25c2d107d91a3f48ad678789a21e7d0, type: 3} + m_Name: + m_EditorClassIdentifier: + LightAtten: {fileID: 2800000, guid: 8c07e606fd21879408db897e33ccde5f, type: 3} +--- !u!4 &55201497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 55201495} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.15600252, y: 0.086657524, z: 12.885137} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -347,7 +391,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -552,7 +596,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -645,7 +689,7 @@ m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 7ad3c71d8b85a624289f4eb29981a85c, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 798259b..4d3ac50 100755 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.3.0f6 -m_EditorVersionWithRevision: 2019.3.0f6 (27ab2135bccf) +m_EditorVersion: 2019.3.0f5 +m_EditorVersionWithRevision: 2019.3.0f5 (44796c9d3c2c)