RYHPTф54611o2М(.™y#ф5 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&/Р0:0Р0V 00F0ь3€0_A€0u5€0УA€0к00g9 00w@0т “4 Ѕ( П  ж ё ЭCx0 0ј0F˜07A˜0L0f 0x0Ž0х0ІM˜0ЎN˜0ШO00Й(0иQ˜0ыR˜0O00ћ$X0)81@=HOLbPy‡ŽЂИЩлю  $ (3 ,K 0\ 4p 8€ <› @Г Р Dв ч  X X` 0  F 0c @u PŽ hž lМ Ф М Ф М Ф М Ф "М Ф Ъ г о ђ ( 8# @I Pq ` bМ Ф !М Ф (М Ф (М Ф 9Б М ‡Л Щ 3 Щю ж ц #ј   X X Tж # . D P \ d l t ~  Ž œ Ј Г Л Ц *а +о )(ѕ ,8 HМ Ф -М Ф .М Ф CМ Ф X - E ] u  /– Ж 0(. 8г М Ф ;М Ф Qј ‡ !\1Y;K&Z1] X;ozŽ:‡šG0ЂDР МDр иD єD  D@ ,D` KD€ jD  ˆR˜2ЊAМ?Э> М Ф 3пXђ X$)X>(PXd,uEМ Ф 4Š›ЌJ(ЙI,4ХH`бˆо є  L  $ 03 0= K[lKvK$ 0ˆ 0‘ Ї БРе х ѓ  $ 0) 0< 0J 0V b 0k 0u 0} 0‹ 0š 0ЇНЮOн(ђ,pМ Ф  Xo Ž:+6>VxL@М PX [kwƒWМ Ф U –(ž,Ї А НЫй ‡(PCharPContextSwitchPInt32PLightTypePRenderDataTypePSceneRenderPassTypePShadowCasterTypePTextureFormatBasePUInt16PUInt32PUInt8boolfloatCD3D11_BLEND_DESCCD3D11_DEPTH_STENCIL_DESCCD3D11_RASTERIZER_DESCD3D11_DEPTH_STENCILOP_DESCD3D11_RENDER_TARGET_BLEND_DESCPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPArrayPAssetReferencePBasePClassDescriptorPClusterHeaderPClusterHeaderBasePClusterHeaderD3D11PContextVariantFoldingTablePEffectPEffectVariantPInstanceListHeaderPMaterialPMaterialSwitchPNodeContextPParameterBufferPParameterBufferBasePSamplerStatePSamplerStateBasePSamplerStateD3D11PSceneRenderPassPShaderPShaderComputeProgramPShaderComputeProgramD3D11PShaderFragmentProgramPShaderFragmentProgramD3D11PShaderGeometryProgramPShaderGeometryProgramD3D11PShaderParameterCaptureBufferLocationPShaderParameterCaptureBufferLocationSizePShaderParameterCaptureBufferLocationTypeConstantBufferPShaderParameterCaptureBufferSamplerPShaderParameterCaptureBufferTexture2DPShaderParameterCaptureBufferTextureBasePShaderParameterCaptureBufferTextureCubeMapPShaderParameterDefinitionPShaderPassPShaderPassBasePShaderPassD3D11PShaderPassInfoPShaderPassParameterLocationTypesBasePShaderPassParameterLocationTypesConstantBufferPShaderPassStateBasePShaderPassStateD3D11PShaderProgramBasePShaderProgramD3D11PShaderStreamDefinitionPShaderVertexProgramPShaderVertexProgramD3D11PSharrayPStreamInputDescD3D11PStreamInputLayoutD3D11PStringPTexture2DPTexture2DBasePTexture2DD3D11PTextureCommonBasePTextureCubeMapPTextureCubeMapBasePTextureCubeMapD3D11m_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_formatm_memoryTypem_mipmapCountm_maxMipLevelm_textureFlagsH Ј˜рp(р hh  (( @@PP!@@%ьЮ€lЧ&'P,$X`ј$.РР6P0 DH0EƘ€ЎHQ@Data/Shaders/S_Dune_vs__Dune_fs__60264.cgfx#0A490EEE2B999DC08C87056061F4DEDC#materialData/Shaders/S_Dune_vs__Dune_fs__60264.fx#0A490EEE2B999DC08C87056061F4DEDC #line 1 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #define D_PLATFORM_D3D11x64 #define DETAIL // 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 // ------------------------------------------------------------------------------------------------------------------------------------------ #define GLOBAL_LEAN_AND_MEAN #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 55 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" // From Phyre: float4 eyePositionWS : eyePositionWS ; float4x4 modelViewProj : modelviewproj ; // From environment: float4 l_d; float4 dunecell_ll; float terrainScale; float dunecell_width; float4 texAoParams; // Point around which LOD drops: float4 focusPos; // Global dynamic sand texture params: float4 sandBias; float4 sandScale; // Strength of the sparkle mask needs to vary with FOV. float sparkleMaskMult; // Input/output structs struct a2v { float4 position : POSITION; float4 normal : NORMAL; }; struct v2f { float4 position : POSITION_OUT; HALF4 uv : TEXCOORD0; // xy: whole terrain, zw: terrain cell HALF4 normalF : TEXCOORD1; // xyz: normal, w: normal detail fade HALF4 eyeLd : TEXCOORD2; // xyz: eye, w: log(depth) HALF3 sandSpec : TEXCOORD3; // xy: sand uvs, z: specular mult float4 worldPos : TEXCOORD4; }; float noiseFadeScalar;//-0.02 float noiseFadeBias;//1.5 float F0spec;// = 0.01; // Skin is 0.028; float sandSpecScalar;// 1.f // Program entry void main( in a2v IN, out v2f OUT ) { float3 pos = IN.position.xyz; OUT.position = MatrixMul( modelViewProj, float4( pos, 1.0 ) ); OUT.uv.xy = float2( 1 - (terrainScale * pos.x + 0.5) / 256.0, ( terrainScale * pos.z + 0.5 ) / 512.0 ); OUT.uv.zw = ( pos.xz - dunecell_ll.xy ) / dunecell_width; OUT.uv.zw *= texAoParams.x;//127.0 / 128.0; OUT.uv.zw += texAoParams.y;//1.0 / 256.0; OUT.eyeLd.xyz = eyePositionWS.xyz - pos; OUT.eyeLd.w = 1.0 * sparkleMaskMult * log( length( OUT.eyeLd.xyz ) ); // OUT.eyeLd.w = 0.165 * log( length( OUT.eyeLd.xyz ) ); OUT.normalF.xyz = normalize(IN.normal.xyz); half noiseFade = saturate( noiseFadeBias + length( OUT.eyeLd.xyz ) * noiseFadeScalar ); OUT.normalF.w = noiseFade; OUT.worldPos.xyz = IN.position.xyz; #ifdef DETAIL OUT.sandSpec.xy = (float2( pos.x, pos.z ) + sandBias.xy) * sandScale.xy; float focusDist = length( focusPos.xz - pos.xz ); // Calculate Fresnel. half3 Ln = normalize( l_d.xyz ); half3 Vn = normalize( OUT.eyeLd.xyz ); half3 Hn = normalize( Vn + Ln ); float base = saturate( 1.0 - dot( Vn, Hn ) ); float exponential = pow( base, 5.0 ); float fresnelSpec = exponential + F0spec * (1.0 - exponential); OUT.sandSpec.z = noiseFade * fresnelSpec * sandSpecScalar; #else OUT.sandSpec.xyz = float3(0,0,0); #endif } // ------------------------------------------------------------------------------------------------------------------------------------------ #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 152 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" // Env params: HALF4 l_c,l_s; #ifndef PHYRE3X_ENABLED HALF4 l_d; #endif HALF velvetInt, velvetRatio; float4 heightBiasUv; float4 heightScaleUv; // Global dynamic sand params: D_DECLARE_TEXTURE2D_4(sandTexture); D_DECLARE_TEXTURE2D_4(sandMipTexture); D_DECLARE_TEXTURE_CUBE_4(sandHiIrrCube); D_DECLARE_TEXTURE2D_4(duneTexture); //D_DECLARE_TEXTURE2D_4(duneColorTexture); D_DECLARE_TEXTURE2D_4(texAo); struct v2f { float4 position : POSITION_OUT; #if defined(D_PLATFORM_GNM) centroid HALF4 uv : TEXCOORD0_CENTROID; // xy: whole terrain, zw: terrain cell centroid HALF4 normalF : TEXCOORD1_CENTROID; // xyz: normal, w: normal detail fade centroid HALF4 eyeLd : TEXCOORD2_CENTROID; // xyz: eye, w: log(depth) centroid HALF3 sandSpec : TEXCOORD3_CENTROID; // xy: sand uvs, z: specular mult #else HALF4 uv : TEXCOORD0_CENTROID; // xy: whole terrain, zw: terrain cell HALF4 normalF : TEXCOORD1_CENTROID; // xyz: normal, w: normal detail fade HALF4 eyeLd : TEXCOORD2_CENTROID; // xyz: eye, w: log(depth) HALF3 sandSpec : TEXCOORD3_CENTROID; // xy: sand uvs, z: specular mult #endif float4 worldPos : TEXCOORD4; }; struct f2f { NATIVECOLOR REGFORMAT HALF4 color : FINAL_COLOR; }; float duneAoScalar; float duneMipTapBias; float duneSpecularCorrection; //---------------------------------------------- // Program entry //---------------------------------------------- NATIVECOLOR void main( in v2f IN, out f2f OUT ) { half3 Ln = normalize( l_d.xyz ); half3 Nn = normalize( IN.normalF.xyz ); half3 Vn = normalize( IN.eyeLd.xyz ); half3 Hn = normalize( Vn + Ln ); half specularPow = l_s.w; // Grab the base dune color from a texture HALF2 colorShadowUv = IN.uv.xy; // There's an idea to use the dynamic sand texture as the edge mask. //half duneEdgeTap = 2.0 * (D_H1_SAMPLE_POINT_WRAP_ANISO_TEXTURE( sandTexture, IN.sandSpec.xy ) - 0.5); half duneEdgeTap = 2.0 * ((half)SAMPLETEX( sandTexture, IN.sandSpec.xy, POINT, WRAP, OFF ) - 0.5); //half4 colorShadowTap = D_H4_SAMPLE_SRGBTEXTURE( duneTexture, colorShadowUv ); half4 colorShadowTap = (half4)SAMPLETEX( duneTexture, colorShadowUv, ANISO, CLAMP, ON ); half3 duneColor = colorShadowTap.rgb; half shadow = saturate( 10 * (colorShadowTap.a - (0.04*duneEdgeTap + 0.23) ) ); // Grab AO HALF2 aoUv = IN.uv.zw; half aoTap = D_H1_SAMPLE_TEXTURE( texAo, aoUv ); half aoVal = 2.0 * aoTap; HALF2 sandUV = IN.sandSpec.xy; //half nx = 2.0 * (D_H1_SAMPLE_WRAP_ANISO_TEXTURE( sandTexture, sandUV + 0.000 ) - 0.5); //half nz = 2.0 * (D_H1_SAMPLE_WRAP_ANISO_TEXTURE( sandTexture, sandUV + 0.125 ) - 0.5); half nx = 2.0 * ((half)SAMPLETEX( sandTexture, sandUV + HALF2(0.125, 0.000), ANISO, WRAP, OFF ) - 0.5); half nz = 2.0 * ((half)SAMPLETEX( sandTexture, sandUV + HALF2(0.000, 0.125), ANISO, WRAP, OFF ) - 0.5); // Resampling the same texture works okay, except at certain angles. // Our shader would be faster if we could do a single sample of a 2 channel texture, though. half noiseFade = IN.normalF.w; half3 Nnt = 25.0 * Nn + noiseFade * half3( nx, 0, nz ); half3 Nnv = 4.0 * Nn + noiseFade * half3( nx, 0, nz ); half3 Nns = normalize( 1.5 * Nn + noiseFade * half3( nx, 0, nz ) ); half4 lightCubeTap = D_SAMPLE_TEXTURE_CUBE( sandHiIrrCube, Nnt ); half diffuseInt = lightCubeTap.a; half3 fillColor = lightCubeTap.rgb; half velv = saturate( 1 - (abs( dot( Vn, Nnv ) ) - 0.12) ); duneColor *= 1 + duneAoScalar * aoVal * velv; // Pull the specular term from the vert shader. half specInt = IN.sandSpec.z; // Specular effects can look really bad where the texture isn't being sampled at // full resolution. This lets us mask out those areas. #if defined(D_PLATFORM_GCM) half mipTap = D_H1_SAMPLE_WRAP_ANISO_TEXTURE( sandMipTexture, IN.uv.xy * float2( 2048.0, 4096.0 ) ); #elif defined(D_PLATFORM_GXM) half mipTap = 0.75; #else //half mipTap = D_H1_SAMPLE_WRAP_ANISO_TEXTURE( sandMipTexture, IN.uv.xy * float2( 2048.0, 4096.0 ) ) + duneMipTapBias; half mipTap = (half)SAMPLETEX( sandMipTexture, IN.uv.xy * float2( 2048.0, 4096.0 ), ANISO, WRAP, OFF ) + duneMipTapBias; #endif half logDepth = IN.eyeLd.w; half sparkleMask = saturate( 8.0 * (logDepth - mipTap) ); half velvInt = sparkleMask * velvetInt; half diffuseMult = shadow * diffuseInt; half specularMult = diffuseMult * ( specInt * powsafe( saturate( dot( Hn, Nns ) ), specularPow ) + velvInt * powsafe( 1 - abs( dot( Vn, normalize(Nns+duneSpecularCorrection*Vn) ) ), velvetRatio ) ); OUT.color.rgb = duneColor * (l_c.rgb * diffuseMult + l_s.rgb * specularMult + fillColor * aoVal); // Encode occlusion in the alpha channel (offset by 1 to avoid interaction with alpha test). OUT.color.a = 1 + diffuseMult; // Useful for testing the duneColor texture // float2 heightUV = (float2( IN.worldPos.x, IN.worldPos.z ) + heightBiasUv.xy) * heightScaleUv.xy; // float3 testColor = D_H4_SAMPLE_TEXTURE( duneColorTexture, heightUV ).rgb; // OUT.color.rgb = testColor; // OUT.color.a = 1.0f; // OUT.color.rgb = half3( nx, 0, nz ); ///OUT.color.rgb = l_c.rgb * diffuseMult + l_s.rgb * specularMult ;//+ fillColor * aoVal; #if 0 // helps visualizing how the sand texture works bool blueCol = 0; if( (IN.sandSpec.x>0.48f) && (IN.sandSpec.x<0.52f) && (IN.sandSpec.y>0.48f) && (IN.sandSpec.y<0.52f)) { blueCol = 1; } OUT.color.a = 1.0f; OUT.color.rgb = half3( frac(floor(4.f*IN.sandSpec.xy)/4.f), blueCol ); #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_Dune_vs__Dune_fs__60264.fx#0`1DETAIL0#GGGGGGGG€?€?€?€?€?€A€A€?PlЧ`05spDXBCН#x‡T4K%KАЄ"щ%ulЧ8Є\  ШdRDEFd <џџA<RD11< ($ |    ВЩџџџџ еџџџџ ф џџџџ ђџџџџ ўџџџџ LinearClampSamplerPointWrapSamplerAnisoClampSamplerLinearWrapAnisoSamplersandTexturesandMipTexturesandHiIrrCubeduneTexturetexAo$GlobalsЋЋЋ(``|џџџџџџџџ |џџџџџџџџГШџџџџџџџџь Шџџџџџџџџњ0@џџџџџџџџ8pШџџџџџџџџ<€ШџџџџџџџџH|џџџџџџџџU”|џџџџџџџџd ШџџџџџџџџpАШџџџџџџџџyРШџџџџџџџџ‚аШџџџџџџџџŒр|џџџџџџџџœф|џџџџџџџџЌш|џџџџџџџџКь|џџџџџџџџС№|џџџџџџџџаШџџџџџџџџдШџџџџџџџџи |џџџџџџџџт$|џџџџџџџџю0Шџџџџџџџџћ@Шџџџџџџџџ P|џџџџџџџџT|џџџџџџџџ%X|џџџџџџџџcameraNearTimesFarfloatЋЋЋscameraFarMinusNearcameraNearFarfloat4СeyePositionWSmodelViewProjfloat4x4ЋЋЋl_ddunecell_llterrainScaledunecell_widthtexAoParamsfocusPossandBiassandScalesparkleMaskMultnoiseFadeScalarnoiseFadeBiasF0specsandSpecScalarl_cl_svelvetIntvelvetRatioheightBiasUvheightScaleUvduneAoScalarduneMipTapBiasduneSpecularCorrectionMicrosoft (R) HLSL Shader Compiler 10.1ISGNА˜ЄЄЄЄЄSV_POSITIONTEXCOORDЋЋЋOSGN, SV_TARGETЋЋSHEX0PЬjˆYFŽ Z` Z` Z` Z`XpUUXpUUX0pUUXpUUXpUUbђbђbђbreђ h6@ЭЬ @ "F‚ F‚ D"8тV‰ FFD 8rF‚FFD‚:8rіFтV ‚––D‚:8тVі6‚:€ E‹Т€CU‚F–s` 6@П‚: 8‚:@@E‹Т€CUђFF~` /ђF8ђFђF6rF+@ 8‚:@ з#=‚:@…k>6‚:€A‚::8 :4 @3 @€?E‹Т€CU‚ц–s` 6‚:8‚:@@62F Т@>E‹Т€CU‚ц –s`6B@П‚:*8:@@ 2F@>E‹Т€CU‚F–s`6@П‚: 8B:@@6‚:8 rF@ШAШAШA+"@8rFіrFF8 rF@€@€@€@+‚@8Rі8"::rFF8 rF@Р?Р?Р?+‚@8Rі8"::rFF‚FFD‚:8rFіE‹‚€CUrFF~` /rF8 rF@ЭЬ @ЭЬ @ЭЬ @rFE‹‚€CU‚FF~` 6‚:6‚:6rF+@"FF6B€A4"*6B@ТѕН"*6"€A 4 @3 @€?+"@8B: € 8 * 8rF6*8 b@E€EE‹Т€CU"–~`"€ 6B:6"€A"*8"@A4"@3"@€?8" € 8 :"–F4"@3"@€?4"@м$4(/"8":"8" +B@8в ІŠ rF†‚FFD‚:8rіF‚FF6:€A4‚: 6‚:€AB:*4B*@м$4(/B*8B*€ B*8B*"*8" 8rF‚ 8тV‰ тV 8rіFтV 8r –F+"@‚  >STAT”†j SPDBЎMicrosoft C/C++ MSF 7.00 DSW€UРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ8Рџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ <џџџџ”.1_Œ^˜џ{ŒЌфJ–|Їё* oмQ3 = 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 ; } ; ЦZLшнZЉыАЮНщdP…h&uƒ’цШQС!AЙA$5Ў9ЮVUИшŒjuнжš#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 5 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 516 #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 54 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" float4 eyePositionWS : eyePositionWS ; float4x4 modelViewProj : modelviewproj ; float4 l_d ; float4 dunecell_ll ; float terrainScale ; float dunecell_width ; float4 texAoParams ; #line 68 float4 focusPos ; #line 71 float4 sandBias ; float4 sandScale ; float sparkleMaskMult ; #line 77 struct Opaque_vs_a2v { float4 position : POSITION ; float4 normal : NORMAL ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 uv : TEXCOORD0 ; float4 normalF : TEXCOORD1 ; float4 eyeLd : TEXCOORD2 ; float3 sandSpec : TEXCOORD3 ; float4 worldPos : TEXCOORD4 ; } ; #line 94 float noiseFadeScalar ; float noiseFadeBias ; float F0spec ; float sandSpecScalar ; #line 101 void Opaque_vs_main ( in Opaque_vs_a2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { float3 pos = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . position = mul ( float4 ( pos , 1.0 ) , modelViewProj ) ; Opaque_vs_OUT . uv . xy = float2 ( 1 - ( terrainScale * pos . x + 0.5 ) / 256.0 , ( terrainScale * pos . z + 0.5 ) / 512.0 ) ; Opaque_vs_OUT . uv . zw = ( pos . xz - dunecell_ll . xy ) / dunecell_width ; Opaque_vs_OUT . uv . zw *= texAoParams . x ; Opaque_vs_OUT . uv . zw += texAoParams . y ; Opaque_vs_OUT . eyeLd . xyz = eyePositionWS . xyz - pos ; Opaque_vs_OUT . eyeLd . w = 1.0 * sparkleMaskMult * log ( length ( Opaque_vs_OUT . eyeLd . xyz ) ) ; Opaque_vs_OUT . normalF . xyz = normalize ( Opaque_vs_IN . normal . xyz ) ; float noiseFade = saturate ( noiseFadeBias + length ( Opaque_vs_OUT . eyeLd . xyz ) * noiseFadeScalar ) ; Opaque_vs_OUT . normalF . w = noiseFade ; Opaque_vs_OUT . worldPos . xyz = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . sandSpec . xy = ( float2 ( pos . x , pos . z ) + sandBias . xy ) * sandScale . xy ; float focusDist = length ( focusPos . xz - pos . xz ) ; #line 126 float3 Ln = normalize ( l_d . xyz ) ; float3 Vn = normalize ( Opaque_vs_OUT . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float base = saturate ( 1.0 - dot ( Vn , Hn ) ) ; float exponential = pow ( base , 5.0 ) ; float fresnelSpec = exponential + F0spec * ( 1.0 - exponential ) ; Opaque_vs_OUT . sandSpec . z = noiseFade * fresnelSpec * sandSpecScalar ; #line 135 } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 151 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 155 float4 l_c , l_s ; #line 158 float velvetInt , velvetRatio ; float4 heightBiasUv ; float4 heightScaleUv ; #line 165 Texture2D < float4 > sandTexture ; Texture2D < float4 > sandMipTexture ; TextureCube < float4 > sandHiIrrCube ; Texture2D < float4 > duneTexture ; Texture2D < float4 > texAo ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; #line 180 float4 uv : TEXCOORD0_CENTROID ; float4 normalF : TEXCOORD1_CENTROID ; float4 eyeLd : TEXCOORD2_CENTROID ; float3 sandSpec : TEXCOORD3_CENTROID ; float4 worldPos : TEXCOORD4 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 196 float duneAoScalar ; float duneMipTapBias ; float duneSpecularCorrection ; #line 204 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float3 Ln = normalize ( l_d . xyz ) ; float3 Nn = normalize ( Opaque_fs_IN . normalF . xyz ) ; float3 Vn = normalize ( Opaque_fs_IN . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float specularPow = l_s . w ; #line 214 float2 colorShadowUv = Opaque_fs_IN . uv . xy ; #line 219 float duneEdgeTap = 2.0 * ( ( float ) sandTexture . Sample ( PointWrapSampler , Opaque_fs_IN . sandSpec . xy ) - 0.5 ) ; #line 222 float4 colorShadowTap = ( float4 ) pow ( duneTexture . Sample ( AnisoClampSampler , colorShadowUv ) , kSRGB ) ; float3 duneColor = colorShadowTap . rgb ; float shadow = saturate ( 10 * ( colorShadowTap . a - ( 0.04 * duneEdgeTap + 0.23 ) ) ) ; #line 227 float2 aoUv = Opaque_fs_IN . uv . zw ; float aoTap = texAo . Sample ( LinearClampSampler , aoUv ) . x ; float aoVal = 2.0 * aoTap ; #line 232 float2 sandUV = Opaque_fs_IN . sandSpec . xy ; #line 236 float nx = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.125 , 0.000 ) ) - 0.5 ) ; float nz = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.000 , 0.125 ) ) - 0.5 ) ; #line 243 float noiseFade = Opaque_fs_IN . normalF . w ; float3 Nnt = 25.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nnv = 4.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nns = normalize ( 1.5 * Nn + noiseFade * float3 ( nx , 0 , nz ) ) ; float4 lightCubeTap = float4 ( pow ( sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . xyz , 2.2f ) , sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . a ) ; float diffuseInt = lightCubeTap . a ; float3 fillColor = lightCubeTap . rgb ; float velv = saturate ( 1 - ( abs ( dot ( Vn , Nnv ) ) - 0.12 ) ) ; duneColor *= 1 + duneAoScalar * aoVal * velv ; #line 257 float specInt = Opaque_fs_IN . sandSpec . z ; #line 266 float mipTap = ( float ) sandMipTexture . Sample ( LinearWrapAnisoSampler , Opaque_fs_IN . uv . xy * float2 ( 2048.0 , 4096.0 ) ) + duneMipTapBias ; float logDepth = Opaque_fs_IN . eyeLd . w ; float sparkleMask = saturate ( 8.0 * ( logDepth - mipTap ) ) ; float velvInt = sparkleMask * velvetInt ; float diffuseMult = shadow * diffuseInt ; float specularMult = diffuseMult * ( specInt * pow ( max ( saturate ( dot ( Hn , Nns ) ) , 0.00000000000001 ) , specularPow ) + velvInt * pow ( max ( 1 - abs ( dot ( Vn , normalize ( Nns + duneSpecularCorrection * Vn ) ) ) , 0.00000000000001 ) , velvetRatio ) ) ; Opaque_fs_OUT . color . rgb = duneColor * ( l_c . rgb * diffuseMult + l_s . rgb * specularMult + fillColor * aoVal ) ; #line 283 Opaque_fs_OUT . color . a = 1 + diffuseMult ; #line 307 } 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 340 ўяўяm0D:\Dev\TGC\Journey\head\Journey\shaderd:\dev\tgc\journey\head\journey\shader#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 5 BlendState ourBlendState { BlendEnable [ 0 ] = FALSE ; BlendEnable [ 1 ] = FALSE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ]т0€зфŒОЪе)(т0x žG/()B< КG КGMicrosoft (R) HLSL Shader Compiler 10.1j=hlslFlags0x4005hlslTargetps_5_0hlslEntryOpaque_fs_mainhlslDefines /DDETAIL=1 /DPHYRE_D3DFX=16АPPр Opaque_fs_main2> Opaque_fs_INPрPPрPPрPP рP PрPPрPPрPPрPP рP P$рP$P(рP(P,рP,P0рP0P4рP4P8рP8P<рP<P@рP@PDрPDPHрPHPLрPPPPрPTPTрPXPXрP\6> Opaque_fs_OUTPрPPрPPрPP рP *>LnPLДPLДPLД *>NnP˜ŒP˜ŒP˜Œ*>VnPфL PфL $PфL (*>HnPLt PL< PL” 2>@specularPowPdЬ 2>@duneEdgeTapPмД,6>colorShadowTapPLј0PLј4PLј8P LЌ<2>duneColorP`а 0P`а 4P`а 8.>@shadowP4p.>@aoTapPt,.>@aoValP  ,.> sandUVPЄШ@PЄШD*>@nxPDP*>@nzPфpX2>@noiseFadePјА<*>NntPld@Pl€DPl˜H*>NnvPќ4`Pќ4dPќ4h*>NnsPиьPиьPиь2>lightCubeTapPTмPPTмTPTмXP ”œ<2>@diffuseIntPЈˆ<2>fillColorPМtPPМtTPМtX*>@velvPМ P@.>@specIntPX P@.>@mipTapPЬ ,D.>@logDepthPр ШH2>@sparkleMaskPh  D.>@velvIntPˆ ЈD2>@diffuseMultPЄ Œ2>@specularMultPL@.> kSRGBPє€R џџџџџџkSRGBє0њDэЁФPоо!ƒ]ЧHџ…—/щ/30ђД 0($р[€р[ „ єЯ€єЯЯ€Я,Я€,ЯLа€Lаhа€hа|а€|а˜б€˜бДб€ДбШб€Шбфв€фвв€вв€в0в€0вLг€Lгdл€dлл€лЄл€ЄлРл€Рлмо€моо€оо€о8о€8оLп€Lп`р€`рtр€tрр€рЌр€ЌрФр€Фррр€ррќр€ќрр€р4ф€4ф`ф€`фtх€tхш€шЄь€ЄьЬь€Ььјь€јь ь€ ь(ь€(ьDэ€Dэlэ€lэ˜э€˜эЌэ€ЌэШэ€Шэфѓ€фѓјѕ€јѕ ѕ€ ѕ4ѕ€4ѕPѕ€Pѕlі€lі”і€”іЈі€ЈіФі€Фірі€ріќї€ќї$ї€$ї8ї€8їTї€Tїpї€pїŒї€ŒїЈї€ЈїМї€Мїиљ€иљљ€љљ€љ@љ€@љTљ€Tљ€љ€€љ”њ€”њЈћ€ЈћМ§€М§а§€а§ь§€ь§ §€ § §€ §4 §€4 §P §€P §h §€h §„ §€„ §  §€  §М ў€М ўа ў€а ў№ ў€№ ў ў€ ў( ў€( ўD €D X €X € €€ Ќ €Ќ Ь €Ь р €р ј €ј  € 0 €0 L €L h €h ˆ €ˆ Є ‚Є Р ‚Р м ‚м ј ‚ј  ‚ ( ‚( D ‚D X ‚X t ‚t ˆ ‚ˆ Ј ‚Ј Ф ‚Ф р ‚р є ‚є  ‚ , ‚, D ‚D ` ‚` x ‚x ” ‚” А ‚А Ф ‚Ф ф ‚ф ј ‚ј ‚0‚0L€Ll€lŒ€ŒЈ€ЈФ€Фр€рќ€ќ€,5€,5)')')'<:<:<::8:8:8'#'%'%'%! |+r|!x|!x|zs.gs(qs(qs(q- +]Y]=N]=U]&W]&W]Y][][D>D B2 0~Rr~"t~z~z~|~Rr~"t~z~z~|2 0AA*?A?A?@@)>@>@>@>N%N5JN)JN)JNJNLNLNLЉ*\Љ$kЉ$kЉ$kЉoЁЉ Ї) '+ )GCG)8G#:G#:G#AG#AGCGCGEGE202)2020201 /˜Qƒ˜…˜–/ -B,<B,<B$>B@B@-+-+(799N^^^^dD^>^2`2`2`'b!d!dddy‰‰‰‰‰‹z1GzKbz1bzfvz1vz#x1!/1!/іL Hp˜Фрј(HhˆЌа№ 0TЈђё   Ъ18ь џџџџ\\d@float4ѓђё@ float3ѓђёr positionё uvѓђё  normalFђё 0eyeLd @sandSpecё LworldPosё"\Opaque_fs_v2f color"Opaque_fs_f2f @float2ѓђё @ ђё        Јђё   Ъ18 џџџџ#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 516 #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 54 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" float4 eyePositionWS : eyePositionWS ; float4x4 modelViewProj : modelviewproj ; float4 l_d ; float4 dunecell_ll ; float terrainScale ; float dunecell_width ; float4 texAoParams ; #line 68 float4 focusPos ; #line 71 float4 sandBias ; float4 sandScale ; float sparkleMaskMult ; #line 77 struct Opaque_vs_a2v { float4 position : POSITION ; float4 normal : NORMAL ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 uv : TEXCOORD0 ; float4 normalF : TEXCOORD1 ; float4 eyeLd : TEXCOORD2 ; float3 sandSpec : TEXCOORD3 ; float4 worldPos : TEXCOORD4 ; } ; #line 94 float noiseFadeScalar ; float noiseFadeBias ; float F0spec ; float sandSpecScalar ; #line 101 void Opaque_vs_main ( in Opaque_vs_a2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { float3 pos = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . position = mul ( float4 ( pos , 1.0 ) , modelViewProj ) ; Opaque_vs_OUT . uv . xy = float2 ( 1 - ( terrainScale * pos . x + 0.5 ) / 256.0 , ( terrainScale * pos . z + 0.5 ) / 512.0 ) ; Opaque_vs_OUT . uv . zw = ( pos . xz - dunecell_ll . xy ) / dunecell_width ; Opaque_vs_OUT . uv . zw *= texAoParams . x ; Opaque_vs_OUT . uv . zw += texAoParams . y ; Opaque_vs_OUT . eyeLd . xyz = eyePositionWS . xyz - pos ; Opaque_vs_OUT . eyeLd . w = 1.0 * sparkleMaskMult * log ( length ( Opaque_vs_OUT . eyeLd . xyz ) ) ; Opaque_vs_OUT . normalF . xyz = normalize ( Opaque_vs_IN . normal . xyz ) ; float noiseFade = saturate ( noiseFadeBias + length ( Opaque_vs_OUT . eyeLd . xyz ) * noiseFadeScalar ) ; Opaque_vs_OUT . normalF . w = noiseFade ; Opaque_vs_OUT . worldPos . xyz = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . sandSpec . xy = ( float2 ( pos . x , pos . z ) + sandBias . xy ) * sandScale . xy ; float focusDist = length ( focusPos . xz - pos . xz ) ; #line 126 float3 Ln = normalize ( l_d . xyz ) ; float3 Vn = normalize ( Opaque_vs_OUT . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float base = saturate ( 1.0 - dot ( Vn , Hn ) ) ; float exponential = pow ( base , 5.0 ) ; float fresnelSpec = exponential + F0spec * ( 1.0 - exponential ) ; Opaque_vs_OUT . sandSpec . z = noiseFade * fresnelSpec * sandSpecScalar ; #line 135 } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 151 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 155 float4 l_c , l_s ; #line 158 float velvetInt , velvetRatio ; float4 heightBiasUv ; float4 heightScaleUv ; #line 165 Texture2D < float4 > sandTexture ; Texture2D < float4 > sandMipTexture ; TextureCube < float4 > sandHiIrrCube ; Texture2D < float4 > duneTexture ; Texture2D < float4 > texAo ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; #line 180 float4 uv : TEXCOORD0_CENTROID ; float4 normalF : TEXCOORD1_CENTROID ; float4 eyeLd : TEXCOORD2_CENTROID ; float3 sandSpec : TEXCOORD3_CENTROID ; float4 worldPos : TEXCOORD4 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 196 float duneAoScalar ; float duneMipTapBias ; float duneSpecularCorrection ; #line 204 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float3 Ln = normalize ( l_d . xyz ) ; float3 Nn = normalize ( Opaque_fs_IN . normalF . xyz ) ; float3 Vn = normalize ( Opaque_fs_IN . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float specularPow = l_s . w ; #line 214 float2 colorShadowUv = Opaque_fs_IN . uv . xy ; #line 219 float duneEdgeTap = 2.0 * ( ( float ) sandTexture . Sample ( PointWrapSampler , Opaque_fs_IN . sandSpec . xy ) - 0.5 ) ; #line 222 float4 colorShadowTap = ( float4 ) pow ( duneTexture . Sample ( AnisoClampSampler , colorShadowUv ) , kSRGB ) ; float3 duneColor = colorShadowTap . rgb ; float shadow = saturate ( 10 * ( colorShadowTap . a - ( 0.04 * duneEdgeTap + 0.23 ) ) ) ; #line 227 float2 aoUv = Opaque_fs_IN . uv . zw ; float aoTap = texAo . Sample ( LinearClampSampler , aoUv ) . x ; float aoVal = 2.0 * aoTap ; #line 232 float2 sandUV = Opaque_fs_IN . sandSpec . xy ; #line 236 float nx = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.125 , 0.000 ) ) - 0.5 ) ; float nz = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.000 , 0.125 ) ) - 0.5 ) ; #line 243 float noiseFade = Opaque_fs_IN . normalF . w ; float3 Nnt = 25.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nnv = 4.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nns = normalize ( 1.5 * Nn + noiseFade * float3 ( nx , 0 , nz ) ) ; float4 lightCubeTap = float4 ( pow ( sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . xyz , 2.2f ) , sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . a ) ; float diffuseInt = lightCubeTap . a ; float3 fillColor = lightCubeTap . rgb ; float velv = saturate ( 1 - ( abs ( dot ( Vn , Nnv ) ) - 0.12 ) ) ; duneColor *= 1 + duneAoScalar * aoVal * velv ; #line 257 float specInt = Opaque_fs_IN . sandSpec . z ; #line 266 float mipTap = ( float ) sandMipTexture . Sample ( LinearWrapAnisoSampler , Opaque_fs_IN . uv . xy * float2 ( 2048.0 , 4096.0 ) ) + duneMipTapBias ; float logDepth = Opaque_fs_IN . eyeLd . w ; float sparkleMask = saturate ( 8.0 * ( logDepth - mipTap ) ) ; float velvInt = sparkleMask * velvetInt ; float diffuseMult = shadow * diffuseInt ; float specularMult = diffuseMult * ( specInt * pow ( max ( saturate ( dot ( Hn , Nns ) ) , 0.00000000000001 ) , specularPow ) + velvInt * pow ( max ( 1 - abs ( dot ( Vn , normalize ( Nns + duneSpecularCorrection * Vn ) ) ) , 0.00000000000001 ) , velvetRatio ) ) ; Opaque_fs_OUT . color . rgb = duneColor * ( l_c . rgb * diffuseMult + l_s . rgb * specularMult + fillColor * aoVal ) ; #line 283 Opaque_fs_OUT . color . a = 1 + diffuseMult ; #line 307 } 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 340 D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh (Pщ/—/)30D3DSHDR0 `џџџџ /ё˜PiI­б1IUХ!сљёq‰ ™)  €@ @ $0<HT`lx„œЈДРЬи%ДOpaque_fs_main&Q џџџџџџ џџLinearClampSampler&Q џџџџџџ џџPointWrapSampler&Q џџџџџџ џџAnisoClampSampler*Q џџџџџџџџLinearWrapAnisoSamplerR џџџџџџkSRGBQpџџџџџџl_dQџџџџџџl_cQџџџџџџl_sQ џџџџџџvelvetIntQ$џџџџџџvelvetRatioQџџџџџџџџsandTexture"QџџџџџџџџsandMipTexture"QџџџџџџџџsandHiIrrCubeQџџџџџџџџduneTextureQџџџџџџџџ /ёџџџџtexAo"QPџџџџџџduneAoScalar"QTџџџџџџduneMipTapBias*QXџџџџџџduneSpecularCorrectionџџџџџџџџџџ џџџџџџџџџџ0 ` а Opaque_fs_mainnoneџџџџw 1 Ž?\T ,0 ` а Opaque_fs_mainnone-К.ё0 `џџџџ0џџџџџџџџ'yУD:\Dev\TGC\Journey\head\Journey\shaderD:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.shўяўя”.1_Œ^˜џ{ŒЌфJ–|Їё* oT/LinkInfo/names/src/headerblock/src/files/d:\dev\tgc\journey\head\journey\shader" мQ3 А$'8­0€G/ d(ј,€S21RQ3 456789:;<=>?@ABCDEFGHIJ! "#$%&'()*+,-./0KLMONPT8   рє№XX№pр€$ ”а РААР арфшь №€ $p0`@P\T 0@1  рє№XX№pр€$ ”а РААР арфшь №€ $p0`@P\T 0@1 џџџџ4hџџџџ4€џџџџ48џџџџ4Pџџџџ4џџџџ4Аџџџџ4˜џџџџ4(џџџџ4@џџџџ4рџџџџ4јџџџџ4Шџџџџ4 4h4€484P4џџџџ4А4˜џџџџ4( 4@џџџџ4р 4јџџџџ4Ш 4@№p@р€@$@ ”@а @РА@АР@ а@р@ф@ш@ь@ №@@€@ @$@p0@`@@P@\T@XXG4@џџџџG4(џџџџG4џџџџG4јџџџџG4рџџџџG4ШџџџџG4АџџџџG4˜џџџџB4€џџџџB4hџџџџD4PџџџџB48џџџџB4 џџџџ„1 @0AnisoClampSamplerF0specLinearClampSamplerLinearWrapAnisoSamplerLinearWrapSamplerLinearWrapTSamplerPointClampSamplerPointWrapAnisoSamplerPointWrapSamplerduneAoScalarduneMipTapBiasduneSpecularCorrectionduneTexturedunecell_lldunecell_widthfocusPosheightBiasUvheightScaleUvl_cl_dl_smodelViewProjnoiseFadeBiasnoiseFadeScalarsandBiassandHiIrrCubesandMipTexturesandScalesandSpecScalarsandTexturesparkleMaskMultterrainScaletexAotexAoParamsvelvetIntvelvetRatioнСџџЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅ ЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅЅ05sv05spOpaque_fs_mainOpaque_vs_main8jЪ њNORMALPOSITION|Ў`05svDXBCŽЈ§Р\м}Ђ[ЗDАи§,S|Ў8ќLиtRDEFМh<ўџA”RD11< ($ \$GlobalsЋЋЋ\€`Идџџџџџџџџјдџџџџџџџџ  џџџџџџџџD  џџџџџџџџR0@lџџџџџџџџp џџџџџџџџ”€ џџџџџџџџ дџџџџџџџџ­”дџџџџџџџџМ  џџџџџџџџША џџџџџџџџбР џџџџџџџџка џџџџџџџџфрдџџџџџџџџєфдџџџџџџџџшдџџџџџџџџьдџџџџџџџџ№дџџџџџџџџ( џџџџџџџџ, џџџџџџџџ0 дџџџџџџџџ:$дџџџџџџџџF0 џџџџџџџџS@ џџџџџџџџaPдџџџџџџџџnTдџџџџџџџџ}XдџџџџџџџџcameraNearTimesFarfloatЋЋЋЫcameraFarMinusNearcameraNearFarfloat4eyePositionWSmodelViewProjfloat4x4ЋЋЋ`l_ddunecell_llterrainScaledunecell_widthtexAoParamsfocusPossandBiassandScalesparkleMaskMultnoiseFadeScalarnoiseFadeBiasF0specsandSpecScalarl_cl_svelvetIntvelvetRatioheightBiasUvheightScaleUvduneAoScalarduneMipTapBiasduneSpecularCorrectionMicrosoft (R) HLSL Shader Compiler 10.1ISGNH8APOSITIONNORMALOSGNА˜ЄЄЄЄЄSV_POSITIONTEXCOORDЋЋЋSHEXЬPѓjˆYFŽ _r_rgђ eђ eђ eђ er er h6rF6‚@€? FFŽ " FFŽ B FFŽ ‚ FFŽ +‚@8  €  @? @€C6 €A : 8‚* € ‚:@?" :@D62F€ €A2†F2FV… 82F€ Т V… 6rF€ArFF‚ 8" € @€?‚FFK‚:/‚:8‚:@r1?8‚ :"FFD"8r VF"FFK"8"€ "*€ 4"@3"@€?6‚ 6r FR 82 †F€  F‚ F‚ D 8в‰ ‚FFD‚:8rіFв ‚††D‚:8віF†6 €A @€?4 @3 @€?6B@€?8B *8  8  8 *6B €AB*@€?8B*:€ * 8 8B   € 6r F>STAT”E=SPDBžMicrosoft C/C++ MSF 7.00 DSO\LРџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ8рџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ <џџџџ”.1_Œ^ЂѕEДм8F‰:ўВ™{jмQ3 = 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 ; } ; ЦZ{€ ўLш4ЇџuP…h&A$}ЕgŸС!AЙ’ц5Ў#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 5 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 516 #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 54 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" float4 eyePositionWS : eyePositionWS ; float4x4 modelViewProj : modelviewproj ; float4 l_d ; float4 dunecell_ll ; float terrainScale ; float dunecell_width ; float4 texAoParams ; #line 68 float4 focusPos ; #line 71 float4 sandBias ; float4 sandScale ; float sparkleMaskMult ; #line 77 struct Opaque_vs_a2v { float4 position : POSITION ; float4 normal : NORMAL ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 uv : TEXCOORD0 ; float4 normalF : TEXCOORD1 ; float4 eyeLd : TEXCOORD2 ; float3 sandSpec : TEXCOORD3 ; float4 worldPos : TEXCOORD4 ; } ; #line 94 float noiseFadeScalar ; float noiseFadeBias ; float F0spec ; float sandSpecScalar ; #line 101 void Opaque_vs_main ( in Opaque_vs_a2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { float3 pos = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . position = mul ( float4 ( pos , 1.0 ) , modelViewProj ) ; Opaque_vs_OUT . uv . xy = float2 ( 1 - ( terrainScale * pos . x + 0.5 ) / 256.0 , ( terrainScale * pos . z + 0.5 ) / 512.0 ) ; Opaque_vs_OUT . uv . zw = ( pos . xz - dunecell_ll . xy ) / dunecell_width ; Opaque_vs_OUT . uv . zw *= texAoParams . x ; Opaque_vs_OUT . uv . zw += texAoParams . y ; Opaque_vs_OUT . eyeLd . xyz = eyePositionWS . xyz - pos ; Opaque_vs_OUT . eyeLd . w = 1.0 * sparkleMaskMult * log ( length ( Opaque_vs_OUT . eyeLd . xyz ) ) ; Opaque_vs_OUT . normalF . xyz = normalize ( Opaque_vs_IN . normal . xyz ) ; float noiseFade = saturate ( noiseFadeBias + length ( Opaque_vs_OUT . eyeLd . xyz ) * noiseFadeScalar ) ; Opaque_vs_OUT . normalF . w = noiseFade ; Opaque_vs_OUT . worldPos . xyz = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . sandSpec . xy = ( float2 ( pos . x , pos . z ) + sandBias . xy ) * sandScale . xy ; float focusDist = length ( focusPos . xz - pos . xz ) ; #line 126 float3 Ln = normalize ( l_d . xyz ) ; float3 Vn = normalize ( Opaque_vs_OUT . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float base = saturate ( 1.0 - dot ( Vn , Hn ) ) ; float exponential = pow ( base , 5.0 ) ; float fresnelSpec = exponential + F0spec * ( 1.0 - exponential ) ; Opaque_vs_OUT . sandSpec . z = noiseFade * fresnelSpec * sandSpecScalar ; #line 135 } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 151 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 155 float4 l_c , l_s ; #line 158 float velvetInt , velvetRatio ; float4 heightBiasUv ; float4 heightScaleUv ; #line 165 Texture2D < float4 > sandTexture ; Texture2D < float4 > sandMipTexture ; TextureCube < float4 > sandHiIrrCube ; Texture2D < float4 > duneTexture ; Texture2D < float4 > texAo ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; #line 180 float4 uv : TEXCOORD0_CENTROID ; float4 normalF : TEXCOORD1_CENTROID ; float4 eyeLd : TEXCOORD2_CENTROID ; float3 sandSpec : TEXCOORD3_CENTROID ; float4 worldPos : TEXCOORD4 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 196 float duneAoScalar ; float duneMipTapBias ; float duneSpecularCorrection ; #line 204 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float3 Ln = normalize ( l_d . xyz ) ; float3 Nn = normalize ( Opaque_fs_IN . normalF . xyz ) ; float3 Vn = normalize ( Opaque_fs_IN . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float specularPow = l_s . w ; #line 214 float2 colorShadowUv = Opaque_fs_IN . uv . xy ; #line 219 float duneEdgeTap = 2.0 * ( ( float ) sandTexture . Sample ( PointWrapSampler , Opaque_fs_IN . sandSpec . xy ) - 0.5 ) ; #line 222 float4 colorShadowTap = ( float4 ) pow ( duneTexture . Sample ( AnisoClampSampler , colorShadowUv ) , kSRGB ) ; float3 duneColor = colorShadowTap . rgb ; float shadow = saturate ( 10 * ( colorShadowTap . a - ( 0.04 * duneEdgeTap + 0.23 ) ) ) ; #line 227 float2 aoUv = Opaque_fs_IN . uv . zw ; float aoTap = texAo . Sample ( LinearClampSampler , aoUv ) . x ; float aoVal = 2.0 * aoTap ; #line 232 float2 sandUV = Opaque_fs_IN . sandSpec . xy ; #line 236 float nx = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.125 , 0.000 ) ) - 0.5 ) ; float nz = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.000 , 0.125 ) ) - 0.5 ) ; #line 243 float noiseFade = Opaque_fs_IN . normalF . w ; float3 Nnt = 25.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nnv = 4.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nns = normalize ( 1.5 * Nn + noiseFade * float3 ( nx , 0 , nz ) ) ; float4 lightCubeTap = float4 ( pow ( sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . xyz , 2.2f ) , sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . a ) ; float diffuseInt = lightCubeTap . a ; float3 fillColor = lightCubeTap . rgb ; float velv = saturate ( 1 - ( abs ( dot ( Vn , Nnv ) ) - 0.12 ) ) ; duneColor *= 1 + duneAoScalar * aoVal * velv ; #line 257 float specInt = Opaque_fs_IN . sandSpec . z ; #line 266 float mipTap = ( float ) sandMipTexture . Sample ( LinearWrapAnisoSampler , Opaque_fs_IN . uv . xy * float2 ( 2048.0 , 4096.0 ) ) + duneMipTapBias ; float logDepth = Opaque_fs_IN . eyeLd . w ; float sparkleMask = saturate ( 8.0 * ( logDepth - mipTap ) ) ; float velvInt = sparkleMask * velvetInt ; float diffuseMult = shadow * diffuseInt ; float specularMult = diffuseMult * ( specInt * pow ( max ( saturate ( dot ( Hn , Nns ) ) , 0.00000000000001 ) , specularPow ) + velvInt * pow ( max ( 1 - abs ( dot ( Vn , normalize ( Nns + duneSpecularCorrection * Vn ) ) ) , 0.00000000000001 ) , velvetRatio ) ) ; Opaque_fs_OUT . color . rgb = duneColor * ( l_c . rgb * diffuseMult + l_s . rgb * specularMult + fillColor * aoVal ) ; #line 283 Opaque_fs_OUT . color . a = 1 + diffuseMult ; #line 307 } 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 340 ўяўяm0D:\Dev\TGC\Journey\head\Journey\shaderd:\dev\tgc\journey\head\journey\shader#line 1 "D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fx" #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 5 BlendState ourBlendState { BlendEnable [ 0 ] = FALSE ; BlendEnable [ 1 ] = FALSE ; SrcBlend [ 0 ] = Src_Alpha ; DestBlend [ 0 ] = Inv_Src_Alpha ; BlendOp [ 0 ] = ADD ; SrcBlendAlpha [ 0 ]т0€цЗсŒОЪе)(т0x žG/()B< КG КGMicrosoft (R) HLSL Shader Compiler 10.1j=hlslFlags0x4005hlslTargetvs_5_0hlslEntryOpaque_vs_mainhlslDefines /DDETAIL=1 /DPHYRE_D3DFX=16АDDˆ Opaque_vs_main2> Opaque_vs_INPˆDPˆDPˆDP ˆD PˆDPˆDPˆDPˆD6> Opaque_vs_OUTPXˆD\PLˆDPPPˆDTPTˆDXP@ˆD@PDˆDDPHˆDHP0ˆD0P4ˆD4P8ˆD8P<ˆD<P ˆD P$ˆD$P(ˆD(P,ˆD,PˆDPˆDPˆDPˆDPˆDPˆDPˆDP ˆD P€@P€@P0јаP4јаP8ја*>posPœ4Pœ|Pœ42>@noiseFadePˆD*>LnPHhPHhPHh *>VnP”8 P”8$P”8(*>HnPќPќœPќа *>@baseP„L2>@exponentialPp2>@fresnelSpecPxє0њDэЁФPоо!ƒ]ЧHџ…—/щ/30ђЬ Š„ˆg€ˆgœi€œiАi€Аiаi€аi№i€№ii€i0j€0jDj€Djdj€dj€j€€jœj€œjДj€Дjаj€аj№j€№j j€ j(k€(kDk€Dk`k€`k€m€€m n€ nРp€Рpиp€иpјq€јqq€q4q€4qHq€Hq\q€\qxq€xq”s€”sАs€АsФs€Фsрt€рtќt€ќtt€t0t€0tPt€Ptlt€ltˆu€ˆuœw€œwАz€Аzаz€аz№~€№~~€~(~€(~H€Hd€dx€x”€€”€А€€А€Ь€€Ь€р€€р€ќ€ќ€0€0L€Lh€h„‚€„‚˜‚€˜‚Д‚€Д‚а‚€а‚ь‚€ь‚ƒ€ƒ ƒ€ ƒ<ƒ€<ƒ\ƒ€\ƒx„€x„”„€”„Дˆ€ДˆШˆ€Шˆ0 .M KM KM KM KM K‚(S‚.C‚.I‚,S‚(S‚(S‚Yn‚Yt‚W~P!;P!;PN0.0.=#;=#;h!5h?dh?dh9fh9fh!fO%MO%MO%Mm2Wm2Wm2im"imkmk-+DBg'Rg%e)')')';9;9;9'#'%'%'%5#151515353,*,*,*,*,*F2BF2BF'DFDM$:M$Kі< Dh€ Фш(HlДа Ъ18Ќ џџџџ@@H@float4ѓђё* positionё normalѓђё" Opaque_vs_a2v@ float3ѓђёr positionё uvѓђё  normalFђё 0eyeLd @sandSpecё LworldPosё"\Opaque_vs_v2f    @@float4x4     @  Ъ18 џџџџ#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 516 #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 54 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" float4 eyePositionWS : eyePositionWS ; float4x4 modelViewProj : modelviewproj ; float4 l_d ; float4 dunecell_ll ; float terrainScale ; float dunecell_width ; float4 texAoParams ; #line 68 float4 focusPos ; #line 71 float4 sandBias ; float4 sandScale ; float sparkleMaskMult ; #line 77 struct Opaque_vs_a2v { float4 position : POSITION ; float4 normal : NORMAL ; } ; struct Opaque_vs_v2f { float4 position : SV_POSITION ; float4 uv : TEXCOORD0 ; float4 normalF : TEXCOORD1 ; float4 eyeLd : TEXCOORD2 ; float3 sandSpec : TEXCOORD3 ; float4 worldPos : TEXCOORD4 ; } ; #line 94 float noiseFadeScalar ; float noiseFadeBias ; float F0spec ; float sandSpecScalar ; #line 101 void Opaque_vs_main ( in Opaque_vs_a2v Opaque_vs_IN , out Opaque_vs_v2f Opaque_vs_OUT ) { float3 pos = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . position = mul ( float4 ( pos , 1.0 ) , modelViewProj ) ; Opaque_vs_OUT . uv . xy = float2 ( 1 - ( terrainScale * pos . x + 0.5 ) / 256.0 , ( terrainScale * pos . z + 0.5 ) / 512.0 ) ; Opaque_vs_OUT . uv . zw = ( pos . xz - dunecell_ll . xy ) / dunecell_width ; Opaque_vs_OUT . uv . zw *= texAoParams . x ; Opaque_vs_OUT . uv . zw += texAoParams . y ; Opaque_vs_OUT . eyeLd . xyz = eyePositionWS . xyz - pos ; Opaque_vs_OUT . eyeLd . w = 1.0 * sparkleMaskMult * log ( length ( Opaque_vs_OUT . eyeLd . xyz ) ) ; Opaque_vs_OUT . normalF . xyz = normalize ( Opaque_vs_IN . normal . xyz ) ; float noiseFade = saturate ( noiseFadeBias + length ( Opaque_vs_OUT . eyeLd . xyz ) * noiseFadeScalar ) ; Opaque_vs_OUT . normalF . w = noiseFade ; Opaque_vs_OUT . worldPos . xyz = Opaque_vs_IN . position . xyz ; Opaque_vs_OUT . sandSpec . xy = ( float2 ( pos . x , pos . z ) + sandBias . xy ) * sandScale . xy ; float focusDist = length ( focusPos . xz - pos . xz ) ; #line 126 float3 Ln = normalize ( l_d . xyz ) ; float3 Vn = normalize ( Opaque_vs_OUT . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float base = saturate ( 1.0 - dot ( Vn , Hn ) ) ; float exponential = pow ( base , 5.0 ) ; float fresnelSpec = exponential + F0spec * ( 1.0 - exponential ) ; Opaque_vs_OUT . sandSpec . z = noiseFade * fresnelSpec * sandSpecScalar ; #line 135 } #line 0 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh" #line 642 #line 151 "D:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fx" #line 155 float4 l_c , l_s ; #line 158 float velvetInt , velvetRatio ; float4 heightBiasUv ; float4 heightScaleUv ; #line 165 Texture2D < float4 > sandTexture ; Texture2D < float4 > sandMipTexture ; TextureCube < float4 > sandHiIrrCube ; Texture2D < float4 > duneTexture ; Texture2D < float4 > texAo ; struct Opaque_fs_v2f { float4 position : SV_POSITION ; #line 180 float4 uv : TEXCOORD0_CENTROID ; float4 normalF : TEXCOORD1_CENTROID ; float4 eyeLd : TEXCOORD2_CENTROID ; float3 sandSpec : TEXCOORD3_CENTROID ; float4 worldPos : TEXCOORD4 ; } ; struct Opaque_fs_f2f { float4 color : SV_TARGET0 ; } ; #line 196 float duneAoScalar ; float duneMipTapBias ; float duneSpecularCorrection ; #line 204 void Opaque_fs_main ( in Opaque_fs_v2f Opaque_fs_IN , out Opaque_fs_f2f Opaque_fs_OUT ) { float3 Ln = normalize ( l_d . xyz ) ; float3 Nn = normalize ( Opaque_fs_IN . normalF . xyz ) ; float3 Vn = normalize ( Opaque_fs_IN . eyeLd . xyz ) ; float3 Hn = normalize ( Vn + Ln ) ; float specularPow = l_s . w ; #line 214 float2 colorShadowUv = Opaque_fs_IN . uv . xy ; #line 219 float duneEdgeTap = 2.0 * ( ( float ) sandTexture . Sample ( PointWrapSampler , Opaque_fs_IN . sandSpec . xy ) - 0.5 ) ; #line 222 float4 colorShadowTap = ( float4 ) pow ( duneTexture . Sample ( AnisoClampSampler , colorShadowUv ) , kSRGB ) ; float3 duneColor = colorShadowTap . rgb ; float shadow = saturate ( 10 * ( colorShadowTap . a - ( 0.04 * duneEdgeTap + 0.23 ) ) ) ; #line 227 float2 aoUv = Opaque_fs_IN . uv . zw ; float aoTap = texAo . Sample ( LinearClampSampler , aoUv ) . x ; float aoVal = 2.0 * aoTap ; #line 232 float2 sandUV = Opaque_fs_IN . sandSpec . xy ; #line 236 float nx = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.125 , 0.000 ) ) - 0.5 ) ; float nz = 2.0 * ( ( float ) sandTexture . Sample ( LinearWrapAnisoSampler , sandUV + float2 ( 0.000 , 0.125 ) ) - 0.5 ) ; #line 243 float noiseFade = Opaque_fs_IN . normalF . w ; float3 Nnt = 25.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nnv = 4.0 * Nn + noiseFade * float3 ( nx , 0 , nz ) ; float3 Nns = normalize ( 1.5 * Nn + noiseFade * float3 ( nx , 0 , nz ) ) ; float4 lightCubeTap = float4 ( pow ( sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . xyz , 2.2f ) , sandHiIrrCube . Sample ( LinearClampSampler , Nnt ) . a ) ; float diffuseInt = lightCubeTap . a ; float3 fillColor = lightCubeTap . rgb ; float velv = saturate ( 1 - ( abs ( dot ( Vn , Nnv ) ) - 0.12 ) ) ; duneColor *= 1 + duneAoScalar * aoVal * velv ; #line 257 float specInt = Opaque_fs_IN . sandSpec . z ; #line 266 float mipTap = ( float ) sandMipTexture . Sample ( LinearWrapAnisoSampler , Opaque_fs_IN . uv . xy * float2 ( 2048.0 , 4096.0 ) ) + duneMipTapBias ; float logDepth = Opaque_fs_IN . eyeLd . w ; float sparkleMask = saturate ( 8.0 * ( logDepth - mipTap ) ) ; float velvInt = sparkleMask * velvetInt ; float diffuseMult = shadow * diffuseInt ; float specularMult = diffuseMult * ( specInt * pow ( max ( saturate ( dot ( Hn , Nns ) ) , 0.00000000000001 ) , specularPow ) + velvInt * pow ( max ( 1 - abs ( dot ( Vn , normalize ( Nns + duneSpecularCorrection * Vn ) ) ) , 0.00000000000001 ) , velvetRatio ) ) ; Opaque_fs_OUT . color . rgb = duneColor * ( l_c . rgb * diffuseMult + l_s . rgb * specularMult + fillColor * aoVal ) ; #line 283 Opaque_fs_OUT . color . a = 1 + diffuseMult ; #line 307 } 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 340 D:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.sh (Pщ/—/)30D3DSHDRЬ `џџџџ /ёx@m‘бЁE! iщIЕХ)€€  € $0<HT`lx„œЈ%ДOpaque_vs_main"Q  џџџџџџeyePositionWS"Q 0џџџџџџmodelViewProjQ pџџџџџџl_dQ €џџџџџџdunecell_ll"QџџџџџџterrainScale"Q”џџџџџџdunecell_widthQ  џџџџџџtexAoParamsQ РџџџџџџsandBiasQ аџџџџџџsandScale"QрџџџџџџsparkleMaskMult"QфџџџџџџnoiseFadeScalar"QшџџџџџџnoiseFadeBiasQьџџџџџџF0spec"Q№џџџџџџsandSpecScalarџџџџ /ёџџџџџџџџџџ џџџџџџџџџџЬ ` ДмOpaque_vs_mainnoneџџџџw 1 Ž?\T ,Ь ` ДмOpaque_vs_mainnone-К.ёЬ `џџџџЬџџџџџџџџ'yУD:\Dev\TGC\Journey\head\Journey\shaderD:\\Dev\\TGC\\Journey\\head\\Journey\\Data\\Shaders\\S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/S_Dune_vs__Dune_fs__60264.fxD:/Dev/TGC/Journey/head/Journey/Data/Shaders/Migratory.shўяўя”.1_Œ^ЂѕEДм8F‰:ўВ™{jT/LinkInfo/names/src/headerblock/src/files/d:\dev\tgc\journey\head\journey\shader" мQ3 Аф'8­0€G/аH(Ш,єJ*IH+ ,-./0123456789:;<=>?@AB! "#$%&'()CDEGFKNORMALPOSITIONPEffectVariantPMaterialOpaqueVertexNormal   '#№р$ аРА  €p`\X5@5(55ј5р5Ш5А5˜6€6h8P686 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Б 6 Pё C hЈPhИaVиПСAьŽЎшРєд„тŠАвФ”ЊВръŽœІДФlXF”.~ЄњьмЮЖAќм