RYHPT64611n8Р,*3‡6 RюмyLq7ˆ'^P0"2@8000T IT kH Xp0› 00M0f0“0Щh0Ѓ 0{0Ј0У0Z$ В  0Ц0а0р 0э @ў(03(0 ! P0F0)0м0‘0 @0W0}0ЉA€0Ї$€0і& F+0~+0Ѓ+0Ъ0ё0&/Р050Р0Q 00A0ь3€0_A€0u5€0УA€0к00b9 0˜0r@0н “4 Ѕ( П  ж ё ШCx00ѓ0F˜02A˜0G0a 0s0‰0х0ЁM˜0ЉN˜0УR00ДP0гQ0эR80о(0§X08@)H;LNPeszŽЄЕЧк ю$ ( ,7 0H 4\ 8l <‡ @Ÿ Ќ DО г я Xќ X`   2 0O @a Pz hŠ lЈ А Ј А Ј А Ј А "Ј А Ж П Ъ о (і 8 @5 P] `| bЈ А !Ј А (Ј А (Ј А 9 Ј sЇ Е  Ек Т в #ф № њ X X TТ   0 < H P X ` j  z ˆ ” Ÿ Ї В *М +Ъ )(с ,8э HЈ А -Ј А .Ј А CЈ А X  1 I a y /‚ Ђ 0( 8П Ј А ;Ј А Qф э s  _Y\'7&Fњ X'[fz:э s†G0ŽDР ЈDр ФD рD  ћD@ D` 7D€ VD  tR„2–AЈ?Й> Ј А 3ЫXо юX$X*(<XP,aEЈ А 4v‡˜J(ЅI,4БH`НˆЪ р їL   0 0) 7GXKbK$k 0t 0} “ ЌС б п ё $ 0 0( 06 0B N 0W 0a 0i 0w 0† 0“ЉКOЩ(о,њpЈ А њ X[  z:"*Vx8@Ј <X  GWcoWЈ А Uy ‚(Š,‚(Š,“0› Є БПЭ PCharPContextSwitchPInt32PLightTypePRenderDataTypePSceneRenderPassTypePShadowCasterTypePTextureFormatBasePUInt16PUInt32PUInt8boolfloatCD3D11_BLEND_DESCCD3D11_DEPTH_STENCIL_DESCCD3D11_RASTERIZER_DESCD3D11_DEPTH_STENCILOP_DESCD3D11_RENDER_TARGET_BLEND_DESCPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPAssetReferencePBasePClassDescriptorPClusterHeaderPClusterHeaderBasePClusterHeaderD3D11PContextVariantFoldingTablePEffectPEffectVariantPInstanceListHeaderPMaterialPMaterialSwitchPNodeContextPParameterBufferPParameterBufferBasePSamplerStatePSamplerStateBasePSamplerStateD3D11PSceneRenderPassPShaderPShaderComputeProgramPShaderComputeProgramD3D11PShaderFragmentProgramPShaderFragmentProgramD3D11PShaderGeometryProgramPShaderGeometryProgramD3D11PShaderParameterCaptureBufferLocationPShaderParameterCaptureBufferLocationSizePShaderParameterCaptureBufferLocationTypeConstantBufferPShaderParameterCaptureBufferSamplerPShaderParameterCaptureBufferTexture2DPShaderParameterCaptureBufferTexture3DPShaderParameterCaptureBufferTextureBasePShaderParameterDefinitionPShaderPassPShaderPassBasePShaderPassD3D11PShaderPassInfoPShaderPassParameterLocationTypesBasePShaderPassParameterLocationTypesConstantBufferPShaderPassStateBasePShaderPassStateD3D11PShaderProgramBasePShaderProgramD3D11PShaderStreamDefinitionPShaderVertexProgramPShaderVertexProgramD3D11PSharrayPStreamInputDescD3D11PStreamInputLayoutD3D11PStringPTexture2DPTexture2DBasePTexture2DD3D11PTexture3DPTexture3DBasePTexture3DD3D11PTextureCommonBasem_idm_assetm_assetTypem_indexBufferSizem_vertexBufferSizem_maxTextureBufferSizem_phyreMarkerm_sizem_instanceListCountm_packedNamespaceSizem_arrayFixupSizem_arrayFixupCountm_pointerFixupSizem_pointerFixupCountm_pointerArrayFixupSizem_pointerArrayFixupCountm_pointersInArraysCountm_userFixupCountm_userFixupDataSizem_totalDataSizem_headerClassInstanceCountm_headerClassChildCountm_platformIDm_physicsEngineIDm_supportedLightMaskm_supportedShadowCasterMaskm_effectFilem_effectSourcem_effectVariantsm_supportedLightTypesm_supportedShadowCasterTypesm_contextSwitchesm_contextVariantSwitchesm_maxLightCountm_numSupportedShaderLODLevelsm_countm_elsm_effectm_switchesm_sceneRenderPassesm_sceneRenderPassLookupm_largestShaderPassCountm_tweakableShaderParameterDefinitionsm_untweakableShaderParameterDefinitionsm_tweakableParameterBufferSizem_untweakableParameterBufferSizem_classIDm_objectsSizem_arraysSizem_effectVariantm_parameterBufferm_remapFromm_remapTom_namem_valuem_packedSwitchesm_parameterBufferSizem_minFilterm_magFilterm_wrapSm_wrapTm_wrapRm_lodBiasm_maxAnisotropym_borderColorm_baseLevelm_maxLevelm_flagsm_passTypem_shadersm_entryPointsm_variantsFoldingTablem_platformsm_platformsAreIncludem_contextVariantIndexm_contextVariantVpIndexm_contextVariantFpIndexm_contextVariantGsIndexm_contextVariantCsIndexm_passesm_parameterDefinitionsForPassesm_streamDefinitionsForPassesm_parameterBufferFrequenciesRequiredm_offsetm_constantBufferLocationm_typem_unusedPointerm_texturem_parameterTypem_samplerStatem_textureBufferIndexm_dataTypem_arrayElementCountm_bufferLocm_statem_vertexParameterLocationm_fragmentParameterLocationm_geometryParameterLocationm_computeParameterLocationm_vertexTexParameterLocationm_fragmentTexParameterLocationm_geometryTexParameterLocationm_computeTexParameterLocationm_vertexProgramm_fragmentProgramm_geometryProgramm_computeProgramm_streamLocationsm_vertexEntryPointm_vertexProfilem_fragmentEntryPointm_fragmentProfilem_geometryEntryPointm_geometryProfilem_computeEntryPointm_computeProfilem_parameterLocationsm_parameterStartm_parameterCountm_rasterDescm_depthDescm_blendDescm_stencilRefAlphaToCoverageEnableIndependentBlendEnableRenderTargetDepthEnableDepthWriteMaskDepthFuncStencilEnableStencilReadMaskStencilWriteMaskFrontFaceBackFaceFillModeCullModeFrontCounterClockwiseDepthBiasDepthBiasClampSlopeScaledDepthBiasDepthClipEnableScissorEnableMultisampleEnableAntialiasedLineEnableStencilFailOpStencilDepthFailOpStencilPassOpStencilFuncBlendEnableSrcBlendDestBlendBlendOpSrcBlendAlphaDestBlendAlphaBlendOpAlphaRenderTargetWriteMaskm_importantStatem_compiledCodem_constantBufferSizem_globalConstantBufferIndexm_shaderProfilem_renderTypem_nameHashm_indexm_inputLayoutm_um_semanticm_semanticIndexm_d3dFormatm_inputSlotm_streamsm_bufferm_widthm_heightm_depthm_formatm_memoryTypem_mipmapCountm_maxMipLevelm_textureFlagsX ИHрpип hh €P0    @@PP!@@%4ы€Ду&'LФР,аР.РР6P0 Dx`EрЇ˜H H“€Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.cgfx#C4551CE4606D0C4260E37E64221D1DC9#materialData/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx#C4551CE4606D0C4260E37E64221D1DC9 #line 1 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #define D_PLATFORM_D3D11x64 #define MSAA #define PLAYER #define NOISE #define EXCLUSION #define COLOR_BIAS // Automatically generated. Do not edit. // =======================================================================================================================[COMMON DEFINES]=== #define PHYRE3X_ENABLED #if !defined(D_PLATFORM_GXM) #define h2tex3D tex3D #define h4tex2D tex2D #define h3tex2D tex2D #define h2tex2D tex2D #define h1tex2D tex2D #define h4texCUBE texCUBE #define h3texCUBE texCUBE #endif // ========================================================================================================================[COMMON STATES]=== #if !defined(D_PLATFORM_GXM) BlendState ourBlendState { BlendEnable[0] = FALSE; BlendEnable[1] = FALSE; SrcBlend[0] = Src_Alpha; DestBlend[0] = Inv_Src_Alpha; BlendOp[0] = ADD; SrcBlendAlpha[0] = ONE; DestBlendAlpha[0] = ONE; BlendOpAlpha[0] = ADD; RenderTargetWriteMask[0] = 15; AlphaToCoverageEnable = false; }; DepthStencilState ourDepthStencilState { DepthEnable=true; DepthFunc=less; StencilEnable=false; }; RasterizerState ourRasterState { CullMode=None; DepthBias=0.0f; ScissorEnable=false; MultiSampleEnable=false; DepthClipEnable=false; AntialiasedLineEnable=false; }; #endif // ==================================================================================================================[VERTEX SHADER BEGIN]=== #define main Opaque_vs_main #define IN Opaque_vs_IN #define OUT Opaque_vs_OUT #define v2f Opaque_vs_v2f #define a2v Opaque_vs_a2v // ------------------------------------------------------------------------------------------------------------------------------------------ #line 1 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #ifndef MIGRATORY_SH #define MIGRATORY_SH //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef D_PLATFORM_D3D11x64 #define D_PLATFORM_D3D11 #endif #ifdef D_PLATFORM_D3D11 //#pragma pack_matrix(column_major) #define D_D3D11_OTHER(x,y) x #define D_D3D11_ONLY(x) x #define POSITION_OUT SV_POSITION #define FINAL_COLOR D_D3D11_OTHER(SV_TARGET0,COLOR) #elif defined(D_PLATFORM_GNM) #ifdef __ORBIS__ #pragma warning (disable:5203) // parameter unreferenced #pragma warning (disable:5206) // local variable unreferenced #pragma warning (disable:6204) // does not support uniform default values #pragma warning (disable:6459) // __user_defined__ is not a valid semantic for uniform #pragma warning (disable:5581) // PSSL treats 'half' type as 'float' #pragma warning (disable:5609) // PSSL treats 'half' type as 'float' #pragma warning (disable:5583) // PSSL treats 'half' literals as 'float' #pragma warning (disable:5524) // unsupported compiler hint //! Some evil #defines to sort out matrix multiplies. #define float4x4 row_major float4x4 #define float3x4 row_major float3x4 #define float4x3 row_major float4x3 //! Semantics for VS/PS inputs and outputs. #define POSITION S_POSITION #define SV_POSITION S_POSITION #define SV_GroupID S_GROUP_ID #define SV_VertexID S_VERTEX_ID #define SV_DispatchThreadID S_DISPATCH_THREAD_ID #define SV_GroupThreadID S_GROUP_THREAD_ID #define SV_GroupIndex S_GROUP_INDEX #define SV_PRIMITIVEID S_PRIMITIVE_ID #define SV_IsFrontFace S_FRONT_FACE #define SV_Depth FRAG_OUTPUT_DEPTH #define FRAG_OUTPUT_COLOR S_TARGET_OUTPUT0 #define FRAG_OUTPUT_COLOR0 S_TARGET_OUTPUT0 #define FRAG_OUTPUT_COLOR1 S_TARGET_OUTPUT1 #define FRAG_OUTPUT_COLOR2 S_TARGET_OUTPUT2 #define FRAG_OUTPUT_COLOR3 S_TARGET_OUTPUT3 #define FRAG_OUTPUT_DEPTH S_DEPTH_OUTPUT //! Some defines to make textures compile with PSSL for now (sort out later) SamplerState globalSamplerState; SamplerComparisonState globalSamplerComparisonState { // Sampler state Filter = MIN_MAG_LINEAR_MIP_POINT; AddressU = CLAMP; AddressV = CLAMP; // Sampler comparison state ComparisonFunc = LESS; ComparisonFilter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT; }; #define cbuffer ConstantBuffer #define sampler SamplerState #define sampler2D Texture2D #define sampler3D Texture3D #define samplerCUBE TextureCube #define tex2Dproj(a,b) a.Sample(globalSamplerState, (b).xy / (b).w) #define h1tex2Dproj(a,b) ((half)(a.Sample(globalSamplerState, (b).xy / (b).w).x)) #define h4tex2D(a,b) ((half4)a.Sample(globalSamplerState, (b).xy)) #define h4tex2Dlod(a,b) ((half4)a.SampleLOD(globalSamplerState, (b).xy, (b).w)) #define tex2D(a,b) a.Sample(globalSamplerState, (b).xy) #define SampleLevel SampleLOD #define SampleCmpLevelZero SampleCmpLOD0 #define StructuredBuffer RegularBuffer #define RWStructuredBuffer RW_RegularBuffer #define numthreads NUM_THREADS #define maxvertexcount MAX_VERTEX_COUNT #define groupshared thread_group_memory #define TriangleStream TriangleBuffer #define PointStream PointBuffer #define triangle Triangle #define IncrementCounter IncrementCount #define DecrementCounter DecrementCount #define GroupMemoryBarrierWithGroupSync ThreadGroupMemoryBarrierSync #define InterlockedMin AtomicMin #define InterlockedMax AtomicMax #define InterlockedAdd AtomicAdd #endif //! __ORBIS__ #if defined(PHYRE_D3DFX) && !defined(__ORBIS__) #define FRAG_OUTPUT_COLOR SV_TARGET #define FRAG_OUTPUT_COLOR0 SV_TARGET0 #define FRAG_OUTPUT_COLOR1 SV_TARGET1 #define FRAG_OUTPUT_COLOR2 SV_TARGET2 #define FRAG_OUTPUT_COLOR3 SV_TARGET3 #define FRAG_OUTPUT_DEPTH SV_DEPTH #define SYSTEM_PRIMITIVE_INDEX SV_PRIMITIVEID #endif //! defined(PHYRE_D3DFX) && !defined(__ORBIS__) #define D_D3D11_OTHER(x,y) x #define D_D3D11_ONLY(x) x #define POSITION_OUT POSITION #define FINAL_COLOR FRAG_OUTPUT_COLOR #else #define D_D3D11_OTHER(x,y) y #define D_D3D11_ONLY(x) #define HALF half #define HALF2 half2 #define HALF3 half3 #define HALF4 half4 #define HALF3x3 float3x3 #define HALF3x4 float3x4 #define HALF4x4 float4x4 #define POSITION_OUT POSITION #define FINAL_COLOR D_D3D11_OTHER(SV_TARGET0,COLOR) #endif #if defined(__psp2__) #define NATIVECOLOR __nativecolor #define REGFORMAT __regformat #else #define NATIVECOLOR #define REGFORMAT #endif #if !defined(__ORBIS__) && !defined(D_PLATFORM_GXM) BlendState NoBlend_BlendState { BlendEnable[0] = FALSE; }; BlendState Alpha_BlendState { BlendEnable[0] = TRUE; SrcBlend[0] = Src_Alpha; DestBlend[0] = Inv_Src_Alpha; BlendOp[0] = ADD; SrcBlendAlpha[0] = Src_Alpha; DestBlendAlpha[0] = Inv_Src_Alpha; BlendOpAlpha[0] = ADD; BlendEnable[1] = FALSE; }; BlendState Additive_BlendState { BlendEnable[0] = TRUE; SrcBlend[0] = Src_Alpha; DestBlend[0] = ONE; BlendOp[0] = ADD; SrcBlendAlpha[0] = Src_Alpha; DestBlendAlpha[0] = ONE; BlendOpAlpha[0] = ADD; BlendEnable[1] = FALSE; }; BlendState ParticleBlended_BlendState { BlendEnable[0] = TRUE; SrcBlend[0] = ONE; DestBlend[0] = Inv_Src_Alpha; BlendOp[0] = ADD; SrcBlendAlpha[0] = ONE; DestBlendAlpha[0] = Inv_Src_Alpha; BlendOpAlpha[0] = ADD; BlendEnable[1] = FALSE; }; DepthStencilState NoDepthTest_NoDepthWrite_DepthState { DepthEnable = FALSE; DepthWriteMask = Zero; DepthFunc = Less; StencilEnable = FALSE; }; DepthStencilState NoDepthTest_DepthWrite_DepthState { DepthEnable = FALSE; DepthWriteMask = All; DepthFunc = Less; StencilEnable = FALSE; }; DepthStencilState DepthTest_NoDepthWrite_DepthState { DepthEnable = TRUE; DepthWriteMask = Zero; DepthFunc = Less; StencilEnable = FALSE; }; DepthStencilState DepthTest_DepthWrite_DepthState { DepthEnable = TRUE; DepthWriteMask = All; DepthFunc = Less; StencilEnable = FALSE; }; RasterizerState NoCull_RasterizerState { CullMode=None; }; RasterizerState BackFaceCull_RasterizerState { CullMode=Back; FrontCounterClockwise = TRUE; }; RasterizerState FrontFaceCull_RasterizerState { CullMode=Front; FrontCounterClockwise = TRUE; }; #endif #if defined(D_PLATFORM_D3D11) || defined(D_PLATFORM_GNM) #define MatrixMul(a,b) mul(b,a) #define HALF float #define HALF2 float2 #define HALF3 float3 #define HALF4 float4 #define HALF3x3 float3x3 #define HALF3x4 float3x4 #define HALF4x4 float4x4 #define half float #define half2 float2 #define half3 float3 #define half4 float4 #else #define MatrixMul(a,b) mul(a,b) #endif // samplers #if defined(D_PLATFORM_D3D11) || defined(D_PLATFORM_GNM) sampler PointClampSampler : register(s8) { Filter = Min_Mag_Mip_Point; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; }; sampler LinearClampSampler : register(s9) { Filter = Min_Mag_Mip_Linear; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; }; sampler LinearWrapTSampler : register(s10) { Filter = Min_Mag_Mip_Linear; AddressU = Clamp; AddressV = Wrap; AddressW = Clamp; }; sampler LinearWrapSampler : register(s11) { Filter = Min_Mag_Mip_Linear; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; }; sampler PointWrapSampler : register(s12) { Filter = Min_Mag_Mip_Point; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; }; sampler AnisoClampSampler : register(s13) { Filter = ANISOTROPIC; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; MaxAnisotropy = 16; }; sampler LinearWrapAnisoSampler : register(s14) { Filter = ANISOTROPIC; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; MaxAnisotropy = 16; }; sampler PointWrapAnisoSampler : register(s15) { Filter = Min_Mag_Point_Mip_Linear; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; MaxAnisotropy = 16; }; #define SAMPLER_WRAP_ANISO LinearWrapAnisoSampler #define SAMPLER_WRAP_LINEAR LinearWrapSampler #define SAMPLER_WRAP_POINT PointWrapSampler #define SAMPLER_CLAMP_ANISO AnisoClampSampler #define SAMPLER_CLAMP_LINEAR LinearClampSampler #define SAMPLER_CLAMP_POINT PointClampSampler static const float kSRGB = 2.2f; #define SRGB_ON(x) pow(x,kSRGB) #define SRGB_OFF(x) x #define SAMPLETEX(tex,uv,filter,wrap,srgb) SRGB_##srgb(tex.Sample(SAMPLER_##wrap##_##filter, uv)) #ifdef __ORBIS__ #define D_DECLARE_TEXTURE2DMS_4(x) MS_Texture2D x #else #define D_DECLARE_TEXTURE2DMS_4(x) Texture2DMS x #endif #define D_DECLARE_TEXTURE2D_4(x) Texture2D x #define D_DECLARE_TEXTURE3D_4(x) Texture3D x #define D_DECLARE_TEXTURE_CUBE_4(x) TextureCube x #define D_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_POINT_SAMPLE_TEXTURE(tex,uv) tex.Sample(PointClampSampler,uv) #define D_SAMPLE_TEXTURE_PROJ(tex,uv) tex.Sample(LinearClampSampler,(float2) (uv.xy / uv.w) ) #define D_POINT_SAMPLE_TEXTURE_PROJ(tex,uv) tex.Sample(PointClampSampler,(float2) (uv.xy / uv.w) ) #define D_SAMPLE_TEXTURE_3D(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_SAMPLE_TEXTURE_WRAP_3D(tex,uv) tex.Sample(LinearWrapSampler,uv) #define D_H1_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).x #define D_H2_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xy #define D_H3_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xyz #define D_H4_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_H1_POINTSAMPLELEVEL_TEXTURE(tex,uv,lod) tex.SampleLevel(PointClampSampler,uv,lod).x #define D_H1_SAMPLELEVEL_TEXTURE(tex,uv,lod) tex.SampleLevel(LinearClampSampler,uv,lod).x #define D_H4_SAMPLELEVEL_TEXTURE(tex,uv,lod) tex.SampleLevel(LinearClampSampler,uv,lod) #if defined(D_PLATFORM_D3D11) #define D_H1_SAMPLE_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).x,2.2f) #define D_H2_SAMPLE_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).xy,2.2f) #define D_H3_SAMPLE_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f) #define D_H4_SAMPLE_SRGBTEXTURE(tex,uv) float4( pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f), tex.Sample(LinearClampSampler,uv).a ) #define D_H1_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearWrapSampler,uv).x,2.2f) #define D_H2_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearWrapSampler,uv).xy,2.2f) #define D_H3_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearWrapSampler,uv).xyz,2.2f) #define D_H4_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) float4( pow(tex.Sample(LinearWrapSampler,uv).xyz,2.2f), tex.Sample(LinearWrapSampler,uv).a ) #define D_H4_SAMPLE_WRAPT_SRGBTEXTURE(tex,uv) float4( pow(tex.Sample(LinearWrapTSampler,uv).xyz,2.2f), tex.Sample(LinearWrapTSampler,uv).a) #define D_H3_SAMPLE_WRAP_ANISO_SRGBTEXTURE(tex,uv) pow( tex.Sample(LinearWrapAnisoSampler,uv).xyz, 2.2f) #else #define D_H1_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).x #define D_H2_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xy #define D_H3_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xyz #define D_H4_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_H1_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).x #define D_H2_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xy #define D_H3_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xyz #define D_H4_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv) #define D_H4_SAMPLE_WRAPT_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapTSampler,uv) #endif #define D_H1_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).x #define D_H2_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xy #define D_H3_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xyz #define D_H4_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv) #define D_H1_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv).x #define D_H2_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv).xy #define D_H3_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv).xyz #define D_H4_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv) #define D_H1_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv).x #define D_H2_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv).xy #define D_H3_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv).xyz #define D_H4_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv) #define D_H2_SAMPLE_TEXTURE_3D(tex,uv) tex.Sample(LinearClampSampler,uv).xy #define D_H2_SAMPLE_WRAP_TEXTURE_3D(tex,uv) tex.Sample(LinearWrapSampler,uv).xy #if defined(D_PLATFORM_D3D11) #define D_H3_SAMPLE_TEXTURE_CUBE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f) #define D_H4_SAMPLE_TEXTURE_CUBE(tex,uv) float4( pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f), tex.Sample(LinearClampSampler,uv).a ) #define D_SAMPLE_TEXTURE_CUBE(tex,uv) float4( pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f), tex.Sample(LinearClampSampler,uv).a ) #else #define D_H3_SAMPLE_TEXTURE_CUBE(tex,uv) tex.Sample(LinearClampSampler,uv).xyz #define D_H4_SAMPLE_TEXTURE_CUBE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_SAMPLE_TEXTURE_CUBE(tex,uv) tex.Sample(LinearClampSampler,uv) #endif #else #define D_DECLARE_TEXTURE2D_4(x) sampler2D x #define D_DECLARE_TEXTURE3D_4(x) sampler3D x #define D_DECLARE_TEXTURE_CUBE_4(x) samplerCUBE x #define D_SAMPLE_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_POINT_SAMPLE_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_SAMPLE_TEXTURE_PROJ(tex,uv) h4tex2Dproj(tex,uv.xyw) #define D_POINT_SAMPLE_TEXTURE_PROJ(tex,uv) h4tex2Dproj(tex,uv.xyw) #define D_SAMPLE_TEXTURE_CUBE(tex,uv) h4texCUBE(tex,uv) #define D_SAMPLE_TEXTURE_3D(tex,uv) h4tex3D(tex,uv) #define D_SAMPLE_TEXTURE_WRAP_3D(tex,uv) h4tex3D(tex,uv) #define D_H1_SAMPLE_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_POINTSAMPLELEVEL_TEXTURE(tex,uv,lod) h1tex2D(tex,uv).x #define D_H1_SAMPLELEVEL_TEXTURE(tex,uv,lod) h1tex2D(tex,uv).x #define D_H4_SAMPLELEVEL_TEXTURE(tex,uv,lod) h4tex2D(tex,uv) #define D_H1_SAMPLE_SRGBTEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_SRGBTEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_SRGBTEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_SRGBTEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_WRAP_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_WRAP_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_WRAP_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_WRAP_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_ANISO_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_ANISO_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_ANISO_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_ANISO_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H4_SAMPLE_WRAPT_SRGBTEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H2_SAMPLE_TEXTURE_3D(tex,uv) h2tex3D(tex,uv).xy #define D_H2_SAMPLE_WRAP_TEXTURE_3D(tex,uv) h2tex3D(tex,uv).xy #define D_H3_SAMPLE_TEXTURE_CUBE(tex,uv) h3texCUBE(tex,uv).xyz #define D_H4_SAMPLE_TEXTURE_CUBE(tex,uv) h4texCUBE(tex,uv) #endif #if !defined(GLOBAL_LEAN_AND_MEAN) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // these constants are system constants; uploaded by Phyre itself. // we can't do this, but we don't want to upload them all the time, either. consequently, we make these global // i guess we can eventually stuff these into a separate uniform buffer //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// float4x4 view : view ; // uploaded once per camera float4x4 projection : projection ; // view inverse float4x4 viewprojection : viewprojection ; float4 eyeDirectionWS : eyeDirectionWS ; float4 eyePositionWS : eyePositionWS ; float4 eyePositionOS : eyePositionOS ; float4 cameraNear : cameraNearFar ; float4x4 modelIT : modelit ; // uploaded per primitive // model inverse transpose float4x4 model : model ; float4x4 modelViewProj : modelviewproj ; #endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // depth conversion code, stolen from the sample code //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// float cameraNearTimesFar; float cameraFarMinusNear; float4 cameraNearFar; // Convert a depth value from post projection space to view space. float ConvertDepth(float depth) { // float viewSpaceZ = -(scene.cameraNearTimesFar / (depth * scene.cameraFarMinusNear - scene.cameraNearFar.y)); #if defined(D_PLATFORM_GXM) float viewSpaceZ = -(cameraNearTimesFar / (depth * cameraFarMinusNear - cameraNearFar.y)); #else float viewSpaceZ = -(cameraNearTimesFar / (depth * cameraFarMinusNear - cameraNearFar.y)); #endif return viewSpaceZ; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // skinning //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef SKINNING_ENABLED // grabbed off [PhyreCoreShaderShared.h] // Description: // Encapsulates the skinning transformation matrices. #if defined(D_PLATFORM_GXM) #define PE_MAX_SKIN_CB_TRANSFORMS 32 float4x4 boneTransforms[PE_MAX_SKIN_CB_TRANSFORMS]; float4x4 GenerateBoneMatrix(int4 SkinIndices,float4 SkinWeights) { return boneTransforms[SkinIndices[0]]*SkinWeights[0] + boneTransforms[SkinIndices[1]]*SkinWeights[1] + boneTransforms[SkinIndices[2]]*SkinWeights[2] + boneTransforms[SkinIndices[3]]*SkinWeights[3]; } #else #define PE_MAX_SKIN_CB_TRANSFORMS 32 struct PSkinTransforms { float4x4 Mtxs[PE_MAX_SKIN_CB_TRANSFORMS]; // The skinning transformation matrices. }; cbuffer BoneTransformConstantBuffer { PSkinTransforms SkinTransforms; } float4x4 GenerateBoneMatrix(uint4 SkinIndices,float4 SkinWeights) { return SkinTransforms.Mtxs[SkinIndices[0]]*SkinWeights[0] + SkinTransforms.Mtxs[SkinIndices[1]]*SkinWeights[1] + SkinTransforms.Mtxs[SkinIndices[2]]*SkinWeights[2] + SkinTransforms.Mtxs[SkinIndices[3]]*SkinWeights[3]; } #endif #endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// static const float4x4 SCALE_BIAS = float4x4( float4( 0.5, 0.0, 0.0, 0.5 ), #if defined(D_PLATFORM_D3D11) float4( 0.0, -0.5, 0.0, 0.5 ), #else float4( 0.0, 0.5, 0.0, 0.5 ), #endif float4( 0.0, 0.0, 0.5, 0.5 ), float4( 0.0, 0.0, 0.0, 1.0 ) ); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef D_PLATFORM_GXM #define D_INT_MOD(val,mod) (frac((floor((float)val)/mod))*mod) #define D_UINT_MOD(val,mod) (frac((floor((float)val)/mod))*mod) #elif defined(D_PLATFORM_GNM) #define D_INT_MOD(val,mod) ((int)floor(val) % mod) #define D_UINT_MOD(val,mod) ((uint)floor(val) % mod) #else #define D_INT_MOD(val,mod) ((int)floor(val) % mod) #define D_UINT_MOD(val,mod) ((int)floor(val) % mod) #endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef D_ENABLE_DEBUG_PARAMS float4 debugVars0; float4 debugVars1; float4 debugVars2; float4 debugVars3; float4 debugVars4; float4 debugVars5; float4 debugVars6; float4 debugVars7; #define GETDEBUGVAR(dv) (debugVars##dv!=0) ? (debugVars##dv) : #define GETDEBUGVAR2(dv,scl) (debugVars##dv!=0) ? (scl*debugVars##dv) : #endif #define powsafe(_x,_y) pow(max(_x,0.00000000000001),_y) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #endif//MIGRATORY_SH #line 58 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" // Notes: Occlusion is a deferred screen space effect. This implementation // expects worldspace geometry to be passed in and it will internally // flatten it to screen space. // // Author: John Edwards // Date C: 7-24-2010 // From Phyre: struct p2v { #ifdef __ORBIS__ float4 Position : POSITION; #else float3 Position : POSITION; #endif float3 tint : TEXCOORD0; float4 occPosRad : TEXCOORD1; float4 intShNoiseEx : TEXCOORD2; }; struct v2f { float4 position : POSITION_OUT; float4 clip : TEXCOORD0; float3 tint : TEXCOORD1; float4 occPosRad : TEXCOORD2; float4 intShNoiseEx : TEXCOORD3; }; //---------------------------------------------- // Program entry //---------------------------------------------- void main( in p2v IN, out v2f OUT ) { // Flatten the projection so our interpolators work better. OUT.position = MatrixMul( modelViewProj, float4( IN.Position.xyz, 1 ) ); OUT.clip = OUT.position; OUT.tint = IN.tint; OUT.occPosRad = IN.occPosRad; OUT.intShNoiseEx = IN.intShNoiseEx; } // ------------------------------------------------------------------------------------------------------------------------------------------ #undef main #undef IN #undef OUT #undef v2f #undef a2v // ===================================================================================================================[PIXEL SHADER BEGIN]=== #define main Opaque_fs_main #define IN Opaque_fs_IN #define OUT Opaque_fs_OUT #define v2f Opaque_fs_v2f #define f2f Opaque_fs_f2f // ------------------------------------------------------------------------------------------------------------------------------------------ #line 1 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #ifndef MIGRATORY_SH #define MIGRATORY_SH //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef D_PLATFORM_D3D11x64 #define D_PLATFORM_D3D11 #endif #ifdef D_PLATFORM_D3D11 //#pragma pack_matrix(column_major) #define D_D3D11_OTHER(x,y) x #define D_D3D11_ONLY(x) x #define POSITION_OUT SV_POSITION #define FINAL_COLOR D_D3D11_OTHER(SV_TARGET0,COLOR) #elif defined(D_PLATFORM_GNM) #ifdef __ORBIS__ #pragma warning (disable:5203) // parameter unreferenced #pragma warning (disable:5206) // local variable unreferenced #pragma warning (disable:6204) // does not support uniform default values #pragma warning (disable:6459) // __user_defined__ is not a valid semantic for uniform #pragma warning (disable:5581) // PSSL treats 'half' type as 'float' #pragma warning (disable:5609) // PSSL treats 'half' type as 'float' #pragma warning (disable:5583) // PSSL treats 'half' literals as 'float' #pragma warning (disable:5524) // unsupported compiler hint //! Some evil #defines to sort out matrix multiplies. #define float4x4 row_major float4x4 #define float3x4 row_major float3x4 #define float4x3 row_major float4x3 //! Semantics for VS/PS inputs and outputs. #define POSITION S_POSITION #define SV_POSITION S_POSITION #define SV_GroupID S_GROUP_ID #define SV_VertexID S_VERTEX_ID #define SV_DispatchThreadID S_DISPATCH_THREAD_ID #define SV_GroupThreadID S_GROUP_THREAD_ID #define SV_GroupIndex S_GROUP_INDEX #define SV_PRIMITIVEID S_PRIMITIVE_ID #define SV_IsFrontFace S_FRONT_FACE #define SV_Depth FRAG_OUTPUT_DEPTH #define FRAG_OUTPUT_COLOR S_TARGET_OUTPUT0 #define FRAG_OUTPUT_COLOR0 S_TARGET_OUTPUT0 #define FRAG_OUTPUT_COLOR1 S_TARGET_OUTPUT1 #define FRAG_OUTPUT_COLOR2 S_TARGET_OUTPUT2 #define FRAG_OUTPUT_COLOR3 S_TARGET_OUTPUT3 #define FRAG_OUTPUT_DEPTH S_DEPTH_OUTPUT //! Some defines to make textures compile with PSSL for now (sort out later) SamplerState globalSamplerState; SamplerComparisonState globalSamplerComparisonState { // Sampler state Filter = MIN_MAG_LINEAR_MIP_POINT; AddressU = CLAMP; AddressV = CLAMP; // Sampler comparison state ComparisonFunc = LESS; ComparisonFilter = COMPARISON_MIN_MAG_LINEAR_MIP_POINT; }; #define cbuffer ConstantBuffer #define sampler SamplerState #define sampler2D Texture2D #define sampler3D Texture3D #define samplerCUBE TextureCube #define tex2Dproj(a,b) a.Sample(globalSamplerState, (b).xy / (b).w) #define h1tex2Dproj(a,b) ((half)(a.Sample(globalSamplerState, (b).xy / (b).w).x)) #define h4tex2D(a,b) ((half4)a.Sample(globalSamplerState, (b).xy)) #define h4tex2Dlod(a,b) ((half4)a.SampleLOD(globalSamplerState, (b).xy, (b).w)) #define tex2D(a,b) a.Sample(globalSamplerState, (b).xy) #define SampleLevel SampleLOD #define SampleCmpLevelZero SampleCmpLOD0 #define StructuredBuffer RegularBuffer #define RWStructuredBuffer RW_RegularBuffer #define numthreads NUM_THREADS #define maxvertexcount MAX_VERTEX_COUNT #define groupshared thread_group_memory #define TriangleStream TriangleBuffer #define PointStream PointBuffer #define triangle Triangle #define IncrementCounter IncrementCount #define DecrementCounter DecrementCount #define GroupMemoryBarrierWithGroupSync ThreadGroupMemoryBarrierSync #define InterlockedMin AtomicMin #define InterlockedMax AtomicMax #define InterlockedAdd AtomicAdd #endif //! __ORBIS__ #if defined(PHYRE_D3DFX) && !defined(__ORBIS__) #define FRAG_OUTPUT_COLOR SV_TARGET #define FRAG_OUTPUT_COLOR0 SV_TARGET0 #define FRAG_OUTPUT_COLOR1 SV_TARGET1 #define FRAG_OUTPUT_COLOR2 SV_TARGET2 #define FRAG_OUTPUT_COLOR3 SV_TARGET3 #define FRAG_OUTPUT_DEPTH SV_DEPTH #define SYSTEM_PRIMITIVE_INDEX SV_PRIMITIVEID #endif //! defined(PHYRE_D3DFX) && !defined(__ORBIS__) #define D_D3D11_OTHER(x,y) x #define D_D3D11_ONLY(x) x #define POSITION_OUT POSITION #define FINAL_COLOR FRAG_OUTPUT_COLOR #else #define D_D3D11_OTHER(x,y) y #define D_D3D11_ONLY(x) #define HALF half #define HALF2 half2 #define HALF3 half3 #define HALF4 half4 #define HALF3x3 float3x3 #define HALF3x4 float3x4 #define HALF4x4 float4x4 #define POSITION_OUT POSITION #define FINAL_COLOR D_D3D11_OTHER(SV_TARGET0,COLOR) #endif #if defined(__psp2__) #define NATIVECOLOR __nativecolor #define REGFORMAT __regformat #else #define NATIVECOLOR #define REGFORMAT #endif #if !defined(__ORBIS__) && !defined(D_PLATFORM_GXM) BlendState NoBlend_BlendState { BlendEnable[0] = FALSE; }; BlendState Alpha_BlendState { BlendEnable[0] = TRUE; SrcBlend[0] = Src_Alpha; DestBlend[0] = Inv_Src_Alpha; BlendOp[0] = ADD; SrcBlendAlpha[0] = Src_Alpha; DestBlendAlpha[0] = Inv_Src_Alpha; BlendOpAlpha[0] = ADD; BlendEnable[1] = FALSE; }; BlendState Additive_BlendState { BlendEnable[0] = TRUE; SrcBlend[0] = Src_Alpha; DestBlend[0] = ONE; BlendOp[0] = ADD; SrcBlendAlpha[0] = Src_Alpha; DestBlendAlpha[0] = ONE; BlendOpAlpha[0] = ADD; BlendEnable[1] = FALSE; }; BlendState ParticleBlended_BlendState { BlendEnable[0] = TRUE; SrcBlend[0] = ONE; DestBlend[0] = Inv_Src_Alpha; BlendOp[0] = ADD; SrcBlendAlpha[0] = ONE; DestBlendAlpha[0] = Inv_Src_Alpha; BlendOpAlpha[0] = ADD; BlendEnable[1] = FALSE; }; DepthStencilState NoDepthTest_NoDepthWrite_DepthState { DepthEnable = FALSE; DepthWriteMask = Zero; DepthFunc = Less; StencilEnable = FALSE; }; DepthStencilState NoDepthTest_DepthWrite_DepthState { DepthEnable = FALSE; DepthWriteMask = All; DepthFunc = Less; StencilEnable = FALSE; }; DepthStencilState DepthTest_NoDepthWrite_DepthState { DepthEnable = TRUE; DepthWriteMask = Zero; DepthFunc = Less; StencilEnable = FALSE; }; DepthStencilState DepthTest_DepthWrite_DepthState { DepthEnable = TRUE; DepthWriteMask = All; DepthFunc = Less; StencilEnable = FALSE; }; RasterizerState NoCull_RasterizerState { CullMode=None; }; RasterizerState BackFaceCull_RasterizerState { CullMode=Back; FrontCounterClockwise = TRUE; }; RasterizerState FrontFaceCull_RasterizerState { CullMode=Front; FrontCounterClockwise = TRUE; }; #endif #if defined(D_PLATFORM_D3D11) || defined(D_PLATFORM_GNM) #define MatrixMul(a,b) mul(b,a) #define HALF float #define HALF2 float2 #define HALF3 float3 #define HALF4 float4 #define HALF3x3 float3x3 #define HALF3x4 float3x4 #define HALF4x4 float4x4 #define half float #define half2 float2 #define half3 float3 #define half4 float4 #else #define MatrixMul(a,b) mul(a,b) #endif // samplers #if defined(D_PLATFORM_D3D11) || defined(D_PLATFORM_GNM) sampler PointClampSampler : register(s8) { Filter = Min_Mag_Mip_Point; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; }; sampler LinearClampSampler : register(s9) { Filter = Min_Mag_Mip_Linear; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; }; sampler LinearWrapTSampler : register(s10) { Filter = Min_Mag_Mip_Linear; AddressU = Clamp; AddressV = Wrap; AddressW = Clamp; }; sampler LinearWrapSampler : register(s11) { Filter = Min_Mag_Mip_Linear; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; }; sampler PointWrapSampler : register(s12) { Filter = Min_Mag_Mip_Point; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; }; sampler AnisoClampSampler : register(s13) { Filter = ANISOTROPIC; AddressU = Clamp; AddressV = Clamp; AddressW = Clamp; MaxAnisotropy = 16; }; sampler LinearWrapAnisoSampler : register(s14) { Filter = ANISOTROPIC; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; MaxAnisotropy = 16; }; sampler PointWrapAnisoSampler : register(s15) { Filter = Min_Mag_Point_Mip_Linear; AddressU = Wrap; AddressV = Wrap; AddressW = Wrap; MaxAnisotropy = 16; }; #define SAMPLER_WRAP_ANISO LinearWrapAnisoSampler #define SAMPLER_WRAP_LINEAR LinearWrapSampler #define SAMPLER_WRAP_POINT PointWrapSampler #define SAMPLER_CLAMP_ANISO AnisoClampSampler #define SAMPLER_CLAMP_LINEAR LinearClampSampler #define SAMPLER_CLAMP_POINT PointClampSampler static const float kSRGB = 2.2f; #define SRGB_ON(x) pow(x,kSRGB) #define SRGB_OFF(x) x #define SAMPLETEX(tex,uv,filter,wrap,srgb) SRGB_##srgb(tex.Sample(SAMPLER_##wrap##_##filter, uv)) #ifdef __ORBIS__ #define D_DECLARE_TEXTURE2DMS_4(x) MS_Texture2D x #else #define D_DECLARE_TEXTURE2DMS_4(x) Texture2DMS x #endif #define D_DECLARE_TEXTURE2D_4(x) Texture2D x #define D_DECLARE_TEXTURE3D_4(x) Texture3D x #define D_DECLARE_TEXTURE_CUBE_4(x) TextureCube x #define D_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_POINT_SAMPLE_TEXTURE(tex,uv) tex.Sample(PointClampSampler,uv) #define D_SAMPLE_TEXTURE_PROJ(tex,uv) tex.Sample(LinearClampSampler,(float2) (uv.xy / uv.w) ) #define D_POINT_SAMPLE_TEXTURE_PROJ(tex,uv) tex.Sample(PointClampSampler,(float2) (uv.xy / uv.w) ) #define D_SAMPLE_TEXTURE_3D(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_SAMPLE_TEXTURE_WRAP_3D(tex,uv) tex.Sample(LinearWrapSampler,uv) #define D_H1_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).x #define D_H2_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xy #define D_H3_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xyz #define D_H4_SAMPLE_TEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_H1_POINTSAMPLELEVEL_TEXTURE(tex,uv,lod) tex.SampleLevel(PointClampSampler,uv,lod).x #define D_H1_SAMPLELEVEL_TEXTURE(tex,uv,lod) tex.SampleLevel(LinearClampSampler,uv,lod).x #define D_H4_SAMPLELEVEL_TEXTURE(tex,uv,lod) tex.SampleLevel(LinearClampSampler,uv,lod) #if defined(D_PLATFORM_D3D11) #define D_H1_SAMPLE_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).x,2.2f) #define D_H2_SAMPLE_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).xy,2.2f) #define D_H3_SAMPLE_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f) #define D_H4_SAMPLE_SRGBTEXTURE(tex,uv) float4( pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f), tex.Sample(LinearClampSampler,uv).a ) #define D_H1_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearWrapSampler,uv).x,2.2f) #define D_H2_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearWrapSampler,uv).xy,2.2f) #define D_H3_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) pow(tex.Sample(LinearWrapSampler,uv).xyz,2.2f) #define D_H4_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) float4( pow(tex.Sample(LinearWrapSampler,uv).xyz,2.2f), tex.Sample(LinearWrapSampler,uv).a ) #define D_H4_SAMPLE_WRAPT_SRGBTEXTURE(tex,uv) float4( pow(tex.Sample(LinearWrapTSampler,uv).xyz,2.2f), tex.Sample(LinearWrapTSampler,uv).a) #define D_H3_SAMPLE_WRAP_ANISO_SRGBTEXTURE(tex,uv) pow( tex.Sample(LinearWrapAnisoSampler,uv).xyz, 2.2f) #else #define D_H1_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).x #define D_H2_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xy #define D_H3_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv).xyz #define D_H4_SAMPLE_SRGBTEXTURE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_H1_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).x #define D_H2_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xy #define D_H3_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xyz #define D_H4_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv) #define D_H4_SAMPLE_WRAPT_SRGBTEXTURE(tex,uv) tex.Sample(LinearWrapTSampler,uv) #endif #define D_H1_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).x #define D_H2_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xy #define D_H3_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv).xyz #define D_H4_SAMPLE_WRAP_TEXTURE(tex,uv) tex.Sample(LinearWrapSampler,uv) #define D_H1_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv).x #define D_H2_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv).xy #define D_H3_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv).xyz #define D_H4_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(LinearWrapAnisoSampler,uv) #define D_H1_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv).x #define D_H2_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv).xy #define D_H3_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv).xyz #define D_H4_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) tex.Sample(PointWrapAnisoSampler,uv) #define D_H2_SAMPLE_TEXTURE_3D(tex,uv) tex.Sample(LinearClampSampler,uv).xy #define D_H2_SAMPLE_WRAP_TEXTURE_3D(tex,uv) tex.Sample(LinearWrapSampler,uv).xy #if defined(D_PLATFORM_D3D11) #define D_H3_SAMPLE_TEXTURE_CUBE(tex,uv) pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f) #define D_H4_SAMPLE_TEXTURE_CUBE(tex,uv) float4( pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f), tex.Sample(LinearClampSampler,uv).a ) #define D_SAMPLE_TEXTURE_CUBE(tex,uv) float4( pow(tex.Sample(LinearClampSampler,uv).xyz,2.2f), tex.Sample(LinearClampSampler,uv).a ) #else #define D_H3_SAMPLE_TEXTURE_CUBE(tex,uv) tex.Sample(LinearClampSampler,uv).xyz #define D_H4_SAMPLE_TEXTURE_CUBE(tex,uv) tex.Sample(LinearClampSampler,uv) #define D_SAMPLE_TEXTURE_CUBE(tex,uv) tex.Sample(LinearClampSampler,uv) #endif #else #define D_DECLARE_TEXTURE2D_4(x) sampler2D x #define D_DECLARE_TEXTURE3D_4(x) sampler3D x #define D_DECLARE_TEXTURE_CUBE_4(x) samplerCUBE x #define D_SAMPLE_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_POINT_SAMPLE_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_SAMPLE_TEXTURE_PROJ(tex,uv) h4tex2Dproj(tex,uv.xyw) #define D_POINT_SAMPLE_TEXTURE_PROJ(tex,uv) h4tex2Dproj(tex,uv.xyw) #define D_SAMPLE_TEXTURE_CUBE(tex,uv) h4texCUBE(tex,uv) #define D_SAMPLE_TEXTURE_3D(tex,uv) h4tex3D(tex,uv) #define D_SAMPLE_TEXTURE_WRAP_3D(tex,uv) h4tex3D(tex,uv) #define D_H1_SAMPLE_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_POINTSAMPLELEVEL_TEXTURE(tex,uv,lod) h1tex2D(tex,uv).x #define D_H1_SAMPLELEVEL_TEXTURE(tex,uv,lod) h1tex2D(tex,uv).x #define D_H4_SAMPLELEVEL_TEXTURE(tex,uv,lod) h4tex2D(tex,uv) #define D_H1_SAMPLE_SRGBTEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_SRGBTEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_SRGBTEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_SRGBTEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_WRAP_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_WRAP_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_WRAP_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_WRAP_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_WRAP_ANISO_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_ANISO_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_ANISO_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_ANISO_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_ANISO_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_POINT_WRAP_ANISO_TEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H1_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h1tex2D(tex,uv).x #define D_H2_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h2tex2D(tex,uv).xy #define D_H3_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h3tex2D(tex,uv).xyz #define D_H4_SAMPLE_WRAP_SRGBTEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H4_SAMPLE_WRAPT_SRGBTEXTURE(tex,uv) h4tex2D(tex,uv) #define D_H2_SAMPLE_TEXTURE_3D(tex,uv) h2tex3D(tex,uv).xy #define D_H2_SAMPLE_WRAP_TEXTURE_3D(tex,uv) h2tex3D(tex,uv).xy #define D_H3_SAMPLE_TEXTURE_CUBE(tex,uv) h3texCUBE(tex,uv).xyz #define D_H4_SAMPLE_TEXTURE_CUBE(tex,uv) h4texCUBE(tex,uv) #endif #if !defined(GLOBAL_LEAN_AND_MEAN) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // these constants are system constants; uploaded by Phyre itself. // we can't do this, but we don't want to upload them all the time, either. consequently, we make these global // i guess we can eventually stuff these into a separate uniform buffer //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// float4x4 view : view ; // uploaded once per camera float4x4 projection : projection ; // view inverse float4x4 viewprojection : viewprojection ; float4 eyeDirectionWS : eyeDirectionWS ; float4 eyePositionWS : eyePositionWS ; float4 eyePositionOS : eyePositionOS ; float4 cameraNear : cameraNearFar ; float4x4 modelIT : modelit ; // uploaded per primitive // model inverse transpose float4x4 model : model ; float4x4 modelViewProj : modelviewproj ; #endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // depth conversion code, stolen from the sample code //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// float cameraNearTimesFar; float cameraFarMinusNear; float4 cameraNearFar; // Convert a depth value from post projection space to view space. float ConvertDepth(float depth) { // float viewSpaceZ = -(scene.cameraNearTimesFar / (depth * scene.cameraFarMinusNear - scene.cameraNearFar.y)); #if defined(D_PLATFORM_GXM) float viewSpaceZ = -(cameraNearTimesFar / (depth * cameraFarMinusNear - cameraNearFar.y)); #else float viewSpaceZ = -(cameraNearTimesFar / (depth * cameraFarMinusNear - cameraNearFar.y)); #endif return viewSpaceZ; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // skinning //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef SKINNING_ENABLED // grabbed off [PhyreCoreShaderShared.h] // Description: // Encapsulates the skinning transformation matrices. #if defined(D_PLATFORM_GXM) #define PE_MAX_SKIN_CB_TRANSFORMS 32 float4x4 boneTransforms[PE_MAX_SKIN_CB_TRANSFORMS]; float4x4 GenerateBoneMatrix(int4 SkinIndices,float4 SkinWeights) { return boneTransforms[SkinIndices[0]]*SkinWeights[0] + boneTransforms[SkinIndices[1]]*SkinWeights[1] + boneTransforms[SkinIndices[2]]*SkinWeights[2] + boneTransforms[SkinIndices[3]]*SkinWeights[3]; } #else #define PE_MAX_SKIN_CB_TRANSFORMS 32 struct PSkinTransforms { float4x4 Mtxs[PE_MAX_SKIN_CB_TRANSFORMS]; // The skinning transformation matrices. }; cbuffer BoneTransformConstantBuffer { PSkinTransforms SkinTransforms; } float4x4 GenerateBoneMatrix(uint4 SkinIndices,float4 SkinWeights) { return SkinTransforms.Mtxs[SkinIndices[0]]*SkinWeights[0] + SkinTransforms.Mtxs[SkinIndices[1]]*SkinWeights[1] + SkinTransforms.Mtxs[SkinIndices[2]]*SkinWeights[2] + SkinTransforms.Mtxs[SkinIndices[3]]*SkinWeights[3]; } #endif #endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// static const float4x4 SCALE_BIAS = float4x4( float4( 0.5, 0.0, 0.0, 0.5 ), #if defined(D_PLATFORM_D3D11) float4( 0.0, -0.5, 0.0, 0.5 ), #else float4( 0.0, 0.5, 0.0, 0.5 ), #endif float4( 0.0, 0.0, 0.5, 0.5 ), float4( 0.0, 0.0, 0.0, 1.0 ) ); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef D_PLATFORM_GXM #define D_INT_MOD(val,mod) (frac((floor((float)val)/mod))*mod) #define D_UINT_MOD(val,mod) (frac((floor((float)val)/mod))*mod) #elif defined(D_PLATFORM_GNM) #define D_INT_MOD(val,mod) ((int)floor(val) % mod) #define D_UINT_MOD(val,mod) ((uint)floor(val) % mod) #else #define D_INT_MOD(val,mod) ((int)floor(val) % mod) #define D_UINT_MOD(val,mod) ((int)floor(val) % mod) #endif //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifdef D_ENABLE_DEBUG_PARAMS float4 debugVars0; float4 debugVars1; float4 debugVars2; float4 debugVars3; float4 debugVars4; float4 debugVars5; float4 debugVars6; float4 debugVars7; #define GETDEBUGVAR(dv) (debugVars##dv!=0) ? (debugVars##dv) : #define GETDEBUGVAR2(dv,scl) (debugVars##dv!=0) ? (scl*debugVars##dv) : #endif #define powsafe(_x,_y) pow(max(_x,0.00000000000001),_y) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #endif//MIGRATORY_SH #line 115 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" // Notes: Deferred hacked ambient occlusion. // // Author: John Edwards // Date C: 7-24-2010 // From Phyre. // Projection params: float4 prjPlaneU; float4 prjPlaneV; float4 prjPlaneOrigin; #ifdef COLOR_BIAS // The darkest the occlusion can get. Should be somehow based of the environment ambient, probably. float4 colorBias; float4 colorScale; #endif #if defined(D_PLATFORM_GCM) // For converting from Z buffer value to linear depth. float depthBias; float depthScale; #endif D_DECLARE_TEXTURE2D_4(depthTex); #ifdef D_PLATFORM_D3D11 #define D_D3D_STENCIL #line 1 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh" #if !defined(D_D3DUTILS_H) && defined(D_PLATFORM_D3D11) #define D_D3DUTILS_H #ifdef D_D3D_STENCIL float4 stencil_texDim_depthScale_mask; float4 stencil_testColors; #ifdef MSAA Texture2DMS stencilTexMSAA; float GetStencilMask(float2 uv) { float2 uvScaled = uv * stencil_texDim_depthScale_mask.xy; uint3 uvInt = uint3(uint2(uvScaled), 0); uint mask = uint(stencil_texDim_depthScale_mask.w); uint stencil = stencilTexMSAA.Load(uvInt, 0).g; uint stencilMasked = stencil&mask; float d = float(stencilMasked); return d * stencil_texDim_depthScale_mask.z; } #else Texture2D stencilTex; float GetStencilMask(float2 uv) { float2 uvScaled = uv * stencil_texDim_depthScale_mask.xy; uint3 uvInt = uint3(uint2(uvScaled), 0); uint mask = uint(stencil_texDim_depthScale_mask.w); uint stencil = stencilTex.Load(uvInt).g; uint stencilMasked = stencil&mask; float d = float(stencilMasked); return d * stencil_texDim_depthScale_mask.z; } #endif #endif//D_D3D_STENCIL #endif//!defined(D_D3DUTILS_H) && defined(D_PLATFORM_D3D11) #line 144 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #else D_DECLARE_TEXTURE2D_4(stencilTex); #endif D_DECLARE_TEXTURE2D_4(lightTex); // Light stored in the alpha channel. #ifdef NOISE #ifdef D_PLATFORM_GXM D_DECLARE_TEXTURE2D_4(noise3dTexture); #else D_DECLARE_TEXTURE3D_4(noise3dTexture); #endif #endif #ifdef PLAYER float4 metaballs0; float4 metaballs1; float4 metaballs2; float4 metaballs3; float4 metaballs4; float4 metaballs5; #endif struct v2f { float4 position : POSITION_OUT; float4 clip : TEXCOORD0; float3 tint : TEXCOORD1; float4 occPosRad : TEXCOORD2; float4 intShNoiseEx : TEXCOORD3; }; struct f2f { float4 color : FINAL_COLOR; }; //---------------------------------------------- // Helper functions //---------------------------------------------- float myTexDepth2D( D_DECLARE_TEXTURE2D_4(depthTex), float2 uv ) { #if defined(D_PLATFORM_GCM) float3 depthColor = D_POINT_SAMPLE_TEXTURE( depthTex, uv ).rgb; float3 depthFactor = float3( 65536.0/16777215.0, 256.0/16777215.0, 1.0/16777215.0 ); return dot( round( depthColor * 255.0 ), depthFactor ); #else return D_POINT_SAMPLE_TEXTURE( depthTex, uv ).r; #endif } //---------------------------------------------- // Program entry //---------------------------------------------- void main( in v2f IN, out f2f OUT ) { float2 uv = 0.5 * (IN.clip.xy / IN.clip.w + 1.0); float2 uvOrig = uv; #if defined(D_PLATFORM_D3D11) uv.y = 1.0f - uv.y; #endif float3 occPos = IN.occPosRad.xyz; float rad = IN.occPosRad.w; float intensity = IN.intShNoiseEx.x; float sharpness = IN.intShNoiseEx.y; float noise = IN.intShNoiseEx.z; float exclude = IN.intShNoiseEx.w; float lightTap = saturate( D_SAMPLE_TEXTURE( lightTex, uv ).a - 1 ); float excludeOverride = saturate( D_SAMPLE_TEXTURE( lightTex, uv ).a - 2 ); float depthTap = myTexDepth2D( depthTex, uv ); #if defined(D_PLATFORM_GCM) float z = depthScale / ( depthTap - depthBias ); #else float z = ConvertDepth(depthTap); #endif #ifdef D_PLATFORM_D3D11 float stencilTap = GetStencilMask(uv); #else float stencilTap = D_POINT_SAMPLE_TEXTURE( stencilTex, uv ).r; #endif float3 projPointer = prjPlaneOrigin.xyz + (1 - uvOrig.x) * prjPlaneU.xyz + (1 - uvOrig.y) * prjPlaneV.xyz; float3 camSpace = z * projPointer; float3 pos = eyePositionWS.xyz - camSpace; // Ultimately, seems like it would be faster // to calculate occlusion in camera space. float irradience = 1.0; // If we're player ambient occlusion, we determine occlusion based on metaballs // passed in through uniforms. If we aren't occlusion is based on data passed // in from the vertex shader. #ifdef PLAYER #ifdef NOISE #ifdef D_PLATFORM_GXM half3 noiseTap = D_SAMPLE_TEXTURE( noise3dTexture, 0.25 * pos.xy ).rgb; #else half3 noiseTap = D_SAMPLE_TEXTURE_WRAP_3D( noise3dTexture, 0.25 * pos ).rgb; #endif pos += noise * (2 * noiseTap - 1); #endif #define DO_META(_x) \ { \ float4 meta = metaballs##_x; \ float3 metaPos = meta.xyz; \ float metaRad = meta.w; \ float3 to = metaPos - pos; \ to.y *= 0.25; \ float dist = length( to ); \ metaval += metaRad / (0.0001 + dist * dist); \ } float metaval = 0; DO_META(0) DO_META(1) DO_META(2) DO_META(3) DO_META(4) DO_META(5) const float kMetaCutoff = 0.70; metaval = saturate( kMetaCutoff + lerp( 7.0, 30.0, lightTap ) * (metaval - (1 - kMetaCutoff)) ); irradience = saturate( 1 - metaval ); irradience = lerp( 1.0 - intensity * (0.5 + 0.5 * lightTap), 1.0, irradience ); #else #ifdef NOISE #ifdef D_PLATFORM_GXM half3 noiseTap = D_SAMPLE_TEXTURE( noise3dTexture, 0.125 * pos.xy ).rgb; #else half3 noiseTap = D_SAMPLE_TEXTURE_WRAP_3D( noise3dTexture, 0.125 * pos ).rgb; #endif pos += noise * (2 * noiseTap - 1); #endif half3 to = occPos - pos; half dist = length( to ); half rd = saturate( (rad - dist) / rad ); irradience *= saturate( 1.0 - rd * rd ); //@PROTO: Modify the shadow softness. irradience = saturate( 0.5 + sharpness * (irradience - 0.5) ); //@PROTO: Prevent the shadow from getting too dark. irradience = lerp( 1.0 - intensity, 1.0, irradience ); #endif #ifdef EXCLUSION half exclusion = (1 - excludeOverride) * (abs( exclude - stencilTap * 256.0 ) < 0.75); irradience = lerp( irradience, 1, exclusion ); #endif OUT.color.rgb = lerp( float3( 1.0, 1.0, 1.0 ), float3( irradience, irradience, irradience ), IN.tint ); #ifdef COLOR_BIAS OUT.color.rgb = colorScale.rgb * OUT.color.rgb + colorBias.rgb; #endif } // ------------------------------------------------------------------------------------------------------------------------------------------ #undef main #undef IN #undef OUT #undef v2f #undef f2f // ===================================================================================================================[TECHNIQUE CODE END]=== #if !defined(D_PLATFORM_GXM) #ifndef __ORBIS__ technique11 Opaque { pass pass0 { SetVertexShader( CompileShader( vs_5_0, Opaque_vs_main() ) ); SetPixelShader( CompileShader( ps_5_0, Opaque_fs_main() ) ); SetBlendState(ourBlendState, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF); SetDepthStencilState(ourDepthStencilState,0); SetRasterizerState(ourRasterState); } } #endif #else technique Opaque { pass pass0 { VertexProgram = compile arbvp1 Opaque_vs_main(); FragmentProgram = compile arbfp1 Opaque_fs_main(); } } #endif D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx №1COLOR_BIASEXCLUSIONMSAANOISEPLAYER GGGGGGGG€?€?€?€?€?€A€A€?€ДуА05spDXBC|LQй8bJ€РЉž•0…ЇДу8ДшЌRDEFдЌ<џџAЉRD11< ($ <N a sџџџџ |‹џџџџ ”џџџџ ЃPointClampSamplerLinearClampSamplerLinearWrapSamplerdepthTexstencilTexMSAAlightTexnoise3dTexture$GlobalsЃФАд@фџџџџџџџџ@@фџџџџџџџџ€@фџџџџџџџџ"Р8џџџџџџџџ\а8џџџџџџџџjр8џџџџџџџџx№8џџџџџџџџƒ@фџџџџџџџџ‹@@фџџџџџџџџ‘€@фџџџџџџџџŸРИџџџџџџџџмФИџџџџџџџџяа8џџџџџџџџ§р8џџџџџџџџ№8џџџџџџџџ8џџџџџџџџ 8џџџџџџџџ* 8џџџџџџџџ508џџџџџџџџT@8џџџџџџџџgP8џџџџџџџџr`8џџџџџџџџ}p8џџџџџџџџˆ€8џџџџџџџџ“8џџџџџџџџž 8џџџџџџџџviewfloat4x4ЋЋйprojectionviewprojectioneyeDirectionWSfloat41eyePositionWSeyePositionOScameraNearmodelITmodelmodelViewProjcameraNearTimesFarfloatВcameraFarMinusNearcameraNearFarprjPlaneUprjPlaneVprjPlaneOrigincolorBiascolorScalestencil_texDim_depthScale_maskstencil_testColorsmetaballs0metaballs1metaballs2metaballs3metaballs4metaballs5Microsoft (R) HLSL Shader Compiler 10.1ЋЋЋISGN˜€Œ ŒŒŒ SV_POSITIONTEXCOORDЋЋЋOSGN, SV_TARGETЋЋSHEX PjˆYFŽ +Z`Z` Z` XpUUX pDDXpUUX(pUUbВbrbвer h2Fі 2F@€?€?8 R@??6Т6:€A" @€?6 6"*6B:E‹Т€CU‚FF~` +@6 €A‚: 4‚:@3‚:@€?E‹Т€CUF6y` +"@6"€A 4 @3 @€?::62FE‹Т€CU"F~`6"6":6"8"€ 6B€ €A"*" € 6"€A6"6":62F82FF€ #2F:€ #6Т@.‹€"FF~@6" V 8 *€ #6 +"@6B*€A"*8rVF‚ rFF‚ +"@6B:€A"*8тV‰ тV 8тVV6тV€AтV‰ 8 тV@€>€>€>E‹B€CUт–6y` 6тV+r@8тV +r@6rF€AтV 8тVVтVV+"@6ђFŽ %6rF6‚:6тV€Ar–F8‚@€>"††K"8""@Зб8":"6ђFŽ &6rF6‚:6тV€Ar–F8‚@€>"††K"8""@Зб8":"6ђFŽ '6rF6‚:6тV€Ar–F8‚@€>"††K"8""@Зб8":"6ђFŽ (6rF6‚:6тV€Ar–F8‚@€>"††K"8""@Зб8":"6ђFŽ )6rF6‚:6тV€Ar–F8‚@€>"††K"8""@Зб8":"6ђFŽ *6rF6‚:6тV€Ar–F8‚@€>"††K"8""@Зб8":"6B@333?6‚@рР‚:@№A8‚::‚:@р@6"@š™™О"8":"*4"@3"@€?+B@6"€A"*4"@3"@€?8B:@?B*@?8B* 6B*€AB*@€?6‚*€A‚:@€?8":"*+B@6‚ €AB:*8 @€C6 €A *6‚ €A4: 1 @@? @€?8 *+B@6‚€AB:*8*  6т@€€П€П€Пr–8rFF rF@€?€?€?8rFF‚ "r FF‚ !>STAT”Р…"SPDBЦMicrosoft C/C++ MSF 7.00 DScЌ`Рџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ8ўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ <џџџџ”.1aŒ^^Ђр љіG(МИ@мQ3 SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; RenderTargetWriteMask [ 0 ] = 15 ; AlphaToCoverageEnable = false ; } ; DepthStencilState ourDepthStencilState { DepthEnable = true ; DepthFunc = less ; StencilEnable = false ; } ; RasterizerState ourRasterState { CullMode = None ; DepthBias = 0.0f ; ScissorEnable = false ; MultiSampleEnable = false ; DepthClipEnable = false ; AntialiasedLineEnable = ЦZLшHеЉыАЮНщdP…h&uƒ’цVUO.Г *хъ…]‚fШQvеvЧA$PЙ9ЮС!dЙ?ќE*і№ЫlN,о“#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 9 BlendState ourBlendState { BlendEnable [ 0 ] = FALSE ; BlendEnable [ 1 ] = FALSE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; RenderTargetWriteMask [ 0 ] = 15 ; AlphaToCoverageEnable = false ; } ; DepthStencilState ourDepthStencilState { DepthEnable = true ; DepthFunc = less ; StencilEnable = false ; } ; RasterizerState ourRasterState { CullMode = None ; DepthBias = 0.0f ; ScissorEnable = false ; MultiSampleEnable = false ; DepthClipEnable = false ; AntialiasedLineEnable = false ; } ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 8 #line 16 #line 20 #line 135 #line 140 #line 147 BlendState NoBlend_BlendState { BlendEnable [ 0 ] = FALSE ; } ; BlendState Alpha_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; BlendState Additive_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = ONE ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; #line 180 BlendState ParticleBlended_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = ONE ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; DepthStencilState NoDepthTest_NoDepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState NoDepthTest_DepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_NoDepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_DepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; RasterizerState NoCull_RasterizerState { CullMode = None ; } ; RasterizerState BackFaceCull_RasterizerState { CullMode = Back ; FrontCounterClockwise = TRUE ; } ; RasterizerState FrontFaceCull_RasterizerState { CullMode = Front ; FrontCounterClockwise = TRUE ; } ; #line 243 #line 246 #line 264 #line 269 sampler PointClampSampler : register ( s8 ) { Filter = Min_Mag_Mip_Point ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearClampSampler : register ( s9 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearWrapTSampler : register ( s10 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Wrap ; AddressW = Clamp ; } ; sampler LinearWrapSampler : register ( s11 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler PointWrapSampler : register ( s12 ) { Filter = Min_Mag_Mip_Point ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler AnisoClampSampler : register ( s13 ) { Filter = ANISOTROPIC ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; MaxAnisotropy = 16 ; } ; sampler LinearWrapAnisoSampler : register ( s14 ) { Filter = ANISOTROPIC ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; sampler PointWrapAnisoSampler : register ( s15 ) { Filter = Min_Mag_Point_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; static const float kSRGB = 2.2f ; #line 358 #line 373 #line 408 #line 427 #line 435 #line 498 #line 506 float4x4 view : view ; float4x4 projection : projection ; float4x4 viewprojection : viewprojection ; float4 eyeDirectionWS : eyeDirectionWS ; float4 eyePositionWS : eyePositionWS ; float4 eyePositionOS : eyePositionOS ; float4 cameraNear : cameraNearFar ; float4x4 modelIT : modelit ; float4x4 model : model ; float4x4 modelViewProj : modelviewproj ; #line 521 float cameraNearTimesFar ; float cameraFarMinusNear ; float4 cameraNearFar ; #line 527 float ConvertDepth ( float depth ) { #line 532 float viewSpaceZ = - ( cameraNearTimesFar / ( depth * cameraFarMinusNear - cameraNearFar . y ) ) ; return viewSpaceZ ; } #line 587 #line 592 static const float4x4 SCALE_BIAS = float4x4 ( float4 ( 0.5 , 0.0 , 0.0 , 0.5 ) , float4 ( 0.0 , - 0.5 , 0.0 , 0.5 ) , #line 598 float4 ( 0.0 , 0.0 , 0.5 , 0.5 ) , float4 ( 0.0 , 0.0 , 0.0 , 1.0 ) ) ; #line 613 #line 635 #line 642 #line 57 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 67 struct p2v { #line 71 float3 Position : POSITION ; float3 tint : TEXCOORD0 ; float4 occPosRad : TEXCOORD1 ; float4 intShNoiseEx : TEXCOORD2 ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; #line 91 void Opaque_vs_main ( in p2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { Opaque_vs_OUT . position = mul ( float4 ( Opaque_vs_IN . Position . xyz , 1 ) , modelViewProj ) ; Opaque_vs_OUT . clip = Opaque_vs_OUT . position ; Opaque_vs_OUT . tint = Opaque_vs_IN . tint ; Opaque_vs_OUT . occPosRad = Opaque_vs_IN . occPosRad ; Opaque_vs_OUT . intShNoiseEx = Opaque_vs_IN . intShNoiseEx ; } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 114 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 123 float4 prjPlaneU ; float4 prjPlaneV ; float4 prjPlaneOrigin ; float4 colorBias ; float4 colorScale ; #line 137 Texture2D < float4 > depthTex ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh" float4 stencil_texDim_depthScale_mask ; float4 stencil_testColors ; Texture2DMS < uint2 > stencilTexMSAA ; float GetStencilMask ( float2 uv ) { float2 uvScaled = uv * stencil_texDim_depthScale_mask . xy ; uint3 uvInt = uint3 ( uint2 ( uvScaled ) , 0 ) ; uint mask = uint ( stencil_texDim_depthScale_mask . w ) ; uint stencil = stencilTexMSAA . Load ( uvInt , 0 ) . g ; uint stencilMasked = stencil & mask ; float d = float ( stencilMasked ) ; return d * stencil_texDim_depthScale_mask . z ; } #line 41 #line 44 #line 143 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 146 Texture2D < float4 > lightTex ; #line 153 Texture3D < float4 > noise3dTexture ; float4 metaballs0 ; float4 metaballs1 ; float4 metaballs2 ; float4 metaballs3 ; float4 metaballs4 ; float4 metaballs5 ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 184 float myTexDepth2D ( Texture2D < float4 > depthTex , float2 uv ) { #line 190 return depthTex . Sample ( PointClampSampler , uv ) . r ; } #line 198 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float2 uv = 0.5 * ( Opaque_fs_IN . clip . xy / Opaque_fs_IN . clip . w + 1.0 ) ; float2 uvOrig = uv ; uv . y = 1.0f - uv . y ; float3 occPos = Opaque_fs_IN . occPosRad . xyz ; float rad = Opaque_fs_IN . occPosRad . w ; float intensity = Opaque_fs_IN . intShNoiseEx . x ; float sharpness = Opaque_fs_IN . intShNoiseEx . y ; float noise = Opaque_fs_IN . intShNoiseEx . z ; float exclude = Opaque_fs_IN . intShNoiseEx . w ; float lightTap = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 1 ) ; float excludeOverride = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 2 ) ; float depthTap = myTexDepth2D ( depthTex , uv ) ; #line 218 float z = ConvertDepth ( depthTap ) ; #line 223 float stencilTap = GetStencilMask ( uv ) ; #line 227 float3 projPointer = prjPlaneOrigin . xyz + ( 1 - uvOrig . x ) * prjPlaneU . xyz + ( 1 - uvOrig . y ) * prjPlaneV . xyz ; float3 camSpace = z * projPointer ; float3 pos = eyePositionWS . xyz - camSpace ; #line 234 float irradience = 1.0 ; #line 239 #line 243 float3 noiseTap = noise3dTexture . Sample ( LinearWrapSampler , 0.25 * pos ) . rgb ; pos += noise * ( 2 * noiseTap - 1 ) ; #line 258 float metaval = 0 ; { float4 meta = metaballs0 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs1 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs2 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs3 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs4 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs5 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } const float kMetaCutoff = 0.70 ; metaval = saturate ( kMetaCutoff + lerp ( 7.0 , 30.0 , lightTap ) * ( metaval - ( 1 - kMetaCutoff ) ) ) ; irradience = saturate ( 1 - metaval ) ; irradience = lerp ( 1.0 - intensity * ( 0.5 + 0.5 * lightTap ) , 1.0 , irradience ) ; #line 291 float exclusion = ( 1 - excludeOverride ) * ( abs ( exclude - stencilTap * 256.0 ) < 0.75 ) ; irradience = lerp ( irradience , 1 , exclusion ) ; Opaque_fs_OUT . color . rgb = lerp ( float3 ( 1.0 , 1.0 , 1.0 ) , float3 ( irradience , irradience , irradience ) , Opaque_fs_IN . tint ) ; Opaque_fs_OUT . color . rgb = colorScale . rgb * Opaque_fs_OUT . color . rgb + colorBias . rgb ; } technique11 Opaque { pass pass0 { SetVertexShader ( CompileShader ( vs_5_0 , Opaque_vs_main ( ) ) ) ; SetPixelShader ( CompileShader ( ps_5_0 , Opaque_fs_main ( ) ) ) ; SetBlendState ( ourBlendState , float4 ( 0.0f , 0.0f , 0.0f , 0.0f ) , 0xFFFFFFFF ) ; SetDepthStencilState ( ourDepthStencilState , 0 ) ; SetRasterizerState ( ourRasterState ) ; } } #line 335 ўяўяš1D:\Dev\TGC\Journey\head\Journey\shaderd:\dev\tgc\journey\head\journey\shader#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 9 BlendState ourBlendState { BlendEnable [ 0 ] = FALSE ; BlendEnable [ 1 ] = FALSE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; т0€ “UŽОЪе)(т0‡­dt'0()B< КG КGMicrosoft (R) HLSL Shader Compiler 10.1š=hlslFlags0x4005hlslTargetps_5_0hlslEntryOpaque_fs_mainhlslDefines /DEXCLUSION=1 /DNOISE=1 /DMSAA=1 /DPLAYER=1 /DPHYRE_D3DFX=1 /DCOLOR_BIAS=16PhhИ Opaque_fs_main2> Opaque_fs_INPИhPИhPИhP Иh PИhPИhPИhPИhP Иh P$Иh$P(Иh(P,Иh0P0Иh4P4Иh8P8Иh<P<Иh@P@ИhDPDИhHPHИhL6> Opaque_fs_OUTP Иh PИhPИhPИhPм Pм Pм *> uvP$TP$Pl .> uvOrigP8\P8  2>@intensityP€ .>@noiseP”x.>@excludePЈx.>@lightTapPTЬ6>@excludeOverrideP  .>@depthTapPpЈ$*>@zP@А$2>@stencilTapPhИ 2>projPointerPtPtPt .>camSpacePPP *>posPШŒPШŒPШŒ 2>@irradiencePШ”иP\<.>noiseTapP0œ$P0№ (P0№ ,.>@metavalP  P,HЌp*>metaP$00P$04P$08P $0<.>metaPosP80P84P88.>@metaRadPL<*>toP€0@P€DP€0HPœ0L*>@distPЬ$*>metaPT 00PT 04PT 08P T 0<.>metaPosPh 0Ph 4Ph 8.>@metaRadP| <*>toPА 0@PА DPА 0HPЬ 0L*>@distPќ $*>metaP„ 00P„ 04P„ 08P „ 0<.>metaPosP˜ 0P˜ 4P˜ 8.>@metaRadPЌ <*>toPр 0@Pр DPр 0HPќ 0L*>@distP, $*>metaPД 00PД 04PД 08P Д 0<.>metaPosPШ 0PШ 4PШ 8.>@metaRadPм <*>toP 0@P DP 0HP, 0L*>@distP\ $*>metaPф 00Pф 04Pф 08P ф 0<.>metaPosPј 0Pј 4Pј 8.>@metaRadP <*>toP@ 0@P@ DP@ 0HP\ 0L*>@distPŒ $*>metaP 0P 4P 8P  <.>metaPosP(ј0P(ј4P(ј8.>@metaRadP<ф<*>toPpА@PpDPpАHPŒ”L*>@distPМ2> kMetaCutoffP@2>@exclusionPмd.Mфь  = @‚d 7ƒ  = ,B> €P\$*>  uvPTPTNFMф(  f ‚а  € 3 Lƒˆ P `  b8  d   B> €P,$.>@depthPˆ$2>@viewSpaceZP($N‚MфL  @ƒ  4 = < )` ' 3   >„X  ,  ;  6 :L  '  % 1 F> €PT*>  uvPX PX .> uvScaledPx,Pxx.>uvIntPŒм0PŒм4*>umaskPЄ|.>ustencilPd6>ustencilMaskedP *>@dP4 Nє8щШПяљ  ФiхеO$;w0г0'1a1ђ  € ИШ€ИШдШ€дШќШ€ќШ$Щ€$Щ8Ы€8ЫPЫ€PЫlЯ€lЯ€б€€б”в€”вЈд€Јддд€ддшд€шдд€дд€д8д€8дTе€Tе€е€€е”е€”еЌе€ЌеШе€Шефе€фез€зз€зз€зз€зHз€Hз\з€\зpл€pлtл€tлˆл€ˆлЈл€ЈлФл€Флрл€рлл€лл€л,л€,л@р€@рDр€DрXр€Xрxр€xрŒр€ŒрЄр€ЄрФр€Фр№р€№рр€р р€ р4р€4рTр€Tрhх€hх|х€|х”х€”хАх€Ахах€ах№х€№хх€хх€х8х€8хXх€Xхtц€tцч€чЈч€ЈчШє€Шє№є€№єє€є0і€0іPі€Pіlі€lіŒі€ŒіЄі€ЄіРі€Рімі€міј€ј € $€$8€8L€Ld€d€€€œ€œИ€ИЬ€Ьш€ш €  € < €< T €T h €h | €| ” €” А €А Ь €Ь ш €ш ќ €ќ  € 4 €4 P €P l €l „ €„ ˜ €˜ Ќ €Ќ Ф €Ф р €р ќ €ќ  € , €, H €H d €d € €€ œ €œ Д €Д Ш €Ш м €м є €є  € , €, H €H \ €\ x €x ” €” А €А Ь €Ь ф €ф ј €ј  € $ €$ @ €@ \ €\ x €x Œ €Œ Ј €Ј Ф €Ф р €р ќ €ќ  € ( €( < €< T €T p €p Œ €Œ Ј €Ј М €М и €и є €є  € , €, @ €@ T €T p €p Œ €Œ Ј €Ј М €М и €и є €є  € , €, H€H\€\t€t€Ќ€ЌШ€Шф€ф€€4€4P€Ph€h„€„ € М'€М'а'€а'ш'€ш''€' '€ '8'€8'T'€T'l'€l'ˆ'€ˆ'Є'€Є'Р'€Р'м(€м(№(€№((€($(€$(@(€@(\+€\+|+€|+˜+€˜+Д+€Д+м.€м.ќ.€ќ.0€0TJTPTR 7 53 15 3Y!MY!UY!UY!UYWYW`(T`(\`(\`(\`^`^53535353535 3)')')')')')')')') '.,.,.,.,.,.,.,.,.,.,.,. ,}3@}3@}3@}1T}T}Zg}Zg}Zg}X{}{'%1/1/XENXPX V)!)!)%)%)%) ')'  ">)<@YFW[ugs[ugsw†w„ˆЃ•ЁˆЃ•ЁЅгХЯЅгМЯЅгАбЅгЅб ">)<@YFW[ugs[ugsw†w„ˆЃ•ЁˆЃ•ЁЅгХЯЅгМЯЅгАбЅгЅб ">)<@YFW[ugs[ugsw†w„ˆЃ•ЁˆЃ•ЁЅгХЯЅгМЯЅгАбЅгЅб ">)<@YFW[ugs[ugsw†w„ˆЃ•ЁˆЃ•ЁЅгХЯЅгМЯЅгАбЅгЅб ">)<@YFW[ugs[ugsw†w„ˆЃ•ЁˆЃ•ЁЅгХЯЅгМЯЅгАбЅгЅб ">)<@YFW[ugs[ugsw†w„ˆЃ•ЁˆЃ•ЁЅгХЯЅгМЯЅгАбЅгЅб$"m(Em(Em(Em(EmKgmKgm(imimkmk+'+'+'+)+)Y3@Y-@YBYBYBYWYWYWYWa+a+a+aCTa9Ta9Ta3Va3Va3]a_a_6464646464####d#Pd#bі4 Й(0` Hp˜Мф 0Pp”Ддє(LlАа№0ђё         uuint2Ј  Јђё    Ъ18"„ џџџџˆˆ@float4ѓђё@ float3ѓђёb positionё clipё  tintё ,occPosRad <intShNoiseExё"LOpaque_fs_v2f color"Opaque_fs_f2f @float2ѓђё @Јђё     @    u uint3 Д AyLfalse ; } ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 8 #line 16 #line 20 #line 135 #line 140 #line 147 BlendState NoBlend_BlendState { BlendEnable [ 0 ] = FALSE ; } ; BlendState Alpha_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; BlendState Additive_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = ONE ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; #line 180 BlendState ParticleBlended_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = ONE ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; DepthStencilState NoDepthTest_NoDepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState NoDepthTest_DepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_NoDepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_DepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; RasterizerState NoCull_RasterizerState { CullMode = None ; } ; RasterizerState BackFaceCull_RasterizerState { CullMode = Back ; FrontCounterClockwise = TRUE ; } ; RasterizerState FrontFaceCull_RasterizerState { CullMode = Front ; FrontCounterClockwise = TRUE ; } ; #line 243 #line 246 #line 264 #line 269 sampler PointClampSampler : register ( s8 ) { Filter = Min_Mag_Mip_Point ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearClampSampler : register ( s9 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearWrapTSampler : register ( s10 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Wrap ; AddressW = Clamp ; } ; sampler LinearWrapSampler : register ( s11 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler PointWrapSampler : register ( s12 ) { Filter = Min_Mag_Mip_Point ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler AnisoClampSampler : register ( s13 ) { Filter = ANISOTROPIC ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; MaxAnisotropy = 16 ; } ; sampler LinearWrapAnisoSampler : register ( s14 ) { Filter = ANISOTROPIC ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; sampler PointWrapAnisoSampler : register ( s15 ) { Filter = Min_Mag_Point_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; static const float kSRGB = 2.2f ; #line 358 #line 373 #line 408 #line 427 #line 435 #line 498 #line 506 float4x4 view : view ; float4x4 projection : projection ; float4x4 viewprojection : viewprojection ; float4 eyeDirectionWS : eyeDirectionWS ; float4 eyePositionWS : eyePositionWS ; float4 eyePositionOS : eyePositionOS ; float4 cameraNear : cameraNearFar ; float4x4 modelIT : modelit ; float4x4 model : model ; float4x4 modelViewProj : modelviewproj ; #line 521 float cameraNearTimesFar ; float cameraFarMinusNear ; float4 cameraNearFar ; #line 527 float ConvertDepth ( float depth ) { #line 532 float viewSpaceZ = - ( cameraNearTimesFar / ( depth * cameraFarMinusNear - cameraNearFar . y ) ) ; return viewSpaceZ ; } #line 587 #line 592 static const float4x4 SCALE_BIAS = float4x4 ( float4 ( 0.5 , 0.0 , 0.0 , 0.5 ) , float4 ( 0.0 , - 0.5 , 0.0 , 0.5 ) , #line 598 float4 ( 0.0 , 0.0 , 0.5 , 0.5 ) , float4 ( 0.0 , 0.0 , 0.0 , 1.0 ) ) ; #line 613 #line 635 #line 642 #line 57 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 67 struct p2v { #line 71 float3 Position : POSITION ; float3 tint : TEXCOORD0 ; float4 occPosRad : TEXCOORD1 ; float4 intShNoiseEx : TEXCOORD2 ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; #line 91 void Opaque_vs_main ( in p2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { Opaque_vs_OUT . position = mul ( float4 ( Opaque_vs_IN . Position . xyz , 1 ) , modelViewProj ) ; Opaque_vs_OUT . clip = Opaque_vs_OUT . position ; Opaque_vs_OUT . tint = Opaque_vs_IN . tint ; Opaque_vs_OUT . occPosRad = Opaque_vs_IN . occPosRad ; Opaque_vs_OUT . intShNoiseEx = Opaque_vs_IN . intShNoiseEx ; } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 114 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 123 float4 prjPlaneU ; float4 prjPlaneV ; float4 prjPlaneOrigin ; float4 colorBias ; float4 colorScale ; #line 137 Texture2D < float4 > depthTex ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh" float4 stencil_texDim_depthScale_mask ; float4 stencil_testColors ; Texture2DMS < uint2 > stencilTexMSAA ; float GetStencilMask ( float2 uv ) { float2 uvScaled = uv * stencil_texDim_depthScale_mask . xy ; uint3 uvInt = uint3 ( uint2 ( uvScaled ) , 0 ) ; uint mask = uint ( stencil_texDim_depthScale_mask . w ) ; uint stencil = stencilTexMSAA . Load ( uvInt , 0 ) . g ; uint stencilMasked = stencil & mask ; float d = float ( stencilMasked ) ; return d * stencil_texDim_depthScale_mask . z ; } #line 41 #line 44 #line 143 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 146 Texture2D < float4 > lightTex ; #line 153 Texture3D < float4 > noise3dTexture ; float4 metaballs0 ; float4 metaballs1 ; float4 metaballs2 ; float4 metaballs3 ; float4 metaballs4 ; float4 metaballs5 ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 184 float myTexDepth2D ( Texture2D < float4 > depthTex , float2 uv ) { #line 190 return depthTex . Sample ( PointClampSampler , uv ) . r ; } #line 198 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float2 uv = 0.5 * ( Opaque_fs_IN . clip . xy / Opaque_fs_IN . clip . w + 1.0 ) ; float2 uvOrig = uv ; uv . y = 1.0f - uv . y ; float3 occPos = Opaque_fs_IN . occPosRad . xyz ; float rad = Opaque_fs_IN . occPosRad . w ; float intensity = Opaque_fs_IN . intShNoiseEx . x ; float sharpness = Opaque_fs_IN . intShNoiseEx . y ; float noise = Opaque_fs_IN . intShNoiseEx . z ; float exclude = Opaque_fs_IN . intShNoiseEx . w ; float lightTap = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 1 ) ; float excludeOverride = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 2 ) ; float depthTap = myTexDepth2D ( depthTex , uv ) ; #line 218 float z = ConvertDepth ( depthTap ) ; #line 223 float stencilTap = GetStencilMask ( uv ) ; #line 227 float3 projPointer = prjPlaneOrigin . xyz + ( 1 - uvOrig . x ) * prjPlaneU . xyz + ( 1 - uvOrig . y ) * prjPlaneV . xyz ; float3 camSpace = z * projPointer ; float3 pos = eyePositionWS . xyz - camSpace ; #line 234 float irradience = 1.0 ; #line 239 #line 243 float3 noiseTap = noise3dTexture . Sample ( LinearWrapSampler , 0.25 * pos ) . rgb ; pos += noise * ( 2 * noiseTap - 1 ) ; #line 258 float metaval = 0 ; { float4 meta = metaballs0 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs1 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs2 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs3 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs4 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs5 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } const float kMetaCutoff = 0.70 ; metaval = saturate ( kMetaCutoff + lerp ( 7.0 , 30.0 , lightTap ) * ( metaval - ( 1 - kMetaCutoff ) ) ) ; irradience = saturate ( 1 - metaval ) ; irradience = lerp ( 1.0 - intensity * ( 0.5 + 0.5 * lightTap ) , 1.0 , irradience ) ; #line 291 float exclusion = ( 1 - excludeOverride ) * ( abs ( exclude - stencilTap * 256.0 ) < 0.75 ) ; irradience = lerp ( irradience , 1 , exclusion ) ; Opaque_fs_OUT . color . rgb = lerp ( float3 ( 1.0 , 1.0 , 1.0 ) , float3 ( irradience , irradience , irradience ) , Opaque_fs_IN . tint ) ; Opaque_fs_OUT . color . rgb = colorScale . rgb * Opaque_fs_OUT . color . rgb + colorBias . rgb ; } technique11 Opaque { pass pass0 { SetVertexShader ( CompileShader ( vs_5_0 , Opaque_vs_main ( ) ) ) ; SetPixelShader ( CompileShader ( ps_5_0 , Opaque_fs_main ( ) ) ) ; SetBlendState ( ourBlendState , float4 ( 0.0f , 0.0f , 0.0f , 0.0f ) , 0xFFFFFFFF ) ; SetDepthStencilState ( ourDepthStencilState , 0 ) ; SetRasterizerState ( ourRasterState ) ; } } #line 335 D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.shD:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh '1(a1w0)Pг0 Ъ18T џџџџ  myTexDepth2DѓђёConvertDepthѓђёGetStencilMaskёD3DSHDR  `  myTexDepth2DѓђёConvertDepthѓђёGetStencilMaskёџџџџ /ёРd!q)Е1Qх•ѕM™I1ебmqё‘НБ `€€@€€€€€€ $0<HT`lx„œЈДРЬиф№ќ%фOpaque_fs_main&QџџџџџџџџPointClampSampler&Qџџџџџџ џџLinearClampSampler&Qџџџџџџ џџLinearWrapSampler"QаџџџџџџeyePositionWS&QРџџџџџџcameraNearTimesFar&QФџџџџџџcameraFarMinusNear"QаџџџџџџcameraNearFarQрџџџџџџprjPlaneUQ№џџџџџџprjPlaneV"QџџџџџџprjPlaneOriginQџџџџџџcolorBiasQ џџџџџџcolorScaleQџџџџџџџџdepthTex2QвИвџџџџ /ё0џџџџџџstencil_texDim_depthScale_mask"QџџџџџџџџstencilTexMSAAQџџџџџџџџlightTex"Q!џџџџџџџџnoise3dTextureQPџџџџџџmetaballs0Q`џџџџџџmetaballs1Qpџџџџџџmetaballs2Q€џџџџџџmetaballs3Qџџџџџџmetaballs4Q џџџџџџmetaballs5Migratory.shD:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.shўяўяџџџџџџџџџџ џџџџџџџџџџOpaque_fs_mainnoneџџџџw 1 Ž?\T ,h  ` TœOpaque_fs_mainnone-К.ё  `џџџџ џџџџџџџџ'ƒзD:\Dev\TGC\Journey\head\Journey\shaderD:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/”.1aŒ^^Ђр љіG(МИ@T/LinkInfo/names/src/headerblock/src/files/d:\dev\tgc\journey\head\journey\shader" мQ3 АМwŒк1€'0T/(4,P^<;]\U!>?@ABCDEFGHIJKLMNOPQRST"  #$%&'()*+,-./0123456789:=VWXZY[_h 8PАР а@@1а@1€@1раєР№Фpp`€P№@ р№№раР А0 @P€`рр @@1`€@1 @1АР а@@1а@1€@1раєР№Фpp`€P№@ р№№раР А0 @P€`рр @@1`€@1 @18џџџџ4Pџџџџ4hџџџџ4 џџџџ4(џџџџ4џџџџ4јџџџџ4рџџџџ4Шџџџџ4Аџџџџ4˜џџџџ4€џџџџ484P4h4 4(4 4јџџџџ4р 4Шџџџџ4Аџџџџ4˜џџџџ4€џџџџ4@№@р@№№@р@а@Р @А0@ @@P@€`@pp@`€@P@@ G4(џџџџG4џџџџG4јџџџџG4рџџџџG4ШџџџџG4АџџџџG4˜џџџџG4€џџџџB4hџџџџB4PџџџџB48џџџџC4 џџџџрр‚1 @@„1`@€ˆ1 @AnisoClampSamplerLinearClampSamplerLinearWrapAnisoSamplerLinearWrapSamplerLinearWrapTSamplerPointClampSamplerPointWrapAnisoSamplerPointWrapSamplercameraNearcolorBiascolorScaledepthTexeyePositionOSlightTexmetaballs0metaballs1metaballs2metaballs3metaballs4metaballs5modelmodelITmodelViewProjnoise3dTextureprjPlaneOriginprjPlaneUprjPlaneVstencilTexMSAAstencil_testColorsstencil_texDim_depthScale_maskнСџџЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅ ЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅ05sv05spOpaque_fs_mainOpaque_vs_mainhjЪ }R8}RP}RPOSITIONTEXCOORDD А05svDXBCЙQЮtп 7БTЅCк?dAD 8аTє  < RDEFh<ўџAeRD11< ($ \$GlobalsЋЋЋ\€А@ џџџџџџџџФ@@ џџџџџџџџЯ€@ џџџџџџџџоРєџџџџџџџџаєџџџџџџџџ&рєџџџџџџџџ4№єџџџџџџџџ?@ џџџџџџџџG@@ џџџџџџџџM€@ џџџџџџџџ[Рtџџџџџџџџ˜ФtџџџџџџџџЋаєџџџџџџџџЙрєџџџџџџџџУ№єџџџџџџџџЭєџџџџџџџџмєџџџџџџџџц єџџџџџџџџё0єџџџџџџџџ@єџџџџџџџџ#Pєџџџџџџџџ.`єџџџџџџџџ9pєџџџџџџџџD€єџџџџџџџџOєџџџџџџџџZ єџџџџџџџџviewfloat4x4ЋЋ•projectionviewprojectioneyeDirectionWSfloat4эeyePositionWSeyePositionOScameraNearmodelITmodelmodelViewProjcameraNearTimesFarfloatncameraFarMinusNearcameraNearFarprjPlaneUprjPlaneVprjPlaneOrigincolorBiascolorScalestencil_texDim_depthScale_maskstencil_testColorsmetaballs0metaballs1metaballs2metaballs3metaballs4metaballs5Microsoft (R) HLSL Shader Compiler 10.1ЋЋЋISGN|hqqqPOSITIONTEXCOORDЋЋOSGN˜€ŒŒŒŒSV_POSITIONTEXCOORDЋЋЋSHEXЄPijˆYFŽ _r_r_ђ_ђgђ eђ er eђ eђ h+‚@6rFFFŽ "FFŽ BFFŽ ‚FFŽ 6ђ F6r F6ђ F6ђ F6ђ F>STAT”  SPDB–Microsoft C/C++ MSF 7.00 DSKPIРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ8ќџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ <џџџџ”.1aŒ^;1*М/ѕFJЙЖO­ЌЉмQ3 SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; RenderTargetWriteMask [ 0 ] = 15 ; AlphaToCoverageEnable = false ; } ; DepthStencilState ourDepthStencilState { DepthEnable = true ; DepthFunc = less ; StencilEnable = false ; } ; RasterizerState ourRasterState { CullMode = None ; DepthBias = 0.0f ; ScissorEnable = false ; MultiSampleEnable = false ; DepthClipEnable = false ; AntialiasedLineEnable = LшЦZ7B А9ЇџdP…h&gŸЮ79Ю#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 9 BlendState ourBlendState { BlendEnable [ 0 ] = FALSE ; BlendEnable [ 1 ] = FALSE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; RenderTargetWriteMask [ 0 ] = 15 ; AlphaToCoverageEnable = false ; } ; DepthStencilState ourDepthStencilState { DepthEnable = true ; DepthFunc = less ; StencilEnable = false ; } ; RasterizerState ourRasterState { CullMode = None ; DepthBias = 0.0f ; ScissorEnable = false ; MultiSampleEnable = false ; DepthClipEnable = false ; AntialiasedLineEnable = false ; } ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 8 #line 16 #line 20 #line 135 #line 140 #line 147 BlendState NoBlend_BlendState { BlendEnable [ 0 ] = FALSE ; } ; BlendState Alpha_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; BlendState Additive_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = ONE ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; #line 180 BlendState ParticleBlended_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = ONE ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; DepthStencilState NoDepthTest_NoDepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState NoDepthTest_DepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_NoDepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_DepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; RasterizerState NoCull_RasterizerState { CullMode = None ; } ; RasterizerState BackFaceCull_RasterizerState { CullMode = Back ; FrontCounterClockwise = TRUE ; } ; RasterizerState FrontFaceCull_RasterizerState { CullMode = Front ; FrontCounterClockwise = TRUE ; } ; #line 243 #line 246 #line 264 #line 269 sampler PointClampSampler : register ( s8 ) { Filter = Min_Mag_Mip_Point ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearClampSampler : register ( s9 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearWrapTSampler : register ( s10 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Wrap ; AddressW = Clamp ; } ; sampler LinearWrapSampler : register ( s11 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler PointWrapSampler : register ( s12 ) { Filter = Min_Mag_Mip_Point ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler AnisoClampSampler : register ( s13 ) { Filter = ANISOTROPIC ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; MaxAnisotropy = 16 ; } ; sampler LinearWrapAnisoSampler : register ( s14 ) { Filter = ANISOTROPIC ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; sampler PointWrapAnisoSampler : register ( s15 ) { Filter = Min_Mag_Point_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; static const float kSRGB = 2.2f ; #line 358 #line 373 #line 408 #line 427 #line 435 #line 498 #line 506 float4x4 view : view ; float4x4 projection : projection ; float4x4 viewprojection : viewprojection ; float4 eyeDirectionWS : eyeDirectionWS ; float4 eyePositionWS : eyePositionWS ; float4 eyePositionOS : eyePositionOS ; float4 cameraNear : cameraNearFar ; float4x4 modelIT : modelit ; float4x4 model : model ; float4x4 modelViewProj : modelviewproj ; #line 521 float cameraNearTimesFar ; float cameraFarMinusNear ; float4 cameraNearFar ; #line 527 float ConvertDepth ( float depth ) { #line 532 float viewSpaceZ = - ( cameraNearTimesFar / ( depth * cameraFarMinusNear - cameraNearFar . y ) ) ; return viewSpaceZ ; } #line 587 #line 592 static const float4x4 SCALE_BIAS = float4x4 ( float4 ( 0.5 , 0.0 , 0.0 , 0.5 ) , float4 ( 0.0 , - 0.5 , 0.0 , 0.5 ) , #line 598 float4 ( 0.0 , 0.0 , 0.5 , 0.5 ) , float4 ( 0.0 , 0.0 , 0.0 , 1.0 ) ) ; #line 613 #line 635 #line 642 #line 57 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 67 struct p2v { #line 71 float3 Position : POSITION ; float3 tint : TEXCOORD0 ; float4 occPosRad : TEXCOORD1 ; float4 intShNoiseEx : TEXCOORD2 ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; #line 91 void Opaque_vs_main ( in p2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { Opaque_vs_OUT . position = mul ( float4 ( Opaque_vs_IN . Position . xyz , 1 ) , modelViewProj ) ; Opaque_vs_OUT . clip = Opaque_vs_OUT . position ; Opaque_vs_OUT . tint = Opaque_vs_IN . tint ; Opaque_vs_OUT . occPosRad = Opaque_vs_IN . occPosRad ; Opaque_vs_OUT . intShNoiseEx = Opaque_vs_IN . intShNoiseEx ; } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 114 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 123 float4 prjPlaneU ; float4 prjPlaneV ; float4 prjPlaneOrigin ; float4 colorBias ; float4 colorScale ; #line 137 Texture2D < float4 > depthTex ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh" float4 stencil_texDim_depthScale_mask ; float4 stencil_testColors ; Texture2DMS < uint2 > stencilTexMSAA ; float GetStencilMask ( float2 uv ) { float2 uvScaled = uv * stencil_texDim_depthScale_mask . xy ; uint3 uvInt = uint3 ( uint2 ( uvScaled ) , 0 ) ; uint mask = uint ( stencil_texDim_depthScale_mask . w ) ; uint stencil = stencilTexMSAA . Load ( uvInt , 0 ) . g ; uint stencilMasked = stencil & mask ; float d = float ( stencilMasked ) ; return d * stencil_texDim_depthScale_mask . z ; } #line 41 #line 44 #line 143 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 146 Texture2D < float4 > lightTex ; #line 153 Texture3D < float4 > noise3dTexture ; float4 metaballs0 ; float4 metaballs1 ; float4 metaballs2 ; float4 metaballs3 ; float4 metaballs4 ; float4 metaballs5 ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 184 float myTexDepth2D ( Texture2D < float4 > depthTex , float2 uv ) { #line 190 return depthTex . Sample ( PointClampSampler , uv ) . r ; } #line 198 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float2 uv = 0.5 * ( Opaque_fs_IN . clip . xy / Opaque_fs_IN . clip . w + 1.0 ) ; float2 uvOrig = uv ; uv . y = 1.0f - uv . y ; float3 occPos = Opaque_fs_IN . occPosRad . xyz ; float rad = Opaque_fs_IN . occPosRad . w ; float intensity = Opaque_fs_IN . intShNoiseEx . x ; float sharpness = Opaque_fs_IN . intShNoiseEx . y ; float noise = Opaque_fs_IN . intShNoiseEx . z ; float exclude = Opaque_fs_IN . intShNoiseEx . w ; float lightTap = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 1 ) ; float excludeOverride = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 2 ) ; float depthTap = myTexDepth2D ( depthTex , uv ) ; #line 218 float z = ConvertDepth ( depthTap ) ; #line 223 float stencilTap = GetStencilMask ( uv ) ; #line 227 float3 projPointer = prjPlaneOrigin . xyz + ( 1 - uvOrig . x ) * prjPlaneU . xyz + ( 1 - uvOrig . y ) * prjPlaneV . xyz ; float3 camSpace = z * projPointer ; float3 pos = eyePositionWS . xyz - camSpace ; #line 234 float irradience = 1.0 ; #line 239 #line 243 float3 noiseTap = noise3dTexture . Sample ( LinearWrapSampler , 0.25 * pos ) . rgb ; pos += noise * ( 2 * noiseTap - 1 ) ; #line 258 float metaval = 0 ; { float4 meta = metaballs0 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs1 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs2 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs3 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs4 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs5 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } const float kMetaCutoff = 0.70 ; metaval = saturate ( kMetaCutoff + lerp ( 7.0 , 30.0 , lightTap ) * ( metaval - ( 1 - kMetaCutoff ) ) ) ; irradience = saturate ( 1 - metaval ) ; irradience = lerp ( 1.0 - intensity * ( 0.5 + 0.5 * lightTap ) , 1.0 , irradience ) ; #line 291 float exclusion = ( 1 - excludeOverride ) * ( abs ( exclude - stencilTap * 256.0 ) < 0.75 ) ; irradience = lerp ( irradience , 1 , exclusion ) ; Opaque_fs_OUT . color . rgb = lerp ( float3 ( 1.0 , 1.0 , 1.0 ) , float3 ( irradience , irradience , irradience ) , Opaque_fs_IN . tint ) ; Opaque_fs_OUT . color . rgb = colorScale . rgb * Opaque_fs_OUT . color . rgb + colorBias . rgb ; } technique11 Opaque { pass pass0 { SetVertexShader ( CompileShader ( vs_5_0 , Opaque_vs_main ( ) ) ) ; SetPixelShader ( CompileShader ( ps_5_0 , Opaque_fs_main ( ) ) ) ; SetBlendState ( ourBlendState , float4 ( 0.0f , 0.0f , 0.0f , 0.0f ) , 0xFFFFFFFF ) ; SetDepthStencilState ( ourDepthStencilState , 0 ) ; SetRasterizerState ( ourRasterState ) ; } } #line 335 ўяўяš1D:\Dev\TGC\Journey\head\Journey\shaderd:\dev\tgc\journey\head\journey\shader#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 9 BlendState ourBlendState { BlendEnable [ 0 ] = FALSE ; BlendEnable [ 1 ] = FALSE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; т0€œћRŽОЪе)(т0‡­dt'0()B< КG КGMicrosoft (R) HLSL Shader Compiler 10.1š=hlslFlags0x4005hlslTargetvs_5_0hlslEntryOpaque_vs_mainhlslDefines /DEXCLUSION=1 /DNOISE=1 /DMSAA=1 /DPLAYER=1 /DPHYRE_D3DFX=1 /DCOLOR_BIAS=16” Opaque_vs_main2> Opaque_vs_INP”P”P”P ”P”P”P” P”$P ”(P$”,P(”0P,”4P0”8P4”<6> Opaque_vs_OUTP<”@P@”DPD”HPH”LP,”0P0”4P4”8P8”<P ” P$”$P(”(P”P”P”P”P”P”P”P ” PмФPќЄP„P <dє8щШПяљ  ФiхеO$;w0г0'1a1ђ8Є ,”^€”^Ј^€Ј^М^€М^м^€м^ќ^€ќ^^€^<_€<_P`€P`da€daxb€xbŒc€Œc c€ ce&Qe ce ce ce ce c530.:8@>і Ъ18 Œ џџџџ008@ float3ѓђё@float4ѓђёR Positionё  tintё occPosRad (intShNoiseExё8p2vђёb positionё clipё  tintё ,occPosRad <intShNoiseExё"LOpaque_vs_v2f @@float4x4     Ъ18 џџџџfalse ; } ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 8 #line 16 #line 20 #line 135 #line 140 #line 147 BlendState NoBlend_BlendState { BlendEnable [ 0 ] = FALSE ; } ; BlendState Alpha_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; BlendState Additive_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = ONE ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = Src_Alpha ; DestBlendAlpha [ 0 ] = ONE ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; #line 180 BlendState ParticleBlended_BlendState { BlendEnable [ 0 ] = TRUE ; SrcBlend [ 0 ] = ONE ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ] = ONE ; DestBlendAlpha [ 0 ] = Inv_Src_Alpha ; BlendOpAlpha [ 0 ] = ADD ; BlendEnable [ 1 ] = FALSE ; } ; DepthStencilState NoDepthTest_NoDepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState NoDepthTest_DepthWrite_DepthState { DepthEnable = FALSE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_NoDepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = Zero ; DepthFunc = Less ; StencilEnable = FALSE ; } ; DepthStencilState DepthTest_DepthWrite_DepthState { DepthEnable = TRUE ; DepthWriteMask = All ; DepthFunc = Less ; StencilEnable = FALSE ; } ; RasterizerState NoCull_RasterizerState { CullMode = None ; } ; RasterizerState BackFaceCull_RasterizerState { CullMode = Back ; FrontCounterClockwise = TRUE ; } ; RasterizerState FrontFaceCull_RasterizerState { CullMode = Front ; FrontCounterClockwise = TRUE ; } ; #line 243 #line 246 #line 264 #line 269 sampler PointClampSampler : register ( s8 ) { Filter = Min_Mag_Mip_Point ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearClampSampler : register ( s9 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; } ; sampler LinearWrapTSampler : register ( s10 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Clamp ; AddressV = Wrap ; AddressW = Clamp ; } ; sampler LinearWrapSampler : register ( s11 ) { Filter = Min_Mag_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler PointWrapSampler : register ( s12 ) { Filter = Min_Mag_Mip_Point ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; } ; sampler AnisoClampSampler : register ( s13 ) { Filter = ANISOTROPIC ; AddressU = Clamp ; AddressV = Clamp ; AddressW = Clamp ; MaxAnisotropy = 16 ; } ; sampler LinearWrapAnisoSampler : register ( s14 ) { Filter = ANISOTROPIC ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; sampler PointWrapAnisoSampler : register ( s15 ) { Filter = Min_Mag_Point_Mip_Linear ; AddressU = Wrap ; AddressV = Wrap ; AddressW = Wrap ; MaxAnisotropy = 16 ; } ; static const float kSRGB = 2.2f ; #line 358 #line 373 #line 408 #line 427 #line 435 #line 498 #line 506 float4x4 view : view ; float4x4 projection : projection ; float4x4 viewprojection : viewprojection ; float4 eyeDirectionWS : eyeDirectionWS ; float4 eyePositionWS : eyePositionWS ; float4 eyePositionOS : eyePositionOS ; float4 cameraNear : cameraNearFar ; float4x4 modelIT : modelit ; float4x4 model : model ; float4x4 modelViewProj : modelviewproj ; #line 521 float cameraNearTimesFar ; float cameraFarMinusNear ; float4 cameraNearFar ; #line 527 float ConvertDepth ( float depth ) { #line 532 float viewSpaceZ = - ( cameraNearTimesFar / ( depth * cameraFarMinusNear - cameraNearFar . y ) ) ; return viewSpaceZ ; } #line 587 #line 592 static const float4x4 SCALE_BIAS = float4x4 ( float4 ( 0.5 , 0.0 , 0.0 , 0.5 ) , float4 ( 0.0 , - 0.5 , 0.0 , 0.5 ) , #line 598 float4 ( 0.0 , 0.0 , 0.5 , 0.5 ) , float4 ( 0.0 , 0.0 , 0.0 , 1.0 ) ) ; #line 613 #line 635 #line 642 #line 57 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 67 struct p2v { #line 71 float3 Position : POSITION ; float3 tint : TEXCOORD0 ; float4 occPosRad : TEXCOORD1 ; float4 intShNoiseEx : TEXCOORD2 ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; #line 91 void Opaque_vs_main ( in p2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { Opaque_vs_OUT . position = mul ( float4 ( Opaque_vs_IN . Position . xyz , 1 ) , modelViewProj ) ; Opaque_vs_OUT . clip = Opaque_vs_OUT . position ; Opaque_vs_OUT . tint = Opaque_vs_IN . tint ; Opaque_vs_OUT . occPosRad = Opaque_vs_IN . occPosRad ; Opaque_vs_OUT . intShNoiseEx = Opaque_vs_IN . intShNoiseEx ; } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 114 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 123 float4 prjPlaneU ; float4 prjPlaneV ; float4 prjPlaneOrigin ; float4 colorBias ; float4 colorScale ; #line 137 Texture2D < float4 > depthTex ; #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh" float4 stencil_texDim_depthScale_mask ; float4 stencil_testColors ; Texture2DMS < uint2 > stencilTexMSAA ; float GetStencilMask ( float2 uv ) { float2 uvScaled = uv * stencil_texDim_depthScale_mask . xy ; uint3 uvInt = uint3 ( uint2 ( uvScaled ) , 0 ) ; uint mask = uint ( stencil_texDim_depthScale_mask . w ) ; uint stencil = stencilTexMSAA . Load ( uvInt , 0 ) . g ; uint stencilMasked = stencil & mask ; float d = float ( stencilMasked ) ; return d * stencil_texDim_depthScale_mask . z ; } #line 41 #line 44 #line 143 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fx" #line 146 Texture2D < float4 > lightTex ; #line 153 Texture3D < float4 > noise3dTexture ; float4 metaballs0 ; float4 metaballs1 ; float4 metaballs2 ; float4 metaballs3 ; float4 metaballs4 ; float4 metaballs5 ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; float4 clip : TEXCOORD0 ; float3 tint : TEXCOORD1 ; float4 occPosRad : TEXCOORD2 ; float4 intShNoiseEx : TEXCOORD3 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 184 float myTexDepth2D ( Texture2D < float4 > depthTex , float2 uv ) { #line 190 return depthTex . Sample ( PointClampSampler , uv ) . r ; } #line 198 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float2 uv = 0.5 * ( Opaque_fs_IN . clip . xy / Opaque_fs_IN . clip . w + 1.0 ) ; float2 uvOrig = uv ; uv . y = 1.0f - uv . y ; float3 occPos = Opaque_fs_IN . occPosRad . xyz ; float rad = Opaque_fs_IN . occPosRad . w ; float intensity = Opaque_fs_IN . intShNoiseEx . x ; float sharpness = Opaque_fs_IN . intShNoiseEx . y ; float noise = Opaque_fs_IN . intShNoiseEx . z ; float exclude = Opaque_fs_IN . intShNoiseEx . w ; float lightTap = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 1 ) ; float excludeOverride = saturate ( lightTex . Sample ( LinearClampSampler , uv ) . a - 2 ) ; float depthTap = myTexDepth2D ( depthTex , uv ) ; #line 218 float z = ConvertDepth ( depthTap ) ; #line 223 float stencilTap = GetStencilMask ( uv ) ; #line 227 float3 projPointer = prjPlaneOrigin . xyz + ( 1 - uvOrig . x ) * prjPlaneU . xyz + ( 1 - uvOrig . y ) * prjPlaneV . xyz ; float3 camSpace = z * projPointer ; float3 pos = eyePositionWS . xyz - camSpace ; #line 234 float irradience = 1.0 ; #line 239 #line 243 float3 noiseTap = noise3dTexture . Sample ( LinearWrapSampler , 0.25 * pos ) . rgb ; pos += noise * ( 2 * noiseTap - 1 ) ; #line 258 float metaval = 0 ; { float4 meta = metaballs0 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs1 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs2 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs3 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs4 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } { float4 meta = metaballs5 ; float3 metaPos = meta . xyz ; float metaRad = meta . w ; float3 to = metaPos - pos ; to . y *= 0.25 ; float dist = length ( to ) ; metaval += metaRad / ( 0.0001 + dist * dist ) ; } const float kMetaCutoff = 0.70 ; metaval = saturate ( kMetaCutoff + lerp ( 7.0 , 30.0 , lightTap ) * ( metaval - ( 1 - kMetaCutoff ) ) ) ; irradience = saturate ( 1 - metaval ) ; irradience = lerp ( 1.0 - intensity * ( 0.5 + 0.5 * lightTap ) , 1.0 , irradience ) ; #line 291 float exclusion = ( 1 - excludeOverride ) * ( abs ( exclude - stencilTap * 256.0 ) < 0.75 ) ; irradience = lerp ( irradience , 1 , exclusion ) ; Opaque_fs_OUT . color . rgb = lerp ( float3 ( 1.0 , 1.0 , 1.0 ) , float3 ( irradience , irradience , irradience ) , Opaque_fs_IN . tint ) ; Opaque_fs_OUT . color . rgb = colorScale . rgb * Opaque_fs_OUT . color . rgb + colorBias . rgb ; } technique11 Opaque { pass pass0 { SetVertexShader ( CompileShader ( vs_5_0 , Opaque_vs_main ( ) ) ) ; SetPixelShader ( CompileShader ( ps_5_0 , Opaque_fs_main ( ) ) ) ; SetBlendState ( ourBlendState , float4 ( 0.0f , 0.0f , 0.0f , 0.0f ) , 0xFFFFFFFF ) ; SetDepthStencilState ( ourDepthStencilState , 0 ) ; SetRasterizerState ( ourRasterState ) ; } } #line 335 D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.shD:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.sh '1(a1w0)Pг0D3DSHDRЄ `џџџџ /ё ! %фOpaque_vs_main"Q €џџџџџџmodelViewProjШiљЇџџџџ /ёMigratory.shD:/Dev/TGC/Journey/head/Journey/Data/Shaders/d3dutils.shўяўяџџџџџџџџџџ џџџџџџџџџџOpaque_vs_mainnoneџџџџw 1 Ž?\T ,hЄ ` ŒOpaque_vs_mainnone-К.ёЄ `џџџџЄџџџџџџџџ'ƒзD:\Dev\TGC\Journey\head\Journey\shaderD:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Occlusion_vs__Occlusion_fs__43200.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/”.1aŒ^;1*М/ѕFJЙЖO­ЌЉT/LinkInfo/names/src/headerblock/src/files/d:\dev\tgc\journey\head\journey\shader" мQ3 АФw8к1€'0œ8(,,DG'FE(!)*+,-./0123456789:;<=>?"  #$%&@ABDCHPOSITIONTEXCOORDPEffectVariantPMaterialOpaqueVertexST   '№раРА €p`P@5(55ј5р5Ш5А5˜5€6h6P687 1XhX1PБXZP!PAP‘ PБ XŽXXœP1 X‘XСXёXЁXбXXБXсHИP! PAP!PaXЄXІ PQ PБ Pё PБ 4 Pё @ hЈPhИa`€ПС$ AДЧžц№жЊДžŠтюњ†’ždP>Œ&vРњиЦЪЊИА AФР