-
Notifications
You must be signed in to change notification settings - Fork 123
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Far Cry 4: Fix more shaders in Shangri-La
- Loading branch information
1 parent
7981e43
commit d1d2e15
Showing
7 changed files
with
2,649 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,270 @@ | ||
// Purple in water at end of Shangri-La | ||
|
||
cbuffer CViewportShaderParameterProvider : register(b0) | ||
{ | ||
float4 _AmbientColorMultiplier : packoffset(c0); | ||
float4 _AmbientOcclusionRanges_SunOcclusionFactor : packoffset(c1); | ||
float4 _BloomAdaptationFactor : packoffset(c2); | ||
float4 _CameraDirection_FOVDeg : packoffset(c3); | ||
float4 _CameraDistances : packoffset(c4); | ||
float4 _CameraNearPlaneSize : packoffset(c5); | ||
float4 _CameraPositionFractions_ZOffsetWS : packoffset(c6); | ||
float4 _CameraPositionFractions_ZOffsetWS_Previous : packoffset(c7); | ||
float4 _CameraPosition_DistanceScale : packoffset(c8); | ||
float4 _CameraPosition_DistanceScale_Previous : packoffset(c9); | ||
float4x4 _CullingViewProjectionMatrix : packoffset(c10); | ||
float4 _DepthScale : packoffset(c14); | ||
float4 _DepthTextureRcpSize : packoffset(c15); | ||
float4 _DepthTextureScaleOffset : packoffset(c16); | ||
float4 _FogParams : packoffset(c17); | ||
float4 _FogSHB : packoffset(c18); | ||
float4 _FogSHG : packoffset(c19); | ||
float4 _FogSHR : packoffset(c20); | ||
float4 _HeightFogParams : packoffset(c21); | ||
float4x4 _InvProjectionMatrix : packoffset(c22); | ||
float4x4 _InvViewMatrix : packoffset(c26); | ||
float4x4 _ProjectionMatrix : packoffset(c30); | ||
float4 _TempSunDirection : packoffset(c34); | ||
float4x4 _ViewMatrix : packoffset(c35); | ||
float4 _ViewPoint_ShadowProjDepthMin : packoffset(c39); | ||
float4x4 _ViewProjectionMatrix : packoffset(c40); | ||
float4x4 _ViewRotProjectionMatrix : packoffset(c44); | ||
float4x4 _ViewRotProjectionMatrix_Previous : packoffset(c48); | ||
float4 _ViewportSize : packoffset(c52); | ||
float2 _MotionVectorOffsets : packoffset(c53); | ||
float3 _CameraRight : packoffset(c54); | ||
float3 _CameraUp : packoffset(c55); | ||
float3 _EnvironmentMapColorOffset : packoffset(c56); | ||
float3 _EnvironmentMapColorScale : packoffset(c57); | ||
} | ||
|
||
cbuffer COceanDampingProvider : register(b1) | ||
{ | ||
float4 _HideOceanDampingTexelOffset : packoffset(c0); | ||
float4 _WorldScaleAndOffset : packoffset(c1); | ||
} | ||
|
||
cbuffer COceanParameterProvider : register(b2) | ||
{ | ||
float4 _CornerPointsWS[4] : packoffset(c0); | ||
float4 _OceanParameters : packoffset(c4); | ||
float4 _SkyParameters : packoffset(c5); | ||
float4 _VertexAdjustments : packoffset(c6); | ||
float4 _WavesAmpHDir_ampVDirOverWL[8] : packoffset(c7); | ||
float4 _WavesDir_oneOverWL_ampHWL[8] : packoffset(c15); | ||
float4 _WavesParameters[8] : packoffset(c23); | ||
float2 _GridSize : packoffset(c31); | ||
float _OneOverWavesFade : packoffset(c31.z); | ||
float _OneOverWavesHiResFade : packoffset(c31.w); | ||
float _WaterLevel : packoffset(c32); | ||
float _WavesCrestWeightsNorm[4] : packoffset(c33); | ||
} | ||
SamplerState DampingTexture__SampObj___s : register(s0); | ||
Texture2D<float4> DampingTexture__TexObj__ : register(t0); | ||
|
||
Texture2D<float4> StereoParams : register(t125); | ||
Texture1D<float4> IniParams : register(t120); | ||
|
||
void main( | ||
float4 v0 : position0, | ||
out float4 o0 : SV_Position0, | ||
out float3 o1 : TEXCOORD0, | ||
out float3 o2 : TEXCOORD1, | ||
out float3 o3 : TEXCOORD2, | ||
out float2 o4 : TEXCOORD3) | ||
{ | ||
float4 r0,r1,r2; | ||
uint4 bitmask, uiDest; | ||
float4 fDest; | ||
|
||
r0.x = log2(abs(v0.y)); | ||
r0.x = _OceanParameters.x * r0.x; | ||
r0.x = exp2(r0.x); | ||
r0.y = 1.000000000e+000 + -v0.x; | ||
r1.xyz = _CornerPointsWS[2].xyw * r0.yyy; | ||
r0.yzw = _CornerPointsWS[0].xyw * r0.yyy; | ||
r0.yzw = v0.xxx * _CornerPointsWS[1].xyw + r0.yzw; | ||
r1.xyz = v0.xxx * _CornerPointsWS[3].xyw + r1.xyz; | ||
r1.xyz = r1.xyz * r0.xxx; | ||
r0.x = 1.000000000e+000 + -r0.x; | ||
r0.xyz = r0.xxx * r0.yzw + r1.xyz; | ||
r0.xy = r0.xy / r0.zz; | ||
r0.w = 1.000000000e+000; | ||
r0.z = _WaterLevel; | ||
r1.x = dot(r0.xyzw, _ViewProjectionMatrix._m00_m10_m20_m30); | ||
r1.y = dot(r0.xyzw, _ViewProjectionMatrix._m01_m11_m21_m31); | ||
r1.w = dot(r0.xyzw, _ViewProjectionMatrix._m03_m13_m23_m33); | ||
o0.z = dot(r0.xyzw, _ViewProjectionMatrix._m02_m12_m22_m32); | ||
o0.xyw = r1.xyw; | ||
|
||
float4 stereo = StereoParams.Load(0); | ||
r1.x += stereo.x * (r1.w - stereo.y); | ||
|
||
r2.xyzw = _DepthTextureScaleOffset.xyzw * r1.xyww; | ||
o2.z = r1.w; | ||
o2.xy = r2.xy + r2.zw; | ||
r1.xyz = _CameraPosition_DistanceScale.xyz + -r0.xyz; | ||
o3.xyz = r0.xyz; | ||
r0.xy = _WorldScaleAndOffset.zw + r0.xy; | ||
r0.xy = _WorldScaleAndOffset.xy * r0.xy; | ||
r0.xyzw = DampingTexture__TexObj__.SampleLevel(DampingTexture__SampObj___s, r0.xy, 0.000000000e+000).xyzw; | ||
o4.x = r0.y; | ||
r0.x = dot(r1.xyz, r1.xyz); | ||
r0.x = rsqrt(r0.x); | ||
o1.xyz = r1.xyz * r0.xxx; | ||
o4.y = 1.000000000e+000; | ||
return; | ||
} | ||
|
||
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
// | ||
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111 | ||
// | ||
// | ||
// Buffer Definitions: | ||
// | ||
// cbuffer CViewportShaderParameterProvider | ||
// { | ||
// | ||
// float4 _AmbientColorMultiplier; // Offset: 0 Size: 16 [unused] | ||
// float4 _AmbientOcclusionRanges_SunOcclusionFactor;// Offset: 16 Size: 16 [unused] | ||
// float4 _BloomAdaptationFactor; // Offset: 32 Size: 16 [unused] | ||
// float4 _CameraDirection_FOVDeg; // Offset: 48 Size: 16 [unused] | ||
// float4 _CameraDistances; // Offset: 64 Size: 16 [unused] | ||
// float4 _CameraNearPlaneSize; // Offset: 80 Size: 16 [unused] | ||
// float4 _CameraPositionFractions_ZOffsetWS;// Offset: 96 Size: 16 [unused] | ||
// float4 _CameraPositionFractions_ZOffsetWS_Previous;// Offset: 112 Size: 16 [unused] | ||
// float4 _CameraPosition_DistanceScale;// Offset: 128 Size: 16 | ||
// float4 _CameraPosition_DistanceScale_Previous;// Offset: 144 Size: 16 [unused] | ||
// float4x4 _CullingViewProjectionMatrix;// Offset: 160 Size: 64 [unused] | ||
// float4 _DepthScale; // Offset: 224 Size: 16 [unused] | ||
// float4 _DepthTextureRcpSize; // Offset: 240 Size: 16 [unused] | ||
// float4 _DepthTextureScaleOffset; // Offset: 256 Size: 16 | ||
// float4 _FogParams; // Offset: 272 Size: 16 [unused] | ||
// float4 _FogSHB; // Offset: 288 Size: 16 [unused] | ||
// float4 _FogSHG; // Offset: 304 Size: 16 [unused] | ||
// float4 _FogSHR; // Offset: 320 Size: 16 [unused] | ||
// float4 _HeightFogParams; // Offset: 336 Size: 16 [unused] | ||
// float4x4 _InvProjectionMatrix; // Offset: 352 Size: 64 [unused] | ||
// float4x4 _InvViewMatrix; // Offset: 416 Size: 64 [unused] | ||
// float4x4 _ProjectionMatrix; // Offset: 480 Size: 64 [unused] | ||
// float4 _TempSunDirection; // Offset: 544 Size: 16 [unused] | ||
// float4x4 _ViewMatrix; // Offset: 560 Size: 64 [unused] | ||
// float4 _ViewPoint_ShadowProjDepthMin;// Offset: 624 Size: 16 [unused] | ||
// float4x4 _ViewProjectionMatrix; // Offset: 640 Size: 64 | ||
// float4x4 _ViewRotProjectionMatrix; // Offset: 704 Size: 64 [unused] | ||
// float4x4 _ViewRotProjectionMatrix_Previous;// Offset: 768 Size: 64 [unused] | ||
// float4 _ViewportSize; // Offset: 832 Size: 16 [unused] | ||
// float2 _MotionVectorOffsets; // Offset: 848 Size: 8 [unused] | ||
// float3 _CameraRight; // Offset: 864 Size: 12 [unused] | ||
// float3 _CameraUp; // Offset: 880 Size: 12 [unused] | ||
// float3 _EnvironmentMapColorOffset; // Offset: 896 Size: 12 [unused] | ||
// float3 _EnvironmentMapColorScale; // Offset: 912 Size: 12 [unused] | ||
// | ||
// } | ||
// | ||
// cbuffer COceanDampingProvider | ||
// { | ||
// | ||
// float4 _HideOceanDampingTexelOffset;// Offset: 0 Size: 16 [unused] | ||
// float4 _WorldScaleAndOffset; // Offset: 16 Size: 16 | ||
// | ||
// } | ||
// | ||
// cbuffer COceanParameterProvider | ||
// { | ||
// | ||
// float4 _CornerPointsWS[4]; // Offset: 0 Size: 64 | ||
// float4 _OceanParameters; // Offset: 64 Size: 16 | ||
// float4 _SkyParameters; // Offset: 80 Size: 16 [unused] | ||
// float4 _VertexAdjustments; // Offset: 96 Size: 16 [unused] | ||
// float4 _WavesAmpHDir_ampVDirOverWL[8];// Offset: 112 Size: 128 [unused] | ||
// float4 _WavesDir_oneOverWL_ampHWL[8];// Offset: 240 Size: 128 [unused] | ||
// float4 _WavesParameters[8]; // Offset: 368 Size: 128 [unused] | ||
// float2 _GridSize; // Offset: 496 Size: 8 [unused] | ||
// float _OneOverWavesFade; // Offset: 504 Size: 4 [unused] | ||
// float _OneOverWavesHiResFade; // Offset: 508 Size: 4 [unused] | ||
// float _WaterLevel; // Offset: 512 Size: 4 | ||
// float _WavesCrestWeightsNorm[4]; // Offset: 528 Size: 52 [unused] | ||
// | ||
// } | ||
// | ||
// | ||
// Resource Bindings: | ||
// | ||
// Name Type Format Dim Slot Elements | ||
// ------------------------------ ---------- ------- ----------- ---- -------- | ||
// DampingTexture__SampObj__ sampler NA NA 0 1 | ||
// DampingTexture__TexObj__ texture float4 2d 0 1 | ||
// CViewportShaderParameterProvider cbuffer NA NA 0 1 | ||
// COceanDampingProvider cbuffer NA NA 1 1 | ||
// COceanParameterProvider cbuffer NA NA 2 1 | ||
// | ||
// | ||
// | ||
// Input signature: | ||
// | ||
// Name Index Mask Register SysValue Format Used | ||
// -------------------- ----- ------ -------- -------- ------- ------ | ||
// position 0 xyzw 0 NONE float xy | ||
// | ||
// | ||
// Output signature: | ||
// | ||
// Name Index Mask Register SysValue Format Used | ||
// -------------------- ----- ------ -------- -------- ------- ------ | ||
// SV_Position 0 xyzw 0 POS float xyzw | ||
// TEXCOORD 0 xyz 1 NONE float xyz | ||
// TEXCOORD 1 xyz 2 NONE float xyz | ||
// TEXCOORD 2 xyz 3 NONE float xyz | ||
// TEXCOORD 3 xy 4 NONE float xy | ||
// | ||
vs_4_0 | ||
dcl_constantbuffer cb0[44], immediateIndexed | ||
dcl_constantbuffer cb1[2], immediateIndexed | ||
dcl_constantbuffer cb2[33], immediateIndexed | ||
dcl_sampler s0, mode_default | ||
dcl_resource_texture2d (float,float,float,float) t0 | ||
dcl_input v0.xy | ||
dcl_output_siv o0.xyzw, position | ||
dcl_output o1.xyz | ||
dcl_output o2.xyz | ||
dcl_output o3.xyz | ||
dcl_output o4.xy | ||
dcl_temps 3 | ||
log r0.x, |v0.y| | ||
mul r0.x, r0.x, cb2[4].x | ||
exp r0.x, r0.x | ||
add r0.y, -v0.x, l(1.000000) | ||
mul r1.xyz, r0.yyyy, cb2[2].xywx | ||
mul r0.yzw, r0.yyyy, cb2[0].xxyw | ||
mad r0.yzw, v0.xxxx, cb2[1].xxyw, r0.yyzw | ||
mad r1.xyz, v0.xxxx, cb2[3].xywx, r1.xyzx | ||
mul r1.xyz, r0.xxxx, r1.xyzx | ||
add r0.x, -r0.x, l(1.000000) | ||
mad r0.xyz, r0.xxxx, r0.yzwy, r1.xyzx | ||
div r0.xy, r0.xyxx, r0.zzzz | ||
mov r0.w, l(1.000000) | ||
mov r0.z, cb2[32].x | ||
dp4 r1.x, r0.xyzw, cb0[40].xyzw | ||
dp4 r1.y, r0.xyzw, cb0[41].xyzw | ||
dp4 r1.w, r0.xyzw, cb0[43].xyzw | ||
dp4 o0.z, r0.xyzw, cb0[42].xyzw | ||
mov o0.xyw, r1.xyxw | ||
mul r2.xyzw, r1.xyww, cb0[16].xyzw | ||
mov o2.z, r1.w | ||
add o2.xy, r2.zwzz, r2.xyxx | ||
add r1.xyz, -r0.xyzx, cb0[8].xyzx | ||
mov o3.xyz, r0.xyzx | ||
add r0.xy, r0.xyxx, cb1[1].zwzz | ||
mul r0.xy, r0.xyxx, cb1[1].xyxx | ||
sample_l r0.xyzw, r0.xyxx, t0.xyzw, s0, l(0.000000) | ||
mov o4.x, r0.y | ||
dp3 r0.x, r1.xyzx, r1.xyzx | ||
rsq r0.x, r0.x | ||
mul o1.xyz, r0.xxxx, r1.xyzx | ||
mov o4.y, l(1.000000) | ||
ret | ||
// Approximately 33 instruction slots used | ||
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ |
Oops, something went wrong.