浏览代码
Merge branch 'master' of https://github.com/Unity-Technologies/ScriptableRenderLoop into Branch_RTRefactoring
Merge branch 'master' of https://github.com/Unity-Technologies/ScriptableRenderLoop into Branch_RTRefactoring
# Conflicts: # ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/DebugFullScreen.shader # ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDRenderPipeline.cs/main
Julien Ignace
7 年前
当前提交
85039c4d
共有 81 个文件被更改,包括 5361 次插入 和 3699 次删除
-
978ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1101_Unlit.unity.png
-
999ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1102_Unlit_Distortion.unity.png
-
999ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1103_Unlit_Distortion_DepthTest.unity.png
-
999ImageTemplates/HDRenderPipeline/Scenes/2xxx_Lighting/2201_ReflectionProbes_Priority.unity.png
-
999ImageTemplates/HDRenderPipeline/Scenes/3xxx_DebugView/3001_DebugView.unity.png
-
999ImageTemplates/HDRenderPipeline/Scenes/9xxx_Other/9001_Decals.unity.png
-
2ImageTemplates/HDRenderPipeline/Scenes/9xxx_Other/9001_Decals.unity.png.meta
-
1ScriptableRenderPipeline/Core/CoreRP/CoreUtils.cs
-
15ScriptableRenderPipeline/Core/CoreRP/Debugging/DebugItemHandler.cs
-
2ScriptableRenderPipeline/Core/CoreRP/Debugging/DebugMenuManager.cs
-
2ScriptableRenderPipeline/Core/CoreRP/Editor/Debugging/DebugMenuEditor.cs
-
2ScriptableRenderPipeline/Core/CoreRP/Editor/ShaderGenerator/ShaderGeneratorMenu.cs
-
14ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Color.hlsl
-
21ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Common.hlsl
-
48ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/CommonLighting.hlsl
-
22ScriptableRenderPipeline/Core/CoreRP/ShaderLibrary/Debug.hlsl
-
61ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/DebugDisplay.cs
-
23ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/DebugDisplay.hlsl
-
20ScriptableRenderPipeline/HDRenderPipeline/HDRP/Debug/DebugFullScreen.shader
-
4ScriptableRenderPipeline/HDRenderPipeline/HDRP/Decal/DecalProjectorComponent.cs
-
66ScriptableRenderPipeline/HDRenderPipeline/HDRP/Decal/DecalSystem.cs
-
2ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Decal/DecalMenuItems.cs
-
9ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/HDAssetFactory.cs
-
13ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/HDRenderPipelineMenuItems.cs
-
20ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Lighting/Reflection/PlanarReflectionProbeUI.Handles.cs
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/Material/Decal/DecalProjectorComponentEditor.cs
-
10ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/RenderLoopSettings/RenderPipelineSettingsUI.cs
-
2ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/RenderLoopSettings/SerializedRenderPipelineSettings.cs
-
6ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/UpgradeStandardShaderMaterials.cs
-
96ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDRenderPipeline.cs
-
5ScriptableRenderPipeline/HDRenderPipeline/HDRP/HDRenderPipelineAsset.asset
-
2ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/DeferredDirectionalShadow.compute
-
8ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/LightLoop.cs
-
20ScriptableRenderPipeline/HDRenderPipeline/HDRP/Lighting/LightLoop/LightLoopDef.hlsl
-
4ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Decal/Decal.cs
-
5ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Decal/Decal.cs.hlsl
-
3ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Decal/Decal.hlsl
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Decal/DecalData.hlsl
-
41ScriptableRenderPipeline/HDRenderPipeline/HDRP/Material/Lit/Lit.hlsl
-
22ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipeline/FrameSettings.cs
-
1ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipeline/RenderPipelineSettings.cs
-
2ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/HDRenderPipelineResources.asset
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/DepthPyramid.compute
-
14ScriptableRenderPipeline/HDRenderPipeline/HDRP/ShaderPass/ShaderPassDBuffer.hlsl
-
25ScriptableRenderPipeline/HDRenderPipeline/HDRP/ShaderPass/ShaderPassVelocity.hlsl
-
10ScriptableRenderPipeline/LightweightPipeline/LWRP/Data/LightweightPipelineAsset.cs
-
4ScriptableRenderPipeline/LightweightPipeline/LWRP/Editor/LightweightMaterialUpgrader.cs
-
2TestbedPipelines/BasicRenderPipeline/BasicRenderPipeline.cs
-
3TestbedPipelines/Fptl/FptlLighting.cs
-
68TestbedPipelines/OnTileDeferredPipeline/OnTileDeferredRenderPipeline.cs
-
4Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/HDRP_GraphicTests_Asset.asset
-
962Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/2xxx_Lighting/2203_PlanarProbes.unity
-
245Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/3xxx_DebugView/3001_DebugView.unity
-
15Tests/Scripts/Editor/GraphicTests/Framework/TestResultWindow.cs
-
17ScriptableRenderPipeline/HDRenderPipeline/HDRP/Decal/GlobalDecalSettings.cs
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/Decal/GlobalDecalSettings.cs.meta
-
32ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/RenderLoopSettings/GlobalDecalSettingsUI.cs
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/RenderLoopSettings/GlobalDecalSettingsUI.cs.meta
-
20ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/RenderLoopSettings/SerializedGlobalDecalSettings.cs
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/Editor/RenderLoopSettings/SerializedGlobalDecalSettings.cs.meta
-
209ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/BufferPyramid.cs
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/BufferPyramid.cs.meta
-
144ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/ColorPyramid.compute
-
9ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/ColorPyramid.compute.meta
-
44ScriptableRenderPipeline/HDRenderPipeline/HDRP/SceneViewDrawMode.cs
-
11ScriptableRenderPipeline/HDRenderPipeline/HDRP/SceneViewDrawMode.cs.meta
-
85Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Capsule.prefab
-
8Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Capsule.prefab.meta
-
8Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Invert_Cylinder.meta
-
8Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Invert_Hemisphere.meta
-
217Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/Materials/Unlit_PixelGrid.mat
-
8Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/Materials/Unlit_PixelGrid.mat.meta
-
29Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Invert_Cylinder/Invert_Cylinder.fbx
-
92Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Invert_Cylinder/Invert_Cylinder.fbx.meta
-
43Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Invert_Hemisphere/Invert_Hemisphere.fbx
-
92Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/CommonAssets/3DObjects/Invert_Hemisphere/Invert_Hemisphere.fbx.meta
-
8Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/2xxx_Lighting/2203_PlanarProbes.meta
-
0/ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/DepthPyramid.compute.meta
-
0/ScriptableRenderPipeline/HDRenderPipeline/HDRP/RenderPipelineResources/DepthPyramid.compute
978
ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1101_Unlit.unity.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
999
ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1102_Unlit_Distortion.unity.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
999
ImageTemplates/HDRenderPipeline/Scenes/1xxx_Materials/1103_Unlit_Distortion_DepthTest.unity.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
999
ImageTemplates/HDRenderPipeline/Scenes/2xxx_Lighting/2201_ReflectionProbes_Priority.unity.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
999
ImageTemplates/HDRenderPipeline/Scenes/3xxx_DebugView/3001_DebugView.unity.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
999
ImageTemplates/HDRenderPipeline/Scenes/9xxx_Other/9001_Decals.unity.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
962
Tests/GraphicsTests/RenderPipeline/HDRenderPipeline/Scenes/2xxx_Lighting/2203_PlanarProbes.unity
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
using System.Collections; |
|||
using System.Collections.Generic; |
|||
using UnityEngine; |
|||
using System; |
|||
|
|||
namespace UnityEngine.Experimental.Rendering.HDPipeline |
|||
{ |
|||
// RenderRenderPipelineSettings represent settings that are immutable at runtime.
|
|||
// There is a dedicated RenderRenderPipelineSettings for each platform
|
|||
|
|||
[Serializable] |
|||
public class GlobalDecalSettings |
|||
{ |
|||
public int drawDistance = 1000; |
|||
public int atlasSize = 8192; |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 485a401e826e66d4fb7bc37f9562ad93 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using UnityEngine; |
|||
|
|||
namespace UnityEditor.Experimental.Rendering |
|||
{ |
|||
using _ = CoreEditorUtils; |
|||
using CED = CoreEditorDrawer<GlobalDecalSettingsUI, SerializedGlobalDecalSettings>; |
|||
|
|||
class GlobalDecalSettingsUI : BaseUI<SerializedGlobalDecalSettings> |
|||
{ |
|||
static GlobalDecalSettingsUI() |
|||
{ |
|||
Inspector = CED.Group(SectionDecalSettings); |
|||
} |
|||
public static readonly CED.IDrawer Inspector; |
|||
|
|||
public static readonly CED.IDrawer SectionDecalSettings = CED.Action(Drawer_SectionDecalSettings); |
|||
|
|||
public GlobalDecalSettingsUI() |
|||
: base(0) |
|||
{ |
|||
|
|||
} |
|||
static void Drawer_SectionDecalSettings(GlobalDecalSettingsUI s, SerializedGlobalDecalSettings d, Editor o) |
|||
{ |
|||
EditorGUILayout.LabelField(_.GetContent("Decals"), EditorStyles.boldLabel); |
|||
++EditorGUI.indentLevel; |
|||
EditorGUILayout.PropertyField(d.drawDistance, _.GetContent("Draw Distance")); |
|||
EditorGUILayout.PropertyField(d.atlasSize, _.GetContent("Atlas Size")); |
|||
--EditorGUI.indentLevel; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: cd7279651d591ea499d14ea8d77384ef |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using UnityEngine.Experimental.Rendering.HDPipeline; |
|||
|
|||
namespace UnityEditor.Experimental.Rendering |
|||
{ |
|||
class SerializedGlobalDecalSettings |
|||
{ |
|||
public SerializedProperty root; |
|||
|
|||
public SerializedProperty drawDistance; |
|||
public SerializedProperty atlasSize; |
|||
|
|||
public SerializedGlobalDecalSettings(SerializedProperty root) |
|||
{ |
|||
this.root = root; |
|||
|
|||
drawDistance = root.Find((GlobalDecalSettings s) => s.drawDistance); |
|||
atlasSize = root.Find((GlobalDecalSettings s) => s.atlasSize); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: dadcbfde34013be40a7e1162307cc677 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
using UnityEngine.Rendering; |
|||
|
|||
namespace UnityEngine.Experimental.Rendering.HDPipeline |
|||
{ |
|||
class BufferPyramid |
|||
{ |
|||
static readonly int _Size = Shader.PropertyToID("_Size"); |
|||
static readonly int _Source = Shader.PropertyToID("_Source"); |
|||
static readonly int _Result = Shader.PropertyToID("_Result"); |
|||
static readonly int _SrcSize = Shader.PropertyToID("_SrcSize"); |
|||
const int k_DepthBlockSize = 4; |
|||
|
|||
GPUCopy m_GPUCopy; |
|||
ComputeShader m_ColorPyramidCS; |
|||
|
|||
RenderTextureDescriptor m_ColorRenderTextureDescriptor; |
|||
int[] m_ColorPyramidMips = new int[0]; |
|||
int m_ColorPyramidKernel; |
|||
|
|||
ComputeShader m_DepthPyramidCS; |
|||
RenderTextureDescriptor m_DepthRenderTextureDescriptor; |
|||
int[] m_DepthPyramidMips = new int[0]; |
|||
int m_DepthPyramidKernel_8; |
|||
int m_DepthPyramidKernel_1; |
|||
|
|||
public RenderTextureDescriptor colorRenderTextureDescriptor { get { return m_ColorRenderTextureDescriptor; } } |
|||
public int colorUsedMipMapCount { get { return Mathf.Min(colorBufferMipMapCount, m_ColorPyramidMips.Length); } } |
|||
public int colorBufferMipMapCount |
|||
{ |
|||
get |
|||
{ |
|||
var minSize = Mathf.Min(colorRenderTextureDescriptor.width, colorRenderTextureDescriptor.height); |
|||
return Mathf.FloorToInt(Mathf.Log(minSize, 2f)); |
|||
} |
|||
} |
|||
|
|||
public RenderTextureDescriptor depthRenderTextureDescriptor { get { return m_DepthRenderTextureDescriptor; } } |
|||
public int depthUsedMipMapCount { get { return Mathf.Min(depthBufferMipMapCount, m_DepthPyramidMips.Length); } } |
|||
public int depthBufferMipMapCount |
|||
{ |
|||
get |
|||
{ |
|||
var minSize = Mathf.Min(depthRenderTextureDescriptor.width, depthRenderTextureDescriptor.height); |
|||
return Mathf.FloorToInt(Mathf.Log(minSize, 2f)); |
|||
} |
|||
} |
|||
|
|||
public BufferPyramid( |
|||
ComputeShader colorPyramidCS, int[] colorMipIds, |
|||
ComputeShader depthPyramidCS, GPUCopy gpuCopy, int[] depthMipIds) |
|||
{ |
|||
m_ColorPyramidCS = colorPyramidCS; |
|||
m_ColorPyramidKernel = m_ColorPyramidCS.FindKernel("KMain"); |
|||
m_ColorPyramidMips = colorMipIds; |
|||
|
|||
m_DepthPyramidCS = depthPyramidCS; |
|||
m_GPUCopy = gpuCopy; |
|||
m_DepthPyramidMips = depthMipIds; |
|||
m_DepthPyramidKernel_8 = m_DepthPyramidCS.FindKernel("KMain_8"); |
|||
m_DepthPyramidKernel_1 = m_DepthPyramidCS.FindKernel("KMain_1"); |
|||
} |
|||
|
|||
public void RenderDepthPyramid( |
|||
HDCamera hdCamera, |
|||
CommandBuffer cmd, |
|||
ScriptableRenderContext renderContext, |
|||
RenderTargetIdentifier depthTexture, |
|||
RenderTargetIdentifier targetTexture) |
|||
{ |
|||
var depthPyramidDesc = m_DepthRenderTextureDescriptor; |
|||
|
|||
var lodCount = depthBufferMipMapCount; |
|||
if (lodCount > m_DepthPyramidMips.Length) |
|||
{ |
|||
Debug.LogWarningFormat("Cannot compute all mipmaps of the depth pyramid, max texture size supported: {0}", (2 << m_DepthPyramidMips.Length).ToString()); |
|||
lodCount = m_DepthPyramidMips.Length; |
|||
} |
|||
|
|||
cmd.ReleaseTemporaryRT(m_DepthPyramidMips[0]); |
|||
|
|||
depthPyramidDesc.sRGB = false; |
|||
depthPyramidDesc.enableRandomWrite = true; |
|||
depthPyramidDesc.useMipMap = false; |
|||
|
|||
cmd.GetTemporaryRT(m_DepthPyramidMips[0], depthPyramidDesc, FilterMode.Bilinear); |
|||
m_GPUCopy.SampleCopyChannel_xyzw2x(cmd, depthTexture, m_DepthPyramidMips[0], new Vector2(depthPyramidDesc.width, depthPyramidDesc.height)); |
|||
cmd.CopyTexture(m_DepthPyramidMips[0], 0, 0, targetTexture, 0, 0); |
|||
|
|||
for (var i = 0; i < lodCount; i++) |
|||
{ |
|||
var srcMipWidth = depthPyramidDesc.width; |
|||
var srcMipHeight = depthPyramidDesc.height; |
|||
depthPyramidDesc.width = srcMipWidth >> 1; |
|||
depthPyramidDesc.height = srcMipHeight >> 1; |
|||
|
|||
var kernel = m_DepthPyramidKernel_8; |
|||
var kernelBlockSize = 8f; |
|||
if (depthPyramidDesc.width < 4 * k_DepthBlockSize |
|||
|| depthPyramidDesc.height < 4 * k_DepthBlockSize) |
|||
{ |
|||
kernel = m_DepthPyramidKernel_1; |
|||
kernelBlockSize = 1; |
|||
} |
|||
|
|||
cmd.ReleaseTemporaryRT(m_DepthPyramidMips[i + 1]); |
|||
cmd.GetTemporaryRT(m_DepthPyramidMips[i + 1], depthPyramidDesc, FilterMode.Bilinear); |
|||
|
|||
cmd.SetComputeTextureParam(m_DepthPyramidCS, kernel, _Source, m_DepthPyramidMips[i]); |
|||
cmd.SetComputeTextureParam(m_DepthPyramidCS, kernel, _Result, m_DepthPyramidMips[i + 1]); |
|||
cmd.SetComputeVectorParam(m_DepthPyramidCS, _SrcSize, new Vector4(srcMipWidth, srcMipHeight, 1f / srcMipWidth, 1f / srcMipHeight)); |
|||
|
|||
cmd.DispatchCompute( |
|||
m_DepthPyramidCS, |
|||
kernel, |
|||
Mathf.CeilToInt(depthPyramidDesc.width / kernelBlockSize), |
|||
Mathf.CeilToInt(depthPyramidDesc.height / kernelBlockSize), |
|||
1); |
|||
|
|||
cmd.CopyTexture(m_DepthPyramidMips[i + 1], 0, 0, targetTexture, 0, i + 1); |
|||
} |
|||
|
|||
for (int i = 0; i < lodCount + 1; i++) |
|||
cmd.ReleaseTemporaryRT(m_DepthPyramidMips[i]); |
|||
} |
|||
|
|||
public void RenderColorPyramid( |
|||
HDCamera hdCamera, |
|||
CommandBuffer cmd, |
|||
ScriptableRenderContext renderContext, |
|||
RenderTargetIdentifier colorTexture, |
|||
RenderTargetIdentifier targetTexture) |
|||
{ |
|||
var colorPyramidDesc = colorRenderTextureDescriptor; |
|||
|
|||
var lodCount = colorBufferMipMapCount; |
|||
if (lodCount > m_ColorPyramidMips.Length) |
|||
{ |
|||
Debug.LogWarningFormat("Cannot compute all mipmaps of the color pyramid, max texture size supported: {0}", (2 << m_ColorPyramidMips.Length).ToString()); |
|||
lodCount = m_ColorPyramidMips.Length; |
|||
} |
|||
|
|||
// Copy mip 0
|
|||
cmd.CopyTexture(colorTexture, 0, 0, targetTexture, 0, 0); |
|||
var last = colorTexture; |
|||
|
|||
colorPyramidDesc.sRGB = false; |
|||
colorPyramidDesc.enableRandomWrite = true; |
|||
colorPyramidDesc.useMipMap = false; |
|||
|
|||
for (var i = 0; i < lodCount; i++) |
|||
{ |
|||
colorPyramidDesc.width = colorPyramidDesc.width >> 1; |
|||
colorPyramidDesc.height = colorPyramidDesc.height >> 1; |
|||
|
|||
// TODO: Add proper stereo support to the compute job
|
|||
|
|||
cmd.ReleaseTemporaryRT(m_ColorPyramidMips[i + 1]); |
|||
cmd.GetTemporaryRT(m_ColorPyramidMips[i + 1], colorPyramidDesc, FilterMode.Bilinear); |
|||
cmd.SetComputeTextureParam(m_ColorPyramidCS, m_ColorPyramidKernel, _Source, last); |
|||
cmd.SetComputeTextureParam(m_ColorPyramidCS, m_ColorPyramidKernel, _Result, m_ColorPyramidMips[i + 1]); |
|||
cmd.SetComputeVectorParam(m_ColorPyramidCS, _Size, new Vector4(colorPyramidDesc.width, colorPyramidDesc.height, 1f / colorPyramidDesc.width, 1f / colorPyramidDesc.height)); |
|||
cmd.DispatchCompute( |
|||
m_ColorPyramidCS, |
|||
m_ColorPyramidKernel, |
|||
Mathf.CeilToInt(colorPyramidDesc.width / 8f), |
|||
Mathf.CeilToInt(colorPyramidDesc.height / 8f), |
|||
1); |
|||
cmd.CopyTexture(m_ColorPyramidMips[i + 1], 0, 0, targetTexture, 0, i + 1); |
|||
|
|||
last = m_ColorPyramidMips[i + 1]; |
|||
} |
|||
|
|||
for (int i = 0; i < lodCount; i++) |
|||
cmd.ReleaseTemporaryRT(m_ColorPyramidMips[i + 1]); |
|||
} |
|||
|
|||
public void Initialize(HDCamera hdCamera, bool enableStereo) |
|||
{ |
|||
var colorDesc = CalculateRenderTextureDescriptor(hdCamera, enableStereo); |
|||
colorDesc.colorFormat = RenderTextureFormat.ARGBHalf; |
|||
m_ColorRenderTextureDescriptor = colorDesc; |
|||
|
|||
var depthDesc = CalculateRenderTextureDescriptor(hdCamera, enableStereo); |
|||
depthDesc.colorFormat = RenderTextureFormat.RFloat; |
|||
m_DepthRenderTextureDescriptor = depthDesc; |
|||
} |
|||
|
|||
public static RenderTextureDescriptor CalculateRenderTextureDescriptor(HDCamera hdCamera, bool enableStereo) |
|||
{ |
|||
var desc = hdCamera.renderTextureDesc; |
|||
desc.depthBufferBits = 0; |
|||
desc.useMipMap = true; |
|||
desc.autoGenerateMips = false; |
|||
|
|||
desc.msaaSamples = 1; // These are approximation textures, they don't need MSAA
|
|||
|
|||
// for stereo double-wide, each half of the texture will represent a single eye's pyramid
|
|||
//var widthModifier = 1;
|
|||
//if (stereoEnabled && (desc.dimension != TextureDimension.Tex2DArray))
|
|||
// widthModifier = 2; // double-wide
|
|||
|
|||
//desc.width = pyramidSize * widthModifier;
|
|||
desc.width = (int)hdCamera.screenSize.x; |
|||
desc.height = (int)hdCamera.screenSize.y; |
|||
|
|||
return desc; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: ea3e7945ee7dc7a479b9e6846a0c544c |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
// |
|||
// This is a modified version of the BlurCS compute shader from Microsoft's MiniEngine |
|||
// library. The copyright notice from the original version is included below. |
|||
// |
|||
// The original source code of MiniEngine is available on GitHub. |
|||
// https://github.com/Microsoft/DirectX-Graphics-Samples |
|||
// |
|||
|
|||
// |
|||
// Copyright (c) Microsoft. All rights reserved. |
|||
// This code is licensed under the MIT License (MIT). |
|||
// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF |
|||
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY |
|||
// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR |
|||
// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. |
|||
// |
|||
// Developed by Minigraph |
|||
// |
|||
// Author: Bob Brown |
|||
// |
|||
|
|||
#include "CoreRP/ShaderLibrary/Common.hlsl" |
|||
|
|||
Texture2D<float4> _Source; |
|||
RWTexture2D<float4> _Result; |
|||
|
|||
SamplerState sampler_LinearClamp; |
|||
|
|||
CBUFFER_START(cb) |
|||
float4 _Size; |
|||
CBUFFER_END |
|||
|
|||
// 16x16 pixels with an 8x8 center that we will be blurring writing out. Each uint is two color |
|||
// channels packed together. |
|||
// The reason for separating channels is to reduce bank conflicts in the local data memory |
|||
// controller. A large stride will cause more threads to collide on the same memory bank. |
|||
groupshared uint gs_cacheR[128]; |
|||
groupshared uint gs_cacheG[128]; |
|||
groupshared uint gs_cacheB[128]; |
|||
groupshared uint gs_cacheA[128]; |
|||
|
|||
float4 BlurPixels(float4 a, float4 b, float4 c, float4 d, float4 e, float4 f, float4 g, float4 h, float4 i) |
|||
{ |
|||
return 0.27343750 * (e ) |
|||
+ 0.21875000 * (d + f) |
|||
+ 0.10937500 * (c + g) |
|||
+ 0.03125000 * (b + h) |
|||
+ 0.00390625 * (a + i); |
|||
} |
|||
|
|||
void Store2Pixels(uint index, float4 pixel1, float4 pixel2) |
|||
{ |
|||
gs_cacheR[index] = f32tof16(pixel1.r) | f32tof16(pixel2.r) << 16; |
|||
gs_cacheG[index] = f32tof16(pixel1.g) | f32tof16(pixel2.g) << 16; |
|||
gs_cacheB[index] = f32tof16(pixel1.b) | f32tof16(pixel2.b) << 16; |
|||
gs_cacheA[index] = f32tof16(pixel1.a) | f32tof16(pixel2.a) << 16; |
|||
} |
|||
|
|||
void Load2Pixels(uint index, out float4 pixel1, out float4 pixel2) |
|||
{ |
|||
uint rr = gs_cacheR[index]; |
|||
uint gg = gs_cacheG[index]; |
|||
uint bb = gs_cacheB[index]; |
|||
uint aa = gs_cacheA[index]; |
|||
pixel1 = float4(f16tof32(rr ), f16tof32(gg ), f16tof32(bb ), f16tof32(aa )); |
|||
pixel2 = float4(f16tof32(rr >> 16), f16tof32(gg >> 16), f16tof32(bb >> 16), f16tof32(aa >> 16)); |
|||
} |
|||
|
|||
void Store1Pixel(uint index, float4 pixel) |
|||
{ |
|||
gs_cacheR[index] = asuint(pixel.r); |
|||
gs_cacheG[index] = asuint(pixel.g); |
|||
gs_cacheB[index] = asuint(pixel.b); |
|||
gs_cacheA[index] = asuint(pixel.a); |
|||
} |
|||
|
|||
void Load1Pixel(uint index, out float4 pixel) |
|||
{ |
|||
pixel = asfloat(uint4(gs_cacheR[index], gs_cacheG[index], gs_cacheB[index], gs_cacheA[index])); |
|||
} |
|||
|
|||
// Blur two pixels horizontally. This reduces LDS reads and pixel unpacking. |
|||
void BlurHorizontally(uint outIndex, uint leftMostIndex) |
|||
{ |
|||
float4 s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; |
|||
Load2Pixels(leftMostIndex + 0, s0, s1); |
|||
Load2Pixels(leftMostIndex + 1, s2, s3); |
|||
Load2Pixels(leftMostIndex + 2, s4, s5); |
|||
Load2Pixels(leftMostIndex + 3, s6, s7); |
|||
Load2Pixels(leftMostIndex + 4, s8, s9); |
|||
|
|||
Store1Pixel(outIndex , BlurPixels(s0, s1, s2, s3, s4, s5, s6, s7, s8)); |
|||
Store1Pixel(outIndex + 1, BlurPixels(s1, s2, s3, s4, s5, s6, s7, s8, s9)); |
|||
} |
|||
|
|||
void BlurVertically(uint2 pixelCoord, uint topMostIndex) |
|||
{ |
|||
float4 s0, s1, s2, s3, s4, s5, s6, s7, s8; |
|||
Load1Pixel(topMostIndex , s0); |
|||
Load1Pixel(topMostIndex + 8, s1); |
|||
Load1Pixel(topMostIndex + 16, s2); |
|||
Load1Pixel(topMostIndex + 24, s3); |
|||
Load1Pixel(topMostIndex + 32, s4); |
|||
Load1Pixel(topMostIndex + 40, s5); |
|||
Load1Pixel(topMostIndex + 48, s6); |
|||
Load1Pixel(topMostIndex + 56, s7); |
|||
Load1Pixel(topMostIndex + 64, s8); |
|||
|
|||
float4 blurred = BlurPixels(s0, s1, s2, s3, s4, s5, s6, s7, s8); |
|||
|
|||
// Write to the final target |
|||
_Result[pixelCoord] = blurred; |
|||
} |
|||
|
|||
#pragma kernel KMain |
|||
[numthreads(8, 8, 1)] |
|||
void KMain(uint2 groupId : SV_GroupID, uint2 groupThreadId : SV_GroupThreadID, uint2 dispatchThreadId : SV_DispatchThreadID) |
|||
{ |
|||
// Upper-left pixel coordinate of quad that this thread will read |
|||
int2 threadUL = (groupThreadId << 1) + (groupId << 3) - 4; |
|||
|
|||
// Downsample the block |
|||
float2 offset = float2(threadUL); |
|||
float4 p00 = _Source.SampleLevel(sampler_LinearClamp, (offset + 0.5) * _Size.zw, 0.0); |
|||
float4 p10 = _Source.SampleLevel(sampler_LinearClamp, (offset + float2(1.0, 0.0) + 0.5) * _Size.zw, 0.0); |
|||
float4 p01 = _Source.SampleLevel(sampler_LinearClamp, (offset + float2(0.0, 1.0) + 0.5) * _Size.zw, 0.0); |
|||
float4 p11 = _Source.SampleLevel(sampler_LinearClamp, (offset + float2(1.0, 1.0) + 0.5) * _Size.zw, 0.0); |
|||
|
|||
// Store the 4 downsampled pixels in LDS |
|||
uint destIdx = groupThreadId.x + (groupThreadId.y << 4u); |
|||
Store2Pixels(destIdx , p00, p10); |
|||
Store2Pixels(destIdx + 8u, p01, p11); |
|||
|
|||
GroupMemoryBarrierWithGroupSync(); |
|||
|
|||
// Horizontally blur the pixels in LDS |
|||
uint row = groupThreadId.y << 4u; |
|||
BlurHorizontally(row + (groupThreadId.x << 1u), row + groupThreadId.x + (groupThreadId.x & 4u)); |
|||
|
|||
GroupMemoryBarrierWithGroupSync(); |
|||
|
|||
// Vertically blur the pixels in LDS and write the result to memory |
|||
BlurVertically(dispatchThreadId, (groupThreadId.y << 3u) + groupThreadId.x); |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 4e3267a1135742441a14298d8dcac04a |
|||
timeCreated: 1503754250 |
|||
licenseType: Pro |
|||
ComputeShaderImporter: |
|||
currentAPIMask: 131076 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
#if UNITY_EDITOR
|
|||
using System.Collections; |
|||
using UnityEditor; |
|||
using UnityEditor.Experimental.Rendering; |
|||
|
|||
public class SceneViewDrawMode |
|||
{ |
|||
static private bool RejectDrawMode(SceneView.CameraMode cameraMode) |
|||
{ |
|||
if (cameraMode.drawMode == DrawCameraMode.TexturedWire || |
|||
cameraMode.drawMode == DrawCameraMode.ShadowCascades || |
|||
cameraMode.drawMode == DrawCameraMode.RenderPaths || |
|||
cameraMode.drawMode == DrawCameraMode.AlphaChannel || |
|||
cameraMode.drawMode == DrawCameraMode.Overdraw || |
|||
cameraMode.drawMode == DrawCameraMode.Mipmaps || |
|||
cameraMode.drawMode == DrawCameraMode.DeferredDiffuse || |
|||
cameraMode.drawMode == DrawCameraMode.DeferredSpecular || |
|||
cameraMode.drawMode == DrawCameraMode.DeferredSmoothness || |
|||
cameraMode.drawMode == DrawCameraMode.DeferredNormal || |
|||
cameraMode.drawMode == DrawCameraMode.ValidateAlbedo || |
|||
cameraMode.drawMode == DrawCameraMode.ValidateMetalSpecular || |
|||
cameraMode.drawMode == DrawCameraMode.ShadowMasks || |
|||
cameraMode.drawMode == DrawCameraMode.LightOverlap |
|||
) |
|||
return false; |
|||
|
|||
return true; |
|||
} |
|||
|
|||
static public void SetupDrawMode() |
|||
{ |
|||
ArrayList sceneViewArray = SceneView.sceneViews; |
|||
foreach (SceneView sceneView in sceneViewArray) |
|||
sceneView.onValidateCameraMode += RejectDrawMode; |
|||
} |
|||
|
|||
static public void ResetDrawMode() |
|||
{ |
|||
ArrayList sceneViewArray = SceneView.sceneViews; |
|||
foreach (SceneView sceneView in sceneViewArray) |
|||
sceneView.onValidateCameraMode -= RejectDrawMode; |
|||
} |
|||
} |
|||
#endif
|
|
|||
fileFormatVersion: 2 |
|||
guid: 1ce13303c7796bd4d80d623d982e7460 |
|||
MonoImporter: |
|||
externalObjects: {} |
|||
serializedVersion: 2 |
|||
defaultReferences: [] |
|||
executionOrder: 0 |
|||
icon: {instanceID: 0} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!1001 &100100000 |
|||
Prefab: |
|||
m_ObjectHideFlags: 1 |
|||
serializedVersion: 2 |
|||
m_Modification: |
|||
m_TransformParent: {fileID: 0} |
|||
m_Modifications: [] |
|||
m_RemovedComponents: [] |
|||
m_ParentPrefab: {fileID: 0} |
|||
m_RootGameObject: {fileID: 1404538130253772} |
|||
m_IsPrefabParent: 1 |
|||
--- !u!1 &1404538130253772 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_PrefabParentObject: {fileID: 0} |
|||
m_PrefabInternal: {fileID: 100100000} |
|||
serializedVersion: 5 |
|||
m_Component: |
|||
- component: {fileID: 4956336178439206} |
|||
- component: {fileID: 33984801924223374} |
|||
- component: {fileID: 23729065536706830} |
|||
m_Layer: 0 |
|||
m_Name: Capsule |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!4 &4956336178439206 |
|||
Transform: |
|||
m_ObjectHideFlags: 1 |
|||
m_PrefabParentObject: {fileID: 0} |
|||
m_PrefabInternal: {fileID: 100100000} |
|||
m_GameObject: {fileID: 1404538130253772} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!23 &23729065536706830 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 1 |
|||
m_PrefabParentObject: {fileID: 0} |
|||
m_PrefabInternal: {fileID: 100100000} |
|||
m_GameObject: {fileID: 1404538130253772} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RenderingLayerMask: 4294967295 |
|||
m_Materials: |
|||
- {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, type: 2} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_PreserveUVs: 0 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 0 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!33 &33984801924223374 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 1 |
|||
m_PrefabParentObject: {fileID: 0} |
|||
m_PrefabInternal: {fileID: 100100000} |
|||
m_GameObject: {fileID: 1404538130253772} |
|||
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} |
|
|||
fileFormatVersion: 2 |
|||
guid: 0e438c71e264ecf4583a9b91ac2c40d7 |
|||
NativeFormatImporter: |
|||
externalObjects: {} |
|||
mainObjectFileID: 100100000 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 82b790d5acc1c294d842bc09bb516976 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 779a5c96a3bd3c14e8f91be637045057 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!21 &2100000 |
|||
Material: |
|||
serializedVersion: 6 |
|||
m_ObjectHideFlags: 0 |
|||
m_PrefabParentObject: {fileID: 0} |
|||
m_PrefabInternal: {fileID: 0} |
|||
m_Name: Unlit_PixelGrid |
|||
m_Shader: {fileID: 4800000, guid: c4edd00ff2db5b24391a4fcb1762e459, type: 3} |
|||
m_ShaderKeywords: |
|||
m_LightmapFlags: 4 |
|||
m_EnableInstancingVariants: 0 |
|||
m_DoubleSidedGI: 0 |
|||
m_CustomRenderQueue: 2000 |
|||
stringTagMap: {} |
|||
disabledShaderPasses: |
|||
- DistortionVectors |
|||
m_SavedProperties: |
|||
serializedVersion: 3 |
|||
m_TexEnvs: |
|||
- _AnisotropyMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _BaseColorMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _BentNormalMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _BentNormalMapOS: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _CoatMaskMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _DetailMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _DistortionVectorMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _EmissiveColorMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _HeightMap: |
|||
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} |
|||
- _MaskMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _NormalMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _NormalMapOS: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _SpecularColorMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _SubsurfaceMaskMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _TangentMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _TangentMapOS: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _ThicknessMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _TransmittanceColorMap: |
|||
m_Texture: {fileID: 0} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
- _UnlitColorMap: |
|||
m_Texture: {fileID: 2800000, guid: 3dd789714c4d7ef4ba0dd0d92fb66905, type: 3} |
|||
m_Scale: {x: 1, y: 1} |
|||
m_Offset: {x: 0, y: 0} |
|||
m_Floats: |
|||
- _AORemapMax: 1 |
|||
- _AORemapMin: 0 |
|||
- _ATDistance: 1 |
|||
- _AlbedoAffectEmissive: 0 |
|||
- _AlphaCutoff: 0.5 |
|||
- _AlphaCutoffEnable: 0 |
|||
- _AlphaCutoffPostpass: 0.5 |
|||
- _AlphaCutoffPrepass: 0.5 |
|||
- _Anisotropy: 0 |
|||
- _BlendMode: 0 |
|||
- _CoatMask: 0 |
|||
- _CullMode: 2 |
|||
- _CullModeForward: 2 |
|||
- _Cutoff: 0.5 |
|||
- _DepthOffsetEnable: 0 |
|||
- _DetailAlbedoScale: 1 |
|||
- _DetailNormalScale: 1 |
|||
- _DetailSmoothnessScale: 1 |
|||
- _DiffusionProfile: 0 |
|||
- _DisplacementLockObjectScale: 1 |
|||
- _DisplacementLockTilingScale: 1 |
|||
- _DisplacementMode: 0 |
|||
- _DistortionBlendMode: 0 |
|||
- _DistortionBlurBlendMode: 0 |
|||
- _DistortionBlurDstBlend: 1 |
|||
- _DistortionBlurRemapMax: 1 |
|||
- _DistortionBlurRemapMin: 0 |
|||
- _DistortionBlurScale: 1 |
|||
- _DistortionBlurSrcBlend: 1 |
|||
- _DistortionDepthTest: 1 |
|||
- _DistortionDstBlend: 1 |
|||
- _DistortionEnable: 0 |
|||
- _DistortionOnly: 0 |
|||
- _DistortionScale: 1 |
|||
- _DistortionSrcBlend: 1 |
|||
- _DistortionVectorBias: -1 |
|||
- _DistortionVectorScale: 2 |
|||
- _DoubleSidedEnable: 0 |
|||
- _DoubleSidedNormalMode: 1 |
|||
- _Drag: 1 |
|||
- _DstBlend: 0 |
|||
- _EmissiveColorMode: 1 |
|||
- _EmissiveIntensity: 0 |
|||
- _EnableBlendModePreserveSpecularLighting: 1 |
|||
- _EnableFogOnTransparent: 1 |
|||
- _EnableMotionVectorForVertexAnimation: 0 |
|||
- _EnableSpecularOcclusion: 0 |
|||
- _EnableWind: 0 |
|||
- _EnergyConservingSpecularColor: 1 |
|||
- _HeightAmplitude: 0.02 |
|||
- _HeightCenter: 0.5 |
|||
- _HeightMapParametrization: 0 |
|||
- _HeightMax: 1 |
|||
- _HeightMin: -1 |
|||
- _HeightOffset: 0 |
|||
- _HeightPoMAmplitude: 2 |
|||
- _HeightTessAmplitude: 2 |
|||
- _HeightTessCenter: 0.5 |
|||
- _IOR: 1 |
|||
- _InitialBend: 1 |
|||
- _InvTilingScale: 1 |
|||
- _LinkDetailsWithBase: 1 |
|||
- _MaterialID: 1 |
|||
- _Metallic: 0 |
|||
- _NormalMapSpace: 0 |
|||
- _NormalScale: 1 |
|||
- _PPDLodThreshold: 5 |
|||
- _PPDMaxSamples: 15 |
|||
- _PPDMinSamples: 5 |
|||
- _PPDPrimitiveLength: 1 |
|||
- _PPDPrimitiveWidth: 1 |
|||
- _PreRefractionPass: 0 |
|||
- _RefractionMode: 0 |
|||
- _SSSAndTransmissionType: 0 |
|||
- _ShiverDirectionality: 0.5 |
|||
- _ShiverDrag: 0.2 |
|||
- _Smoothness: 1 |
|||
- _SmoothnessRemapMax: 1 |
|||
- _SmoothnessRemapMin: 0 |
|||
- _SrcBlend: 1 |
|||
- _StencilRef: 2 |
|||
- _StencilRefMV: 128 |
|||
- _StencilWriteMask: 7 |
|||
- _StencilWriteMaskMV: 128 |
|||
- _Stiffness: 1 |
|||
- _SubsurfaceMask: 1 |
|||
- _SupportDBuffer: 1 |
|||
- _SurfaceType: 0 |
|||
- _TexWorldScale: 1 |
|||
- _TexWorldScaleEmissive: 1 |
|||
- _Thickness: 1 |
|||
- _ThicknessMultiplier: 1 |
|||
- _TransparentBackfaceEnable: 0 |
|||
- _TransparentDepthPostpassEnable: 0 |
|||
- _TransparentDepthPrepassEnable: 0 |
|||
- _TransparentSortPriority: 0 |
|||
- _UVBase: 0 |
|||
- _UVDetail: 0 |
|||
- _UVEmissive: 0 |
|||
- _ZTestMode: 4 |
|||
- _ZWrite: 1 |
|||
m_Colors: |
|||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1} |
|||
- _Color: {r: 1, g: 1, b: 1, a: 1} |
|||
- _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} |
|||
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1} |
|||
- _EmissiveColor: {r: 1, g: 1, b: 1, a: 1} |
|||
- _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} |
|||
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1} |
|||
- _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} |
|||
- _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} |
|||
- _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} |
|||
- _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} |
|||
- _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} |
|||
- _UnlitColor: {r: 1, g: 1, b: 1, a: 1} |
|
|||
fileFormatVersion: 2 |
|||
guid: 55a93803a35aa81469be31cd4d63063f |
|||
NativeFormatImporter: |
|||
externalObjects: {} |
|||
mainObjectFileID: 2100000 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
Kaydara FBX Binary � _ FBXHeaderExtension\ FBXHeaderVersionI� x |
|||
FBXVersionI� � EncryptionTypeI � CreationTimeStamp� VersionI� � YearI� � MonthI DayI ' HourI ? MinuteI( W SecondI t MillisecondI6 � 4 CreatorS/ Blender (stable FBX IO) - 2.79 (sub 0) - 3.7.13R ' |