Rise of the Tomb Raider (3D Vision Ready Support)
  9 / 41    
[quote="mike_ar69"]Hi Helifax - am at work so can't work on it yet. I was not aware of blocks in the title menu? Do you mean the blockiness in the lamp I showed earlier?[/quote] Yes the ones like in your picture next to the lamp.;) In other news I found out the hair is actually controlled by a PS +VS combo: VS: [code] // ---- Created with 3Dmigoto v1.2.27 on Fri Jan 29 19:31:16 2016 // -- HAIR ON cbuffer cbPerScene : register(b8) { float4x4 g_mViewProj : packoffset(c0); float4x4 g_mInvViewProj : packoffset(c4); float3 g_vEye : packoffset(c8); float g_FiberAlpha : packoffset(c8.w); float2 g_WinSize : packoffset(c9); float g_FiberRadius : packoffset(c9.z); float g_fvFov : packoffset(c9.w); float2 g_zMinMax : packoffset(c10); float g_zWriteValue : packoffset(c10.z); float g_NoiseScale : packoffset(c10.w); float4 g_ScreenExtents : packoffset(c11); float3 g_dirtColor : packoffset(c12); float g_dirtLevel : packoffset(c12.w); uint g_baseGroupId : packoffset(c13); uint g_dirtGroupId : packoffset(c13.y); float g_widthCurveOverride : packoffset(c13.z); float g_alphaCurveOverride : packoffset(c13.w); float3 g_SlaveOffsetsReferencePosition : packoffset(c14); float g_SlaveOffsetsScale : packoffset(c14.w); } // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : POSITION0, float2 v1 : TEXCOORD0, out float4 o0 : SV_POSITION0, out float2 o1 : TEXCOORD0) { float4 r0,r1; uint4 bitmask, uiDest; float4 fDest; r0.xy = v0.xy; r0.z = g_zWriteValue; r0.w = 1; r1.xy = v1.xy; o0.xyzw = r0.xyzw; o1.xy = r1.xy; return; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.2.27 on Fri Jan 29 19:31:16 2016 // // // Buffer Definitions: // // cbuffer cbPerScene // { // // float4x4 g_mViewProj; // Offset: 0 Size: 64 [unused] // float4x4 g_mInvViewProj; // Offset: 64 Size: 64 [unused] // float3 g_vEye; // Offset: 128 Size: 12 [unused] // float g_FiberAlpha; // Offset: 140 Size: 4 [unused] // float2 g_WinSize; // Offset: 144 Size: 8 [unused] // float g_FiberRadius; // Offset: 152 Size: 4 [unused] // float g_fvFov; // Offset: 156 Size: 4 [unused] // float2 g_zMinMax; // Offset: 160 Size: 8 [unused] // float g_zWriteValue; // Offset: 168 Size: 4 // float g_NoiseScale; // Offset: 172 Size: 4 [unused] // float4 g_ScreenExtents; // Offset: 176 Size: 16 [unused] // float3 g_dirtColor; // Offset: 192 Size: 12 [unused] // float g_dirtLevel; // Offset: 204 Size: 4 [unused] // uint g_baseGroupId; // Offset: 208 Size: 4 [unused] // uint g_dirtGroupId; // Offset: 212 Size: 4 [unused] // float g_widthCurveOverride; // Offset: 216 Size: 4 [unused] // float g_alphaCurveOverride; // Offset: 220 Size: 4 [unused] // float3 g_SlaveOffsetsReferencePosition;// Offset: 224 Size: 12 [unused] // float g_SlaveOffsetsScale; // Offset: 236 Size: 4 [unused] // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // cbPerScene cbuffer NA NA 8 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // POSITION 0 xyzw 0 NONE float xy // TEXCOORD 0 xy 1 NONE float xy // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float xyzw // TEXCOORD 0 xy 1 NONE float xy // vs_5_0 dcl_globalFlags refactoringAllowed | skipOptimization dcl_constantbuffer cb8[11], immediateIndexed dcl_input v0.xy dcl_input v1.xy dcl_output_siv o0.xyzw, position dcl_output o1.xy dcl_temps 2 mov r0.xy, v0.xyxx mov r0.z, cb8[10].z mov r0.w, l(1.000000) mov r1.xy, v1.xyxx mov o0.xyzw, r0.xyzw mov o1.xy, r1.xyxx ret // Approximately 7 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] PS: [code] // ---- Created with 3Dmigoto v1.2.27 on Fri Jan 29 19:41:02 2016 // HAIR ON cbuffer cbPerScene : register(b8) { row_major float4x4 g_mViewProj : packoffset(c0); row_major float4x4 g_mInvViewProj : packoffset(c4); float3 g_vEye : packoffset(c8); float g_FiberAlpha : packoffset(c8.w); float2 g_WinSize : packoffset(c9); float g_FiberRadius : packoffset(c9.z); float g_fvFov : packoffset(c9.w); float2 g_zMinMax : packoffset(c10); float g_zWriteValue : packoffset(c10.z); float g_NoiseScale : packoffset(c10.w); float4 g_ScreenExtents : packoffset(c11); float3 g_dirtColor : packoffset(c12); float g_dirtLevel : packoffset(c12.w); uint g_baseGroupId : packoffset(c13); uint g_dirtGroupId : packoffset(c13.y); float g_widthCurveOverride : packoffset(c13.z); float g_alphaCurveOverride : packoffset(c13.w); float3 g_SlaveOffsetsReferencePosition : packoffset(c14); float g_SlaveOffsetsScale : packoffset(c14.w); } SamplerState g_sTrilinear_s : register(s1); Texture2D<float> g_txNoise : register(t3); Texture2D<float> g_txDirt : register(t4); StructuredBuffer<GroupRenderData> GroupRenderData : register(t5); // 3Dmigoto declarations #define cmp - Texture1D<float4> IniParams : register(t120); Texture2D<float4> StereoParams : register(t125); void main( float4 v0 : SV_POSITION0, float4 v1 : TANGENT0, float4 v2 : TEXCOORD0, float3 v3 : TEXCOORD1, float4 v4 : COLOR0, out float4 o0 : SV_Target0) { float4 r0,r1,r2,r3; uint4 bitmask, uiDest; float4 fDest; r0.x = dot(g_ScreenExtents.zz, v0.xx); r0.xz = float2(-1,-1) + r0.xx; r1.x = dot(g_ScreenExtents.ww, v0.yy); r0.yw = float2(1,1) + -r1.xx; r1.xyzw = g_WinSize.xyxy * v2.xyzw; r0.xyzw = -r0.xyzw * g_WinSize.xyxy + r1.xyzw; r0.x = dot(r0.xy, r0.xy); r0.y = dot(r0.zw, r0.zw); r0.zw = v2.xy * g_WinSize.xy + -r1.zw; r0.z = dot(r0.zw, r0.zw); r0.xyz = sqrt(r0.xyz); r0.w = cmp(r0.x >= r0.z); r0.z = cmp(r0.y >= r0.z); r1.xy = r0.wz ? 1.000000 : 0; r0.z = dot(r1.xy, r1.xy); r0.z = cmp(r0.z != 0.000000); r0.z = r0.z ? -1 : 1; r0.x = min(r0.x, r0.y); r0.x = min(1, r0.x); r0.x = r0.z * r0.x + 1; r0.x = v3.z * r0.x; r0.y = cmp(0.00776470592 < r0.x); r1.x = v1.w; r1.y = 0.5; r0.z = g_txNoise.Sample(g_sTrilinear_s, r1.xy).x; if (r0.y != 0) { r0.y = g_txDirt.Sample(g_sTrilinear_s, v3.xy).x; r0.w = (uint)v4.w; r1.x = -g_dirtLevel + 1; r0.y = -r1.x + r0.y; r1.x = g_dirtLevel + 0.00100000005; r0.y = saturate(r0.y / r1.x); r1.xyz = r0.yyy * g_dirtColor.xyz + -v4.xyz; r1.xyz = saturate(r0.yyy * r1.xyz + v4.xyz); r1.w = dot(v1.xyz, v1.xyz); r1.w = rsqrt(r1.w); r2.xyz = v1.xyz * r1.www; // Known bad code for instruction (needs manual fix): ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx r0.w = g_sTrilinear[]..swiz; r0.z = r0.w * r0.z; r0.y = cmp(0.5 < r0.y); r3.xy = g_dirtGroupId; r0.w = v4.w + r3.y; r0.y = r0.y ? r3.x : r0.w; r2.xyz = saturate(r2.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5)); r2.xyz = float3(255,255,255) * r2.xyz; r2.xyz = (uint3)r2.xyz; r2.yz = (uint2)r2.yz << int2(16,8); r0.w = mad((int)r2.x, 0x01000000, (int)r2.y); r0.w = (int)r0.w + (int)r2.z; r0.x = saturate(-r0.x * 0.5 + 1); r0.x = 255 * r0.x; r0.xy = (uint2)r0.xy; r2.x = (int)r0.w + (int)r0.x; r1.xyz = float3(127,127,63) * r1.xyz; r1.xyz = (uint3)r1.xyz; r0.xw = (uint2)r1.yz << int2(18,12); r0.x = mad((int)r1.x, 0x02000000, (int)r0.x); r0.x = (int)r0.x + (int)r0.w; r0.z = saturate(4 * r0.z); r0.z = 63 * r0.z; r0.z = (uint)r0.z; r0.z = (uint)r0.z << 6; r0.x = (int)r0.x + (int)r0.z; bitmask.y = ((~(-1 << 6)) << 0) & 0xffffffff; r2.y = (((uint)r0.y << 0) & bitmask.y) | ((uint)r0.x & ~bitmask.y); r0.xy = (uint2)v0.yx; // Needs manual fix for instruction: imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1) InterlockedAdd?(dest, value, orig_value); r0.xy = (uint2)r0.xy; r0.x = r0.x * g_WinSize.x + r0.y; r0.x = 4 * r0.x; r0.x = (uint)r0.x; } /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384 // // using 3Dmigoto v1.2.27 on Fri Jan 29 19:41:02 2016 // // // Note: shader requires additional functionality: // Early depth-stencil // // // Buffer Definitions: // // cbuffer cbPerScene // { // // row_major float4x4 g_mViewProj; // Offset: 0 Size: 64 [unused] // row_major float4x4 g_mInvViewProj; // Offset: 64 Size: 64 [unused] // float3 g_vEye; // Offset: 128 Size: 12 [unused] // float g_FiberAlpha; // Offset: 140 Size: 4 [unused] // float2 g_WinSize; // Offset: 144 Size: 8 // float g_FiberRadius; // Offset: 152 Size: 4 [unused] // float g_fvFov; // Offset: 156 Size: 4 [unused] // float2 g_zMinMax; // Offset: 160 Size: 8 [unused] // float g_zWriteValue; // Offset: 168 Size: 4 [unused] // float g_NoiseScale; // Offset: 172 Size: 4 [unused] // float4 g_ScreenExtents; // Offset: 176 Size: 16 // float3 g_dirtColor; // Offset: 192 Size: 12 // float g_dirtLevel; // Offset: 204 Size: 4 // uint g_baseGroupId; // Offset: 208 Size: 4 // uint g_dirtGroupId; // Offset: 212 Size: 4 // float g_widthCurveOverride; // Offset: 216 Size: 4 [unused] // float g_alphaCurveOverride; // Offset: 220 Size: 4 [unused] // float3 g_SlaveOffsetsReferencePosition;// Offset: 224 Size: 12 [unused] // float g_SlaveOffsetsScale; // Offset: 236 Size: 4 [unused] // // } // // Resource bind info for GroupRenderData // { // // struct HairGroupRenderData // { // // float noiseFrequency; // Offset: 0 // float noiseIntensity; // Offset: 4 // // struct curve // { // // float4 samples03; // Offset: 8 // float4 samples47; // Offset: 24 // // } thicknessCurve; // Offset: 8 // // struct curve // { // // float4 samples03; // Offset: 40 // float4 samples47; // Offset: 56 // // } alphaCurve; // Offset: 40 // // } $Element; // Offset: 0 Size: 72 // // } // // Resource bind info for HairElementsUAV // { // // struct ABufferNode // { // // uint uPackedData0; // Offset: 0 // uint uPackedData1; // Offset: 4 // uint uPackedData2_Next; // Offset: 8 // float fDepth; // Offset: 12 // // } $Element; // Offset: 0 Size: 16 // // } // // Resource bind info for HairElementsCounterUAV // { // // uint $Element; // Offset: 0 Size: 4 // // } // // // Resource Bindings: // // Name Type Format Dim Slot Elements // ------------------------------ ---------- ------- ----------- ---- -------- // g_sTrilinear sampler NA NA 1 1 // g_txNoise texture float 2d 3 1 // g_txDirt texture float 2d 4 1 // GroupRenderData texture struct r/o 5 1 // HairPixelHeadUAV UAV byte r/w 1 1 // HairElementsUAV UAV struct r/w 2 1 // HairElementsCounterUAV UAV struct r/w 3 1 // cbPerScene cbuffer NA NA 8 1 // // // // Input signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_POSITION 0 xyzw 0 POS float xyz // TANGENT 0 xyzw 1 NONE float xyzw // TEXCOORD 0 xyzw 2 NONE float xyzw // TEXCOORD 1 xyz 3 NONE float xyz // COLOR 0 xyzw 4 NONE float xyzw // // // Output signature: // // Name Index Mask Register SysValue Format Used // -------------------- ----- ------ -------- -------- ------- ------ // SV_Target 0 xyzw 0 TARGET float xyzw // ps_5_0 dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil dcl_constantbuffer cb8[14], immediateIndexed dcl_sampler s1, mode_default dcl_resource_texture2d (float,float,float,float) t3 dcl_resource_texture2d (float,float,float,float) t4 dcl_resource_structured t5, 72 dcl_uav_raw u1 dcl_uav_structured u2, 16 dcl_uav_structured u3, 4 dcl_input_ps_siv linear noperspective v0.xyz, position dcl_input_ps linear v1.xyzw dcl_input_ps linear v2.xyzw dcl_input_ps linear v3.xyz dcl_input_ps linear v4.xyzw dcl_output o0.xyzw dcl_temps 4 dp2 r0.x, cb8[11].zzzz, v0.xxxx add r0.xz, r0.xxxx, l(-1.000000, 0.000000, -1.000000, 0.000000) dp2 r1.x, cb8[11].wwww, v0.yyyy add r0.yw, -r1.xxxx, l(0.000000, 1.000000, 0.000000, 1.000000) mul r1.xyzw, v2.xyzw, cb8[9].xyxy mad r0.xyzw, -r0.xyzw, cb8[9].xyxy, r1.xyzw dp2 r0.x, r0.xyxx, r0.xyxx dp2 r0.y, r0.zwzz, r0.zwzz mad r0.zw, v2.xxxy, cb8[9].xxxy, -r1.zzzw dp2 r0.z, r0.zwzz, r0.zwzz sqrt r0.xyz, r0.xyzx ge r0.w, r0.x, r0.z ge r0.z, r0.y, r0.z and r1.xy, r0.wzww, l(0x3f800000, 0x3f800000, 0, 0) dp2 r0.z, r1.xyxx, r1.xyxx ne r0.z, r0.z, l(0.000000) movc r0.z, r0.z, l(-1.000000), l(1.000000) min r0.x, r0.y, r0.x min r0.x, r0.x, l(1.000000) mad r0.x, r0.z, r0.x, l(1.000000) mul r0.x, r0.x, v3.z lt r0.y, l(0.00776470592), r0.x mov r1.x, v1.w mov r1.y, l(0.500000) sample_indexable(texture2d)(float,float,float,float) r0.z, r1.xyxx, t3.yzxw, s1 if_nz r0.y sample_indexable(texture2d)(float,float,float,float) r0.y, v3.xyxx, t4.yxzw, s1 ftou r0.w, v4.w add r1.x, l(1.000000), -cb8[12].w add r0.y, r0.y, -r1.x add r1.x, l(0.001000), cb8[12].w div_sat r0.y, r0.y, r1.x mad r1.xyz, r0.yyyy, cb8[12].xyzx, -v4.xyzx mad_sat r1.xyz, r0.yyyy, r1.xyzx, v4.xyzx dp3 r1.w, v1.xyzx, v1.xyzx rsq r1.w, r1.w mul r2.xyz, r1.wwww, v1.xyzx ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx mul r0.z, r0.z, r0.w lt r0.y, l(0.500000), r0.y utof r3.xy, cb8[13].yxyy add r0.w, r3.y, v4.w movc r0.y, r0.y, r3.x, r0.w mad_sat r2.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000) mul r2.xyz, r2.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000) ftou r2.xyz, r2.xyzx ishl r2.yz, r2.yyzy, l(0, 16, 8, 0) imad r0.w, r2.x, l(0x01000000), r2.y iadd r0.w, r0.w, r2.z mad_sat r0.x, -r0.x, l(0.500000), l(1.000000) mul r0.x, r0.x, l(255.000000) ftou r0.xy, r0.xyxx iadd r2.x, r0.w, r0.x mul r1.xyz, r1.xyzx, l(127.000000, 127.000000, 63.000000, 0.000000) ftou r1.xyz, r1.xyzx ishl r0.xw, r1.yyyz, l(18, 0, 0, 12) imad r0.x, r1.x, l(0x02000000), r0.x iadd r0.x, r0.x, r0.w mul_sat r0.z, r0.z, l(4.000000) mul r0.z, r0.z, l(63.000000) ftou r0.z, r0.z ishl r0.z, r0.z, l(6) iadd r0.x, r0.x, r0.z bfi r2.y, l(6), l(0), r0.y, r0.x ftou r0.xy, v0.yxyy imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1) utof r0.xy, r0.xyxx mad r0.x, r0.x, cb8[9].x, r0.y mul r0.x, r0.x, l(4.000000) ftou r0.x, r0.x imm_atomic_exch r0.x, u1, r0.x, r1.x bfi r2.z, l(26), l(0), r0.x, l(0xfc000000) mov r2.w, v0.z store_structured u2.xyzw, r1.x, l(0), r2.xyzw endif mov o0.xyzw, l(1.000000,0,0,1.000000) ret // Approximately 77 instruction slots used ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ [/code] Now since the hair is at screen depth I am thinking we should correct it in the PS but I get those nasty decompile issues. I tried to fix them but wasn't able to:( In VS I tried something like: [code] float4 r28, r26; r28.x = dot(r0.xyzw, g_mViewProj._m00_m10_m20_m30); r28.y = dot(r0.xyzw, g_mViewProj._m01_m11_m21_m31); r28.z = dot(r0.xyzw, g_mViewProj._m02_m12_m22_m32); r28.w = dot(r0.xyzw, g_mViewProj._m03_m13_m23_m33); float4 stereo = StereoParams.Load(0); //r28.x -= stereo.x * (r28.w - stereo.y); r26.x = dot(r28.xyzw, g_mInvViewProj._m00_m10_m20_m30); r26.y = dot(r28.xyzw, g_mInvViewProj._m01_m11_m21_m31); r26.z = dot(r28.xyzw, g_mInvViewProj._m02_m12_m22_m32); r26.w = dot(r28.xyzw, g_mInvViewProj._m03_m13_m23_m33); o0 = r26.xyzw; [/code] But for some reason the whole hair disappares which makes me wonder r0/v0 in what space is exactly... it should just just vertexes information (but possibly is in model space?).. Also I think I am missing the Model Matrix that I need apply so I can make the transformation correctly...but what puzzles me is that even if I multiply r0 by viewProj and take it back it (inverse ViewProj) still disappears... (I tried both the dot() and the mul() operation, but get the same result... the hair disappears...)... Also looking at the PS I have no real idea where I should add the stereo correction... I wasn;t able to find out who or what makes those decals...However is not a CS...but I did find a PS that makes the area where the decals are black... and I am wondering if the decals are not actually rendered in a separate shader but part of the shader that renders that "patch" of terrain. I think is a secondary Texcoord that is used in that shader which the driver fails to stereorize...
mike_ar69 said:Hi Helifax - am at work so can't work on it yet. I was not aware of blocks in the title menu? Do you mean the blockiness in the lamp I showed earlier?


Yes the ones like in your picture next to the lamp.;)
In other news I found out the hair is actually controlled by a PS +VS combo:

VS:
// ---- Created with 3Dmigoto v1.2.27 on Fri Jan 29 19:31:16 2016
// -- HAIR ON

cbuffer cbPerScene : register(b8)
{
float4x4 g_mViewProj : packoffset(c0);
float4x4 g_mInvViewProj : packoffset(c4);
float3 g_vEye : packoffset(c8);
float g_FiberAlpha : packoffset(c8.w);
float2 g_WinSize : packoffset(c9);
float g_FiberRadius : packoffset(c9.z);
float g_fvFov : packoffset(c9.w);
float2 g_zMinMax : packoffset(c10);
float g_zWriteValue : packoffset(c10.z);
float g_NoiseScale : packoffset(c10.w);
float4 g_ScreenExtents : packoffset(c11);
float3 g_dirtColor : packoffset(c12);
float g_dirtLevel : packoffset(c12.w);
uint g_baseGroupId : packoffset(c13);
uint g_dirtGroupId : packoffset(c13.y);
float g_widthCurveOverride : packoffset(c13.z);
float g_alphaCurveOverride : packoffset(c13.w);
float3 g_SlaveOffsetsReferencePosition : packoffset(c14);
float g_SlaveOffsetsScale : packoffset(c14.w);
}



// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : POSITION0,
float2 v1 : TEXCOORD0,
out float4 o0 : SV_POSITION0,
out float2 o1 : TEXCOORD0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;

r0.xy = v0.xy;
r0.z = g_zWriteValue;
r0.w = 1;
r1.xy = v1.xy;
o0.xyzw = r0.xyzw;
o1.xy = r1.xy;

return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.2.27 on Fri Jan 29 19:31:16 2016
//
//
// Buffer Definitions:
//
// cbuffer cbPerScene
// {
//
// float4x4 g_mViewProj; // Offset: 0 Size: 64 [unused]
// float4x4 g_mInvViewProj; // Offset: 64 Size: 64 [unused]
// float3 g_vEye; // Offset: 128 Size: 12 [unused]
// float g_FiberAlpha; // Offset: 140 Size: 4 [unused]
// float2 g_WinSize; // Offset: 144 Size: 8 [unused]
// float g_FiberRadius; // Offset: 152 Size: 4 [unused]
// float g_fvFov; // Offset: 156 Size: 4 [unused]
// float2 g_zMinMax; // Offset: 160 Size: 8 [unused]
// float g_zWriteValue; // Offset: 168 Size: 4
// float g_NoiseScale; // Offset: 172 Size: 4 [unused]
// float4 g_ScreenExtents; // Offset: 176 Size: 16 [unused]
// float3 g_dirtColor; // Offset: 192 Size: 12 [unused]
// float g_dirtLevel; // Offset: 204 Size: 4 [unused]
// uint g_baseGroupId; // Offset: 208 Size: 4 [unused]
// uint g_dirtGroupId; // Offset: 212 Size: 4 [unused]
// float g_widthCurveOverride; // Offset: 216 Size: 4 [unused]
// float g_alphaCurveOverride; // Offset: 220 Size: 4 [unused]
// float3 g_SlaveOffsetsReferencePosition;// Offset: 224 Size: 12 [unused]
// float g_SlaveOffsetsScale; // Offset: 236 Size: 4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// cbPerScene cbuffer NA NA 8 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xy
// TEXCOORD 0 xy 1 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xy 1 NONE float xy
//
vs_5_0
dcl_globalFlags refactoringAllowed | skipOptimization
dcl_constantbuffer cb8[11], immediateIndexed
dcl_input v0.xy
dcl_input v1.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_temps 2
mov r0.xy, v0.xyxx
mov r0.z, cb8[10].z
mov r0.w, l(1.000000)
mov r1.xy, v1.xyxx
mov o0.xyzw, r0.xyzw
mov o1.xy, r1.xyxx
ret
// Approximately 7 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/


PS:
// ---- Created with 3Dmigoto v1.2.27 on Fri Jan 29 19:41:02 2016
// HAIR ON

cbuffer cbPerScene : register(b8)
{
row_major float4x4 g_mViewProj : packoffset(c0);
row_major float4x4 g_mInvViewProj : packoffset(c4);
float3 g_vEye : packoffset(c8);
float g_FiberAlpha : packoffset(c8.w);
float2 g_WinSize : packoffset(c9);
float g_FiberRadius : packoffset(c9.z);
float g_fvFov : packoffset(c9.w);
float2 g_zMinMax : packoffset(c10);
float g_zWriteValue : packoffset(c10.z);
float g_NoiseScale : packoffset(c10.w);
float4 g_ScreenExtents : packoffset(c11);
float3 g_dirtColor : packoffset(c12);
float g_dirtLevel : packoffset(c12.w);
uint g_baseGroupId : packoffset(c13);
uint g_dirtGroupId : packoffset(c13.y);
float g_widthCurveOverride : packoffset(c13.z);
float g_alphaCurveOverride : packoffset(c13.w);
float3 g_SlaveOffsetsReferencePosition : packoffset(c14);
float g_SlaveOffsetsScale : packoffset(c14.w);
}

SamplerState g_sTrilinear_s : register(s1);
Texture2D<float> g_txNoise : register(t3);
Texture2D<float> g_txDirt : register(t4);
StructuredBuffer<GroupRenderData> GroupRenderData : register(t5);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
float4 v0 : SV_POSITION0,
float4 v1 : TANGENT0,
float4 v2 : TEXCOORD0,
float3 v3 : TEXCOORD1,
float4 v4 : COLOR0,
out float4 o0 : SV_Target0)
{
float4 r0,r1,r2,r3;
uint4 bitmask, uiDest;
float4 fDest;

r0.x = dot(g_ScreenExtents.zz, v0.xx);
r0.xz = float2(-1,-1) + r0.xx;
r1.x = dot(g_ScreenExtents.ww, v0.yy);
r0.yw = float2(1,1) + -r1.xx;
r1.xyzw = g_WinSize.xyxy * v2.xyzw;
r0.xyzw = -r0.xyzw * g_WinSize.xyxy + r1.xyzw;
r0.x = dot(r0.xy, r0.xy);
r0.y = dot(r0.zw, r0.zw);
r0.zw = v2.xy * g_WinSize.xy + -r1.zw;
r0.z = dot(r0.zw, r0.zw);
r0.xyz = sqrt(r0.xyz);
r0.w = cmp(r0.x >= r0.z);
r0.z = cmp(r0.y >= r0.z);
r1.xy = r0.wz ? 1.000000 : 0;
r0.z = dot(r1.xy, r1.xy);
r0.z = cmp(r0.z != 0.000000);
r0.z = r0.z ? -1 : 1;
r0.x = min(r0.x, r0.y);
r0.x = min(1, r0.x);
r0.x = r0.z * r0.x + 1;
r0.x = v3.z * r0.x;
r0.y = cmp(0.00776470592 < r0.x);
r1.x = v1.w;
r1.y = 0.5;
r0.z = g_txNoise.Sample(g_sTrilinear_s, r1.xy).x;
if (r0.y != 0) {
r0.y = g_txDirt.Sample(g_sTrilinear_s, v3.xy).x;
r0.w = (uint)v4.w;
r1.x = -g_dirtLevel + 1;
r0.y = -r1.x + r0.y;
r1.x = g_dirtLevel + 0.00100000005;
r0.y = saturate(r0.y / r1.x);
r1.xyz = r0.yyy * g_dirtColor.xyz + -v4.xyz;
r1.xyz = saturate(r0.yyy * r1.xyz + v4.xyz);
r1.w = dot(v1.xyz, v1.xyz);
r1.w = rsqrt(r1.w);
r2.xyz = v1.xyz * r1.www;
// Known bad code for instruction (needs manual fix):
ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx
r0.w = g_sTrilinear[]..swiz;
r0.z = r0.w * r0.z;
r0.y = cmp(0.5 < r0.y);
r3.xy = g_dirtGroupId;
r0.w = v4.w + r3.y;
r0.y = r0.y ? r3.x : r0.w;
r2.xyz = saturate(r2.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5));
r2.xyz = float3(255,255,255) * r2.xyz;
r2.xyz = (uint3)r2.xyz;
r2.yz = (uint2)r2.yz << int2(16,8);
r0.w = mad((int)r2.x, 0x01000000, (int)r2.y);
r0.w = (int)r0.w + (int)r2.z;
r0.x = saturate(-r0.x * 0.5 + 1);
r0.x = 255 * r0.x;
r0.xy = (uint2)r0.xy;
r2.x = (int)r0.w + (int)r0.x;
r1.xyz = float3(127,127,63) * r1.xyz;
r1.xyz = (uint3)r1.xyz;
r0.xw = (uint2)r1.yz << int2(18,12);
r0.x = mad((int)r1.x, 0x02000000, (int)r0.x);
r0.x = (int)r0.x + (int)r0.w;
r0.z = saturate(4 * r0.z);
r0.z = 63 * r0.z;
r0.z = (uint)r0.z;
r0.z = (uint)r0.z << 6;
r0.x = (int)r0.x + (int)r0.z;
bitmask.y = ((~(-1 << 6)) << 0) & 0xffffffff;
r2.y = (((uint)r0.y << 0) & bitmask.y) | ((uint)r0.x & ~bitmask.y);
r0.xy = (uint2)v0.yx;
// Needs manual fix for instruction:
imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1)
InterlockedAdd?(dest, value, orig_value);
r0.xy = (uint2)r0.xy;
r0.x = r0.x * g_WinSize.x + r0.y;
r0.x = 4 * r0.x;
r0.x = (uint)r0.x;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
// using 3Dmigoto v1.2.27 on Fri Jan 29 19:41:02 2016
//
//
// Note: shader requires additional functionality:
// Early depth-stencil
//
//
// Buffer Definitions:
//
// cbuffer cbPerScene
// {
//
// row_major float4x4 g_mViewProj; // Offset: 0 Size: 64 [unused]
// row_major float4x4 g_mInvViewProj; // Offset: 64 Size: 64 [unused]
// float3 g_vEye; // Offset: 128 Size: 12 [unused]
// float g_FiberAlpha; // Offset: 140 Size: 4 [unused]
// float2 g_WinSize; // Offset: 144 Size: 8
// float g_FiberRadius; // Offset: 152 Size: 4 [unused]
// float g_fvFov; // Offset: 156 Size: 4 [unused]
// float2 g_zMinMax; // Offset: 160 Size: 8 [unused]
// float g_zWriteValue; // Offset: 168 Size: 4 [unused]
// float g_NoiseScale; // Offset: 172 Size: 4 [unused]
// float4 g_ScreenExtents; // Offset: 176 Size: 16
// float3 g_dirtColor; // Offset: 192 Size: 12
// float g_dirtLevel; // Offset: 204 Size: 4
// uint g_baseGroupId; // Offset: 208 Size: 4
// uint g_dirtGroupId; // Offset: 212 Size: 4
// float g_widthCurveOverride; // Offset: 216 Size: 4 [unused]
// float g_alphaCurveOverride; // Offset: 220 Size: 4 [unused]
// float3 g_SlaveOffsetsReferencePosition;// Offset: 224 Size: 12 [unused]
// float g_SlaveOffsetsScale; // Offset: 236 Size: 4 [unused]
//
// }
//
// Resource bind info for GroupRenderData
// {
//
// struct HairGroupRenderData
// {
//
// float noiseFrequency; // Offset: 0
// float noiseIntensity; // Offset: 4
//
// struct curve
// {
//
// float4 samples03; // Offset: 8
// float4 samples47; // Offset: 24
//
// } thicknessCurve; // Offset: 8
//
// struct curve
// {
//
// float4 samples03; // Offset: 40
// float4 samples47; // Offset: 56
//
// } alphaCurve; // Offset: 40
//
// } $Element; // Offset: 0 Size: 72
//
// }
//
// Resource bind info for HairElementsUAV
// {
//
// struct ABufferNode
// {
//
// uint uPackedData0; // Offset: 0
// uint uPackedData1; // Offset: 4
// uint uPackedData2_Next; // Offset: 8
// float fDepth; // Offset: 12
//
// } $Element; // Offset: 0 Size: 16
//
// }
//
// Resource bind info for HairElementsCounterUAV
// {
//
// uint $Element; // Offset: 0 Size: 4
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// g_sTrilinear sampler NA NA 1 1
// g_txNoise texture float 2d 3 1
// g_txDirt texture float 2d 4 1
// GroupRenderData texture struct r/o 5 1
// HairPixelHeadUAV UAV byte r/w 1 1
// HairElementsUAV UAV struct r/w 2 1
// HairElementsCounterUAV UAV struct r/w 3 1
// cbPerScene cbuffer NA NA 8 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyz
// TANGENT 0 xyzw 1 NONE float xyzw
// TEXCOORD 0 xyzw 2 NONE float xyzw
// TEXCOORD 1 xyz 3 NONE float xyz
// COLOR 0 xyzw 4 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed | forceEarlyDepthStencil
dcl_constantbuffer cb8[14], immediateIndexed
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_structured t5, 72
dcl_uav_raw u1
dcl_uav_structured u2, 16
dcl_uav_structured u3, 4
dcl_input_ps_siv linear noperspective v0.xyz, position
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyzw
dcl_output o0.xyzw
dcl_temps 4
dp2 r0.x, cb8[11].zzzz, v0.xxxx
add r0.xz, r0.xxxx, l(-1.000000, 0.000000, -1.000000, 0.000000)
dp2 r1.x, cb8[11].wwww, v0.yyyy
add r0.yw, -r1.xxxx, l(0.000000, 1.000000, 0.000000, 1.000000)
mul r1.xyzw, v2.xyzw, cb8[9].xyxy
mad r0.xyzw, -r0.xyzw, cb8[9].xyxy, r1.xyzw
dp2 r0.x, r0.xyxx, r0.xyxx
dp2 r0.y, r0.zwzz, r0.zwzz
mad r0.zw, v2.xxxy, cb8[9].xxxy, -r1.zzzw
dp2 r0.z, r0.zwzz, r0.zwzz
sqrt r0.xyz, r0.xyzx
ge r0.w, r0.x, r0.z
ge r0.z, r0.y, r0.z
and r1.xy, r0.wzww, l(0x3f800000, 0x3f800000, 0, 0)
dp2 r0.z, r1.xyxx, r1.xyxx
ne r0.z, r0.z, l(0.000000)
movc r0.z, r0.z, l(-1.000000), l(1.000000)
min r0.x, r0.y, r0.x
min r0.x, r0.x, l(1.000000)
mad r0.x, r0.z, r0.x, l(1.000000)
mul r0.x, r0.x, v3.z
lt r0.y, l(0.00776470592), r0.x
mov r1.x, v1.w
mov r1.y, l(0.500000)
sample_indexable(texture2d)(float,float,float,float) r0.z, r1.xyxx, t3.yzxw, s1
if_nz r0.y
sample_indexable(texture2d)(float,float,float,float) r0.y, v3.xyxx, t4.yxzw, s1
ftou r0.w, v4.w
add r1.x, l(1.000000), -cb8[12].w
add r0.y, r0.y, -r1.x
add r1.x, l(0.001000), cb8[12].w
div_sat r0.y, r0.y, r1.x
mad r1.xyz, r0.yyyy, cb8[12].xyzx, -v4.xyzx
mad_sat r1.xyz, r0.yyyy, r1.xyzx, v4.xyzx
dp3 r1.w, v1.xyzx, v1.xyzx
rsq r1.w, r1.w
mul r2.xyz, r1.wwww, v1.xyzx
ld_structured_indexable(structured_buffer, stride=72)(mixed,mixed,mixed,mixed) r0.w, r0.w, l(4), t5.xxxx
mul r0.z, r0.z, r0.w
lt r0.y, l(0.500000), r0.y
utof r3.xy, cb8[13].yxyy
add r0.w, r3.y, v4.w
movc r0.y, r0.y, r3.x, r0.w
mad_sat r2.xyz, r2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
mul r2.xyz, r2.xyzx, l(255.000000, 255.000000, 255.000000, 0.000000)
ftou r2.xyz, r2.xyzx
ishl r2.yz, r2.yyzy, l(0, 16, 8, 0)
imad r0.w, r2.x, l(0x01000000), r2.y
iadd r0.w, r0.w, r2.z
mad_sat r0.x, -r0.x, l(0.500000), l(1.000000)
mul r0.x, r0.x, l(255.000000)
ftou r0.xy, r0.xyxx
iadd r2.x, r0.w, r0.x
mul r1.xyz, r1.xyzx, l(127.000000, 127.000000, 63.000000, 0.000000)
ftou r1.xyz, r1.xyzx
ishl r0.xw, r1.yyyz, l(18, 0, 0, 12)
imad r0.x, r1.x, l(0x02000000), r0.x
iadd r0.x, r0.x, r0.w
mul_sat r0.z, r0.z, l(4.000000)
mul r0.z, r0.z, l(63.000000)
ftou r0.z, r0.z
ishl r0.z, r0.z, l(6)
iadd r0.x, r0.x, r0.z
bfi r2.y, l(6), l(0), r0.y, r0.x
ftou r0.xy, v0.yxyy
imm_atomic_iadd r1.x, u3, l(0, 0, 0, 0), l(1)
utof r0.xy, r0.xyxx
mad r0.x, r0.x, cb8[9].x, r0.y
mul r0.x, r0.x, l(4.000000)
ftou r0.x, r0.x
imm_atomic_exch r0.x, u1, r0.x, r1.x
bfi r2.z, l(26), l(0), r0.x, l(0xfc000000)
mov r2.w, v0.z
store_structured u2.xyzw, r1.x, l(0), r2.xyzw
endif
mov o0.xyzw, l(1.000000,0,0,1.000000)
ret
// Approximately 77 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/



Now since the hair is at screen depth I am thinking we should correct it in the PS but I get those nasty decompile issues. I tried to fix them but wasn't able to:(

In VS I tried something like:

float4 r28, r26;
r28.x = dot(r0.xyzw, g_mViewProj._m00_m10_m20_m30);
r28.y = dot(r0.xyzw, g_mViewProj._m01_m11_m21_m31);
r28.z = dot(r0.xyzw, g_mViewProj._m02_m12_m22_m32);
r28.w = dot(r0.xyzw, g_mViewProj._m03_m13_m23_m33);
float4 stereo = StereoParams.Load(0);
//r28.x -= stereo.x * (r28.w - stereo.y);
r26.x = dot(r28.xyzw, g_mInvViewProj._m00_m10_m20_m30);
r26.y = dot(r28.xyzw, g_mInvViewProj._m01_m11_m21_m31);
r26.z = dot(r28.xyzw, g_mInvViewProj._m02_m12_m22_m32);
r26.w = dot(r28.xyzw, g_mInvViewProj._m03_m13_m23_m33);
o0 = r26.xyzw;


But for some reason the whole hair disappares which makes me wonder r0/v0 in what space is exactly... it should just just vertexes information (but possibly is in model space?).. Also I think I am missing the Model Matrix that I need apply so I can make the transformation correctly...but what puzzles me is that even if I multiply r0 by viewProj and take it back it (inverse ViewProj) still disappears...

(I tried both the dot() and the mul() operation, but get the same result... the hair disappears...)...

Also looking at the PS I have no real idea where I should add the stereo correction...


I wasn;t able to find out who or what makes those decals...However is not a CS...but I did find a PS that makes the area where the decals are black... and I am wondering if the decals are not actually rendered in a separate shader but part of the shader that renders that "patch" of terrain. I think is a secondary Texcoord that is used in that shader which the driver fails to stereorize...

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 01/29/2016 08:06 PM   
So, I know some of US (included me) hate CM for not being as GOOD as proper Geometry rendered 3D. I agree every second is not as good and NEVER will be! However, I made a profile for CM that allows you to play the game. The haloes are actually not bad and the profile works pretty well. But even with 100% depth (in NVPANEL) I sense there isn't enough depth (time to try the depth hack yet again;)) ) In any case, 3D is there and you can feel/see it but is not what we are used to in Geometry 3D (3D Vision Automatic). THE BENEFIT: I get in 3D Surround (5760x1080) 60 FPS with EVERYTHING MAXED OUT! (We will be coming back to this), including the TresFX Hair (or whatever is called now). For comparison sake: - 3D Vision Automatic, Hair OFF -> 35 FPS - 3D Vision Automatic, Hair MAX -> 10 FPS - 3D Vision Compatibility Mode, Hair OFF -> 60 FPS - 3D Vision Compatibility Mode, Hair MAX -> 60 FPS I remember I had the same issue with the original TR where HAIR on Surround was basically KILLING my FPS from 60 to 15 fps. [color="green"] Now the profile. ADDED: - PROPER SLI SUPPORT. Big THANK YOU TO Blaire(THE SLI Wizard that is in touch with Nvidia).See more information here: [url]http://www.forum-3dcenter.org/vbulletin/showthread.php?p=10927377#post10927377[/url] - COMPATIBILITY MODE [/color] Profile: [code] Profile "Rise of the Tomb Raider" ShowOn GeForce ProfileType Application Executable "tr2_x64_final.exe" Executable "rottr_uap.exe" Executable "rottr.exe" Setting ID_0x00a06946 = 0x080002F5 Setting ID_0x1033cec2 = 0x00000002 Setting ID_0x1033dcd3 = 0x00000004 Setting ID_0x70092d4a = 0xb19c3534 InternalSettingFlag=V0 Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0 SettingString ID_0x7049c7ec = "웬ꑌ" InternalSettingFlag=V0 SettingString ID_0x704d456e = "쪯⃀쀩�㓵僡娊籲鸧瀇딃ᤤ又�빍᱁뼊襯簑謜⑈贳㱂矻粄ꖸ熫胃㖼뫨뚔ᯒ쑀냣键䭪不솘᜴ᢶ୬謷壄嫣Ͱ嚞ᛛ誸㉭跽躿桗ⶄ䂛驘윟ఢ포턭㛾뉍픺鏾몵쑂ﹺ쀸㗔鰟穋罥ᕂ䋾ᩫ榛鳆⏲꣱捄㊠揵�趢㕊뇨급毹⃬Ⳝ礪ᷦ䚽汚枸ꭙ≮舻➁ܥ浾�䭵⚙湰㿛㶭䑜鋶쫉御웟" InternalSettingFlag=V0 SettingString ID_0x7051e5f5 = "籬鸙" InternalSettingFlag=V0 Setting ID_0x708db8c5 = 0x21ca1ff1 InternalSettingFlag=V0 Setting ID_0x709a1ddf = 0x4b1cd968 InternalSettingFlag=V0 SettingString ID_0x70b5603f = "榛鳈⏙ꢗ" InternalSettingFlag=V0 Setting ID_0x70ccb5f0 = 0xddfac45d InternalSettingFlag=V0 Setting ID_0x70edb381 = 0x20208b6c InternalSettingFlag=V0 Setting ID_0x70f8e408 = 0x80b671f4 InternalSettingFlag=V0 Setting ID_0x00c96f61 = 0x0000000f InternalSettingFlag=V0 Setting ID_0x003846a8 = 0x0000000f InternalSettingFlag=V0 Setting ID_0x00A0694B = 0x0000000f InternalSettingFlag=V0 Setting ID_0x709a1ddf = 0x4b1cd968 InternalSettingFlag=V0 Setting ID_0x709adada = 0x37f58257 InternalSettingFlag=V0 Setting ID_0x709adadb = 0xca23b4b1 InternalSettingFlag=V0 EndProfile [/code] You know the drill. FOLLOW THE GUIDE HERE TO THE LETTER: [url]https://forums.geforce.com/default/topic/791450/3d-vision/guide-how-to-enable-and-tweak-3d-compatibility-mode-in-any-dx11-game/[/url] Use the profile if you just want everything maxed and having issues with the framerate (or you aren't patient enough to wait for a proper 3D Vision Fix). Cheers, Helifax
So, I know some of US (included me) hate CM for not being as GOOD as proper Geometry rendered 3D. I agree every second is not as good and NEVER will be!

However, I made a profile for CM that allows you to play the game. The haloes are actually not bad and the profile works pretty well. But even with 100% depth (in NVPANEL) I sense there isn't enough depth (time to try the depth hack yet again;)) )

In any case, 3D is there and you can feel/see it but is not what we are used to in Geometry 3D (3D Vision Automatic).

THE BENEFIT: I get in 3D Surround (5760x1080) 60 FPS with EVERYTHING MAXED OUT! (We will be coming back to this), including the TresFX Hair (or whatever is called now).
For comparison sake:

- 3D Vision Automatic, Hair OFF -> 35 FPS
- 3D Vision Automatic, Hair MAX -> 10 FPS
- 3D Vision Compatibility Mode, Hair OFF -> 60 FPS
- 3D Vision Compatibility Mode, Hair MAX -> 60 FPS

I remember I had the same issue with the original TR where HAIR on Surround was basically KILLING my FPS from 60 to 15 fps.

Now the profile. ADDED:
- PROPER SLI SUPPORT. Big THANK YOU TO Blaire(THE SLI Wizard that is in touch with Nvidia).See more information here: http://www.forum-3dcenter.org/vbulletin/showthread.php?p=10927377#post10927377
- COMPATIBILITY MODE


Profile:
Profile "Rise of the Tomb Raider"
ShowOn GeForce
ProfileType Application
Executable "tr2_x64_final.exe"
Executable "rottr_uap.exe"
Executable "rottr.exe"
Setting ID_0x00a06946 = 0x080002F5
Setting ID_0x1033cec2 = 0x00000002
Setting ID_0x1033dcd3 = 0x00000004
Setting ID_0x70092d4a = 0xb19c3534 InternalSettingFlag=V0
Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0
SettingString ID_0x7049c7ec = "웬ꑌ" InternalSettingFlag=V0
SettingString ID_0x704d456e = "쪯⃀쀩�㓵僡娊籲鸧瀇딃ᤤ又�빍᱁뼊襯簑謜⑈贳㱂矻粄ꖸ熫胃㖼뫨뚔ᯒ쑀냣键䭪不솘᜴ᢶ୬謷壄嫣Ͱ嚞ᛛ誸㉭跽躿桗ⶄ䂛驘윟ఢ포턭㛾뉍픺鏾몵쑂ﹺ쀸㗔鰟穋罥ᕂ䋾ᩫ榛鳆⏲꣱捄㊠揵�趢㕊뇨급毹⃬Ⳝ礪ᷦ䚽汚枸ꭙ≮舻➁ܥ浾�䭵⚙湰㿛㶭䑜鋶쫉御웟" InternalSettingFlag=V0
SettingString ID_0x7051e5f5 = "籬鸙" InternalSettingFlag=V0
Setting ID_0x708db8c5 = 0x21ca1ff1 InternalSettingFlag=V0
Setting ID_0x709a1ddf = 0x4b1cd968 InternalSettingFlag=V0
SettingString ID_0x70b5603f = "榛鳈⏙ꢗ" InternalSettingFlag=V0
Setting ID_0x70ccb5f0 = 0xddfac45d InternalSettingFlag=V0
Setting ID_0x70edb381 = 0x20208b6c InternalSettingFlag=V0
Setting ID_0x70f8e408 = 0x80b671f4 InternalSettingFlag=V0
Setting ID_0x00c96f61 = 0x0000000f InternalSettingFlag=V0
Setting ID_0x003846a8 = 0x0000000f InternalSettingFlag=V0
Setting ID_0x00A0694B = 0x0000000f InternalSettingFlag=V0
Setting ID_0x709a1ddf = 0x4b1cd968 InternalSettingFlag=V0
Setting ID_0x709adada = 0x37f58257 InternalSettingFlag=V0
Setting ID_0x709adadb = 0xca23b4b1 InternalSettingFlag=V0
EndProfile


You know the drill. FOLLOW THE GUIDE HERE TO THE LETTER:
https://forums.geforce.com/default/topic/791450/3d-vision/guide-how-to-enable-and-tweak-3d-compatibility-mode-in-any-dx11-game/

Use the profile if you just want everything maxed and having issues with the framerate (or you aren't patient enough to wait for a proper 3D Vision Fix).

Cheers,
Helifax

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 01/29/2016 09:58 PM   
[quote="helifax"]So, I know some of US (included me) hate CM for not being as GOOD as proper Geometry rendered 3D. I agree every second is not as good and NEVER will be! However, I made a profile for CM that allows you to play the game. The haloes are actually not bad and the profile works pretty well. But even with 100% depth (in NVPANEL) I sense there isn't enough depth (time to try the depth hack yet again;)) ) Cheers, Helifax[/quote] As a projector user, CM actually gives much higher depth compared to real 3d. I assume this is because it doesnt take monitor size into account? At launch it did, and depth on projector was abysmal but now i cant go 100%, its too much for me. Anyway, thanks for the profile!
helifax said:So, I know some of US (included me) hate CM for not being as GOOD as proper Geometry rendered 3D. I agree every second is not as good and NEVER will be!

However, I made a profile for CM that allows you to play the game. The haloes are actually not bad and the profile works pretty well. But even with 100% depth (in NVPANEL) I sense there isn't enough depth (time to try the depth hack yet again;)) )



Cheers,
Helifax


As a projector user, CM actually gives much higher depth compared to real 3d. I assume this is because it doesnt take monitor size into account? At launch it did, and depth on projector was abysmal but now i cant go 100%, its too much for me.

Anyway, thanks for the profile!

Posted 01/29/2016 10:14 PM   
Love your work helifax, thanks mate Mike also appreciate your time, we are quite lucky to have u folk in the community
Love your work helifax, thanks mate

Mike also appreciate your time, we are quite lucky to have u folk in the community

Posted 01/29/2016 10:18 PM   
Thanks, for the profile. Does the advanced configuration tool work to decrease the monitor size ?
Thanks, for the profile.

Does the advanced configuration tool work to decrease the monitor size ?

Gigabyte Z370 Gaming 7 32GB Ram i9-9900K GigaByte Aorus Extreme Gaming 2080TI (single) Game Blaster Z Windows 10 X64 build #17763.195 Define R6 Blackout Case Corsair H110i GTX Sandisk 1TB (OS) SanDisk 2TB SSD (Games) Seagate EXOs 8 and 12 TB drives Samsung UN46c7000 HD TV Samsung UN55HU9000 UHD TVCurrently using ACER PASSIVE EDID override on 3D TVs LG 55

Posted 01/29/2016 10:29 PM   
I do not play games in 2D anymore, it is something that the brain does to the geometry that makes it look so much nicer in 3D than in 2D. Will not buy until proper fix. I cant for the life of me understand why the companies do not fix 3D support out of the box!
I do not play games in 2D anymore, it is something that the brain does to the geometry that makes it look so much nicer in 3D than in 2D. Will not buy until proper fix.

I cant for the life of me understand why the companies do not fix 3D support out of the box!

Posted 01/29/2016 10:40 PM   
[quote="helifax"]the TresFX Hair (or whatever is called now).[/quote] PureHair yah, the previous Tomb Raider used TressFX which was developed by AMD and performed terribly on NVidia GPUs. Anyhow, this uses Pur Hair, NVidia has a detailed write up on the game http://www.geforce.com/whats-new/guides/rise-of-the-tomb-raider-graphics-and-performance-guide PureHair is Crystal Dynamics and Square Enix's hair rendering technology, which like our own HairWorks technology adds tens of thousands of hair strands to a character model. These hairs act realistically, swaying and moving in concert with character movement, and can be affected by water, wind and snow, and are lit and shaded in real-time by the scene. In Rise of the Tomb Raider, up to 30,000 strands of hair are applied solely to Lara, with large groups of hairs controlled by master strands that dictate their movement and properties, preventing each individual hair strand from acting independently, and keeping physics calculation costs in check. [img]http://images.nvidia.com/geforce-com/international/images/rise-of-the-tomb-raider/rise-of-the-tomb-raider-developer-image-001.jpg[/img] In-game, three options are on offer: 'Off' disables PureHair entirely, adding approximated hair rendering in its place; 'On' is the recommended detail level for most players, with a good amount of hairs visible and full physics and material interaction applied; while 'Very High' adds cinematic-quality PureHair to every moment of the game, increasing hair strand counts to 30,000 in close-ups.
helifax said:the TresFX Hair (or whatever is called now).

PureHair

yah, the previous Tomb Raider used TressFX which was developed by AMD and performed terribly on NVidia GPUs.

Anyhow, this uses Pur Hair, NVidia has a detailed write up on the game

http://www.geforce.com/whats-new/guides/rise-of-the-tomb-raider-graphics-and-performance-guide


PureHair is Crystal Dynamics and Square Enix's hair rendering technology, which like our own HairWorks technology adds tens of thousands of hair strands to a character model. These hairs act realistically, swaying and moving in concert with character movement, and can be affected by water, wind and snow, and are lit and shaded in real-time by the scene.

In Rise of the Tomb Raider, up to 30,000 strands of hair are applied solely to Lara, with large groups of hairs controlled by master strands that dictate their movement and properties, preventing each individual hair strand from acting independently, and keeping physics calculation costs in check.

Image

In-game, three options are on offer: 'Off' disables PureHair entirely, adding approximated hair rendering in its place; 'On' is the recommended detail level for most players, with a good amount of hairs visible and full physics and material interaction applied; while 'Very High' adds cinematic-quality PureHair to every moment of the game, increasing hair strand counts to 30,000 in close-ups.

Posted 01/29/2016 10:46 PM   
Yes, that is it D-Man11:) In any case for me Pure Hair has a huge toll on performance in 3D Vision Automatic:( even on ON (medium performance). Don't take me wrong:) I can and will definitely play in proper Geometry 3D over CM even with this on OFF;)) as I believe PROPER 3D adds much more to 3D than strands of hair ^_^ But nevertheless there I noticed a big performance impact (must be related to my setup and me running 3D Surround I guess). In any case, I thought making a "unified" profile that adds SLI + CM mode into the mix will help out as it adds diversity and helps each person chose what he/she wants to use:)
Yes, that is it D-Man11:)

In any case for me Pure Hair has a huge toll on performance in 3D Vision Automatic:( even on ON (medium performance). Don't take me wrong:) I can and will definitely play in proper Geometry 3D over CM even with this on OFF;)) as I believe PROPER 3D adds much more to 3D than strands of hair ^_^ But nevertheless there I noticed a big performance impact (must be related to my setup and me running 3D Surround I guess).

In any case, I thought making a "unified" profile that adds SLI + CM mode into the mix will help out as it adds diversity and helps each person chose what he/she wants to use:)

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 01/29/2016 11:50 PM   
[quote="zig11727"]Thanks, for the profile. Does the advanced configuration tool work to decrease the monitor size ?[/quote] What I am using is a 3D hack script that I found here on the forums a very while back ago! For me it seems to work (but I am using Windows 7 due to SLI + 3D Surround bug on Windows 10). I think eqzitara made it initially and then was updated by someone else (can't remember who...) I can share it if needed. Now I haven't actually compared the results side-by-side..but "my placebo" mind seems to thing is actually working:)) Using the tool doesn;t seem to work as the value is re-written by the driver (I guess :( )
zig11727 said:Thanks, for the profile.

Does the advanced configuration tool work to decrease the monitor size ?


What I am using is a 3D hack script that I found here on the forums a very while back ago! For me it seems to work (but I am using Windows 7 due to SLI + 3D Surround bug on Windows 10).

I think eqzitara made it initially and then was updated by someone else (can't remember who...)

I can share it if needed. Now I haven't actually compared the results side-by-side..but "my placebo" mind seems to thing is actually working:))

Using the tool doesn;t seem to work as the value is re-written by the driver (I guess :( )

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 01/29/2016 11:53 PM   
Amazing work Helifax with the CM profile. Please share the 3d hack script. Is this the same as the depth hack? The problem with real 3d in 3d surround is that there is a hugely disproportionate fps drop that I am convinced is a nvidia driver issue. Does any other 3d surround users have any thoughts on this?
Amazing work Helifax with the CM profile. Please share the 3d hack script. Is this the same as the depth hack?

The problem with real 3d in 3d surround is that there is a hugely disproportionate fps drop that I am convinced is a nvidia driver issue. Does any other 3d surround users have any thoughts on this?

Rampage 4 Extreme
4960x oc 4.6 Ghz, H100i watercooler
2080 Ti Sli
Windows 7 Ultimate Edition
5760x1080 PG258Q/2560x1440 PG278Q

Posted 01/30/2016 03:07 AM   
Hair = on gives me acceptable performance on SLI 970. High is too much of a hit.
Hair = on gives me acceptable performance on SLI 970. High is too much of a hit.

Posted 01/30/2016 04:15 AM   
Thank You for the CM profile, Helifax! As CM had almost no depth in LCTOO I didn't even try it in ROTTR. But the reason for CM in LCTOO working so bad seems to be connected to the isometric view. In ROTTR it works quite good and is definitevly better than the plain 2D I have used until now. Just more depth would be nice. Do You mean with "3D hack script" the bat that changes the value for MonitorSize in the registry? For me (Win 7, 64-bit) it has no effect when CM is on but seems to work per se as I see a clear difference between normal mode and depth hack as soon as I turn CM off by the hotkey. Which makes me wonder if 3Dmigoto could be used to increase depth for the CM. But this is off topic so I will ask it here: [url]https://forums.geforce.com/default/topic/685657/3d-vision/3dmigoto-now-open-source-/53/?offset=785#4793606[/url] Maybe also off topic but... In ROTTR I have the same issues with sound and animations beeing out of sync in cut scenes as I had in FFXIII-LR. And it is not about missing "perfect lip sync" but sometimes even the sound of the last word of a sentence is lost as the animaions are already over and the animation for the next sentence starts. Again I had to use CheatEngine with its speedhack to slow down the animations to 80% to get sync back. Any idea what could cause this issues?
Thank You for the CM profile, Helifax! As CM had almost no depth in LCTOO I didn't even try it in ROTTR. But the reason for CM in LCTOO working so bad seems to be connected to the isometric view. In ROTTR it works quite good and is definitevly better than the plain 2D I have used until now. Just more depth would be nice. Do You mean with "3D hack script" the bat that changes the value for MonitorSize in the registry? For me (Win 7, 64-bit) it has no effect when CM is on but seems to work per se as I see a clear difference between normal mode and depth hack as soon as I turn CM off by the hotkey. Which makes me wonder if 3Dmigoto could be used to increase depth for the CM. But this is off topic so I will ask it here: https://forums.geforce.com/default/topic/685657/3d-vision/3dmigoto-now-open-source-/53/?offset=785#4793606
Maybe also off topic but... In ROTTR I have the same issues with sound and animations beeing out of sync in cut scenes as I had in FFXIII-LR. And it is not about missing "perfect lip sync" but sometimes even the sound of the last word of a sentence is lost as the animaions are already over and the animation for the next sentence starts. Again I had to use CheatEngine with its speedhack to slow down the animations to 80% to get sync back. Any idea what could cause this issues?

My original display name is 3d4dd - for some reason Nvidia changed it..?!

Posted 01/30/2016 10:44 AM   
[quote="helifax"] I can share it if needed. Now I haven't actually compared the results side-by-side..but "my placebo" mind seems to thing is actually working:)) [/quote] Yes, please, Helifax :) I remember trying to "hack" depth when I played Mad Max in CM, but to no avail... Files and explanations are HIGHLY welcome! And thanks for profile, btw! :)
helifax said:
I can share it if needed. Now I haven't actually compared the results side-by-side..but "my placebo" mind seems to thing is actually working:))

Yes, please, Helifax :) I remember trying to "hack" depth when I played Mad Max in CM, but to no avail... Files and explanations are HIGHLY welcome! And thanks for profile, btw! :)

ASUS Prime z370-A, i5 8600K, ASUS GTX 1080 Ti Strix, 16 GB DDR4, Corsair AX860i PSU, ASUS VG278HR, 3D Vision 2, Sound Blaster Z, Astro A50 Headphones, Windows 10 64-bit Home

Posted 01/30/2016 11:56 AM   
This is the script(s) that I am using. I am not sure if they actually work, but my mind seems to see a difference. Not big though but a difference... I am running this on Surround where the default monitor size is "61", although the real estate is 81" (inch as I run 3x27 inch displays) In the script I put the size as 10 and I believe I see an increase in depth. I haven't actually tested this (by comparing screenshots) so if anyone wants to do this it will be very welcome:) 1. I always run "_AllowRunAsAdmin.bat" first 2. I am using the "_DepthHackEngineLoop.bat" script which runs over and over in the background. Please experiment and let me know what you find out:) Cheers! EDIT: Made a quick side-by-side compare and there is no difference with the depth hack script running or not... sigh:( Like I said...placebo effect:(
This is the script(s) that I am using.
I am not sure if they actually work, but my mind seems to see a difference. Not big though but a difference...
I am running this on Surround where the default monitor size is "61", although the real estate is 81" (inch as I run 3x27 inch displays)

In the script I put the size as 10 and I believe I see an increase in depth.
I haven't actually tested this (by comparing screenshots) so if anyone wants to do this it will be very welcome:)

1. I always run "_AllowRunAsAdmin.bat" first
2. I am using the "_DepthHackEngineLoop.bat" script which runs over and over in the background.

Please experiment and let me know what you find out:)
Cheers!

EDIT:

Made a quick side-by-side compare and there is no difference with the depth hack script running or not... sigh:(

Like I said...placebo effect:(
Attachments

DepthHack.rar.jpg

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 01/30/2016 12:22 PM   
[quote="SubjectBucko"]Amazing work Helifax with the CM profile. Please share the 3d hack script. Is this the same as the depth hack? The problem with real 3d in 3d surround is that there is a hugely disproportionate fps drop that I am convinced is a nvidia driver issue. Does any other 3d surround users have any thoughts on this?[/quote] Have you tried the profile above with the SLI flags inside? For me in Surround (with standard profile) I was having 50-60% gpu usage and 29fps in 2D Surround! 3D Surround was giving me 15 fps with same GPU usage. With the profile above I have 60FPS in 2D Surround (GPU usage is 80-90%) based on the load and in 3D Surround (Not CM, with hair OFF) I get 35-40FPS (with GPU usage 99%). I did notice some minor glitches (like the avalanche) at the beginning of the game glitching but nothing MAJOR in any other parts of the game so far... This is at 5760x1080 resolution. Now I just wish I would have the same performance on Witcher3 :))
SubjectBucko said:Amazing work Helifax with the CM profile. Please share the 3d hack script. Is this the same as the depth hack?

The problem with real 3d in 3d surround is that there is a hugely disproportionate fps drop that I am convinced is a nvidia driver issue. Does any other 3d surround users have any thoughts on this?


Have you tried the profile above with the SLI flags inside? For me in Surround (with standard profile) I was having 50-60% gpu usage and 29fps in 2D Surround! 3D Surround was giving me 15 fps with same GPU usage.

With the profile above I have 60FPS in 2D Surround (GPU usage is 80-90%) based on the load and in 3D Surround (Not CM, with hair OFF) I get 35-40FPS (with GPU usage 99%). I did notice some minor glitches (like the avalanche) at the beginning of the game glitching but nothing MAJOR in any other parts of the game so far...

This is at 5760x1080 resolution. Now I just wish I would have the same performance on Witcher3 :))

1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc


My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com

(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)

Posted 01/30/2016 12:32 PM   
  9 / 41    
Scroll To Top