• Guest Please check out the Help Wanted thread in Ickie's NewsHawks.
    The future of the Outhouse depends on you!
    Help Wanted

This Could Be Very Interesting - AnKor's Shaders

So who wants to be a beta tester? :)

I've made an experimental version of d3d8.dll which enables acceleration (g-force) effects for virtual cockpit view.

You need to use the latest build (20161212) but replace the dll with the one from this archive:

https://dl.dropboxusercontent.com/u/2918136/cfs/d3d8.20161213.HeadMovement.zip

There are no adjustment options yet, but I plan to add them.
I still don't like certain behaviors, but I feel that I need some "user" opinions before continuing :)
 
Hi!

Here is the latest version of shaders as I promised:
https://dl.dropboxusercontent.com/u/2918136/cfs/d3d8.20161126.zip

It includes WOFF UE features, but it is not exactly the same build - I've a few minor tweaks and rebuild it with Visual C++ 2015. It might no longer work on WinXP, but I hope nobody really needed it.

This version fully replaces stock cfs3 ground shadows with DX9 ones. However you must turn off shadows in cfs3config or you will see double shadows.
There are also some performance improvements and bugfixes (among them is a fix for black spots appearing on water at low angles).

The archive doesn't include d3d8.ini and TextureMagic.ini -- you can reuse your existing ones. However there are a couple of new settings supported in d3d8.ini.
FakeDriverVersion=1
Will stop cfs3 from asking to rerun cfs3config after each driver update. It will simply report fake driver version 9.0.0.0 Instead of actual driver version.
AlphaToCoverage=1
Experimental technique for rendering trees transparency. Works better when multisampling antialiasing is enabled. However it is not tuned well, so might look worse than normal rendering.

Just want to make shure I have edited the d3d8.ini correctly :

[D3D8]
;Will stop cfs3 from asking to rerun cfs3config after each driver update.
FakeDriverVersion=1


;Experimental technique for rendering trees transparency.
AlphaToCoverage=1


; Change to NoMultisampling=1 for SweetFX compatibility, but it will disable ingame antialiasing.
NoMultisampling=1


; Aircraft shadows. 0 - No Shadows; 1 - Low; 2 - Medium; 3 - Good; 4 - High; 5 - Best
ShadowQuality=5


; Terrain shadows. 0 - Disabled; 1 - Low Quality; 2 - Medium; 3 - High
TerrainShadows=3


; 0 - Disabled; 1 - Enabled
TerrainBumpMapping=1
 
Just want to make shure I have edited the d3d8.ini correctly
Yes, look correct.
Neither of these new options are required. So if you don't want "alpha to coverage" you can just remove that line (or change the value to be 0).
 
Downloaded! First impressions: this is going to be a great feature! Response seems a bit weak in this version, it might be nice if it were more noticeable, though not as strong as in your video. Also, there doesn't seem to be any response to the roll axis. Response to ground bumps is OK, but based on experience, I think it should be stronger, it looked just about right in your old video. I was really hoping to see the shake from the engine startup as in the video, do you plan on adding it?

Thanks for continuing to develop your shaders!
 
It will be possible to adjust the response, this version is very damped because otherwise it is just too shaky for WOFF to be playable. Their aircrafts tend to shake much more (suspiciously more, I will need to investigate it) than the ones I tried in stock CFS3.

However, you will be surprised how noticeably any aircraft shakes if the damping is removed. I'm not sure it is fully intentional though, a part of it is definitely caused by calculation errors. After all I have to approximate aircraft speed and acceleration. You see, this feature doesn't "know" about joystick input, ground bumps or engine revs, instead I try to calculate inertial forces from aircraft movement and rotation and then adjust the view. And on top of that my formulas are likely incomplete, but it is been quite a while since I studied physics and I'm too lazy now to go into depths now :)

I'd also love to add the roll effect, but it doesn't seem to be possible in cfs3 - the game only supports pitch and yaw rotation for VC view.
 
Ah I see, sounds like most of this is way over my head, but it will be interesting to play with adjustments later. I didn't realize you were using existing CFS3 head movement to do this, I thought it might have been some sort of external screen shake approach. But yeah, as far as I know CFS3 doesn't use the roll axis for head movement.
 
It's pretty subtle, and that's probably a good thing. I was afraid it was going to make me seasick if it was too strong and unrelenting.

Perhaps you could tap into the force feedback triggers, and use that to turn up the amplification temporarily?
 
Oh, good idea, most aircraft have that section in their aircraft.cfg. Might offer some additional control and possibilities.
 
It is an interesting idea about force feedback, but I can't easily read game settings from my dll.

Here is another "head shake" test version:
https://dl.dropboxusercontent.com/u/2918136/cfs/d3d8.20161221.zip

It is more correct now: previous version calculated forces at aircraft's center of gravity, but now they are properly calculated at cockpit location (including gunner stations).
I've also reduced vertical and forward movement, but increased the range of horizontal movement. I believe this is more correct for human body :)

This version also fixes the old "sky-colored triangles at edges of the screen" issue caused by head rotation when using TrackIR (though stock CFS3 doesn't seem to suffer from it as much as OFF). I'm not sure if there are any side-effects, will be interesting to know.

Finally, the effect is configurable now.
Add 3 lines into d3d8.ini:
OffsetSpring=12
OffsetResponse=6
RotationSpring=24


OffsetSpring and RotationSpring controls how fast the view returns to neutral position, i.e. how strong is the resistance to movement (offset) or rotation.
Minimum value for OffsetSpring is around 4, less than than might cause the view to drift even after a slight shake. Maximum is unlimited but there's probably no difference after 100 or so.
Setting RotationSpring to very low value produces an interesting effect -- the view tries to stay focused on the same point for some time regardless of aircraft rotation.

OffsetResponse basically controls the damping of head shake. Note that higher values means LESS damping, i.e. this parameter defines how quick the view responds to acceleration. It has no effect on rotation.
 
Thanks! Works well, and even seems to add 2-3 fps with my standard test conditions.

I used 9, 9, 9 to make the effect more obvious just to see how it behaves. It's pretty intuitive about how your head/body needs to move in response to the view shifts to keep the gunsight reticle in view. It makes a maneuvering dogfight an opportunity for some light exercise. :adoration:

I really appreciate that the peripheral triangles have been eliminated too.
 
Last edited:
I'm finding that I need to develop new piloting skills to account for the head movement. They act in a way that is very realistic, and I now have to move my body counter to the aircraft movements in response.

Most of the time it's no big problem, but in a swirling dogfight, it takes a whole different level of physical coordination than I'm used to. You have to swivel your head to track where the target is going while keeping your body lined up with the shifting gunsight. I will learn how to do it intuitively with time and practice, but for the time being the AI have a distinct advantage in that they don't have to deal with any of that.

I have managed to get my first kill, but it took way longer than usual, and I shot a lot of rounds off into empty space before I was done with him.

Thank you very much for this wonderful addition to your CFS3 modernization project. :santahat:
 
Thanks so much Ankor! I like the head movement a lot, it seems more natural now. And as I use the WOFF scenery in CFS3 I'm very happy not to see the blue triangles anymore!

The only visual issue I have is that part of the scene seem to tear. Not sure if that's the right way to describe it, and I can't capture it in a screenshot but I will sometimes see a flickering horizontal seam in different places on the screen. It's pretty hard to describe, so I hope that makes sense to you.

Also, I've had a couple CTDs. Here is the log from my last one:

Code:
0.00: DllMain - Starting up.
108.78: CreateD3DWrapper - Direct3D 9 Loaded.
108.85: D3DWrapper::GetAdapterDisplayMode - 1920, 1080, 60, 22
108.85: D3DWrapper::GetAdapterDisplayMode - 1920, 1080, 60, 22
108.85: D3DWrapper::CreateDevice - NVIDIA GeForce GT 730 (Driver Version: 10.18.13.5382)
108.85: D3DWrapper::CreateDevice - Hardware Vertex Processing
108.85: D3DWrapper::CreateDevice - Adapter: 0, Type: 1, Flags: 0x42
108.85: D3DWrapper::CreateDevice - Windowed: 0, Width: 1920, Height: 1080, Refresh: 0, Format: 22, Multisampling: 8
108.85: D3DWrapper::CreateDevice - AutoDepthStencilFormat: 75
108.85: D3DWrapper::CreateDevice - SwapEffect: 1, PresentationInterval: -2147483648
109.16: FakeDevice::FakeDevice - Available Texture Memory 4020 MB
109.16: FakeDevice::FakeDevice - cfs3.exe version: 3.1.0.30203
109.16: FakeDevice::FakeDevice - Patching external FOV: 35 (0.610865)
109.16: FakeDevice::FakeDevice - Patching visibility culling.
109.16: EffectBase::CheckShaderCache
109.16: LightArray::ApplyPatch - Patching maximum dynamic light count.
109.17: ModelsThread - Background Thread Started
109.17: AuxThread1 - Background Thread Started
109.18: AuxThread2 - Background Thread Started
109.19: AuxThread3 - Background Thread Started
109.20: ModelBuffer::Init - SSE4.1 is available
109.20: ModelBuffer::CreateBuffers - Capacity = 600000
109.21: ModelBuffer::Init - Available Texture Memory 3998 MB
109.21: Models::OnInit - Shadow Map Size: 2048, Filter: On
109.21: Models::OnInit - Available Texture Memory 3948 MB
109.21: DrawRecorder::Init - Scenery Shadow Map Size: 8192
109.21: DrawRecorder::Init - Terrain Shadow Map Size: 2048
109.21: DrawRecorder::Init - Available Texture Memory 3836 MB
109.21: DrawRecorder::StartCompileShaders
109.21: CompileShaders - Starting.
109.21: EffectBase::LoadGlobalDefines - Weather: Normal
109.21: SeaWater::CompileShaders - Sea: Calm
109.21: EffectBase::CompileEffectFile - Compiling: SeaWater.fx
109.74: EffectBase::CreateEffect - Loading: Texture.fx
109.75: TextureManager::Init - Loading TextureMagic.ini
116.37: EffectBase::CompileEffectFile - Compiling: SeaWater.fx - Done.
116.37: CompileShaders - Finished.
123.14: DrawRecorder::LoadShaders
123.14: EffectBase::CreateEffect - Loading: Generic.fx
123.18: EffectBase::CreateEffect - Loading: GroundShadow.fx
123.19: SeaWater::LoadShaders - Sea: Calm
123.19: EffectBase::CreateEffect - Loading: SeaWater.fx
123.19: EffectBase::CreateEffect - Loading: Scenery.fx
123.22: EffectBase::CreateEffect - Loading: Terrain.fx
123.26: EffectBase::CreateEffect - Loading: Clouds.fx
123.27: EffectBase::CreateEffect - Loading: Skybox.fx
123.30: EffectBase::CreateEffect - Loading: Models.fx
123.34: EffectBase::CreateEffect - Loading: RenderShadows.fx
123.37: DrawCalls buffer resized to 1024
124.96: DrawCalls buffer resized to 2048
124.96: ModelDrawData buffer resized to 512
124.98: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x142, Size = 524288
124.98: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x142, Size = 16384
124.99: SeaWater::SetupNormals - Normal Map #1: 512 x 512
125.18: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x102, Size = 65536
125.22: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x102, Size = 16384
125.24: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x1C4, Size = 32768
125.24: DrawRecorder::LogStats - T:1869.9 (264.7 0) MD:132 (4.14) SC:183 TE:365 CL:0 (0;0) SP:675 SH:0 UI:6 Oth:226 LT:59
125.53: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x142, Size = 32768
125.53: SeaWater::SetupNormals - Normal Map #2: 512 x 512
125.96: Clouds buffer resized to 512
126.33: SeaWater::SetupNormals - Normal Map #3: 512 x 512
126.43: SeaWater::SetupNormals - Normal Map #4: 512 x 512
126.49: SeaWater::SetupNormals - Normal Map #5: 512 x 512
126.61: SeaWater::SetupNormals - Normal Map #6: 512 x 512
126.69: SeaWater::SetupNormals - Normal Map #7: 512 x 512
126.81: SeaWater::SetupNormals - Normal Map #8: 512 x 512
126.96: SeaWater::SetupNormals - Normal Map #9: 512 x 512
127.02: DrawCalls buffer resized to 3072
127.08: SeaWater::SetupNormals - Normal Map #10: 512 x 512
587.11: FakeDevice::TestCooperativeLevel - Device State: 0x88760869
587.15: FakeDevice::Reset
587.15: TextureManager::Release
587.15: DrawRecorder::ReleaseBuffers
587.15: DrawRecorder::ReleaseEffects
587.15: SeaWater::Release - SeaWater::Release
587.15: Clouds::Release
587.15: Models::Release - Models::Release
587.15: ModelBuffer::Release - ModelBuffer::Release
587.63: EffectBase::CreateEffect - Loading: Texture.fx
587.63: ModelBuffer::Init - SSE4.1 is available
587.63: ModelBuffer::CreateBuffers - Capacity = 600000
587.63: ModelBuffer::Init - Available Texture Memory 3998 MB
587.63: Models::OnInit - Shadow Map Size: 2048, Filter: On
587.63: Models::OnInit - Available Texture Memory 3948 MB
587.63: DrawRecorder::Init - Scenery Shadow Map Size: 8192
587.63: DrawRecorder::Init - Terrain Shadow Map Size: 2048
587.63: DrawRecorder::Init - Available Texture Memory 3836 MB
587.63: FakeDevice::Reset - Available Texture Memory 3836 MB
588.01: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x142, Size = 524288
588.01: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x142, Size = 32768
588.03: SeaWater::SetupNormals - Normal Map #1: 512 x 512
588.32: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x102, Size = 65536
588.32: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x102, Size = 16384
588.32: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x1C4, Size = 32768
588.32: DrawRecorder::LogStats - T:522.1 (316.1 0) MD:164 (4.72) SC:184 TE:14 CL:429 (13;376) SP:674 SH:0 UI:7 Oth:233 LT:59
588.38: SeaWater::SetupNormals - Normal Map #2: 512 x 512
588.45: SeaWater::SetupNormals - Normal Map #3: 512 x 512
588.57: SeaWater::SetupNormals - Normal Map #4: 512 x 512
588.70: SeaWater::SetupNormals - Normal Map #5: 512 x 512
588.83: SeaWater::SetupNormals - Normal Map #6: 512 x 512
588.95: SeaWater::SetupNormals - Normal Map #7: 512 x 512
589.08: SeaWater::SetupNormals - Normal Map #8: 512 x 512
589.21: SeaWater::SetupNormals - Normal Map #9: 512 x 512
589.34: SeaWater::SetupNormals - Normal Map #10: 512 x 512
589.47: SeaWater::SetupNormals - Normal Map #11: 512 x 512
589.60: SeaWater::SetupNormals - Normal Map #12: 512 x 512
589.70: SeaWater::SetupNormals - Normal Map #13: 512 x 512
589.94: SeaWater::SetupNormals - Normal Map #14: 512 x 512
590.08: SeaWater::SetupNormals - Normal Map #15: 512 x 512
590.22: SeaWater::SetupNormals - Normal Map #16: 512 x 512
599.20: FakeDevice::TestCooperativeLevel - Device State: 0x88760869
599.22: FakeDevice::Reset
599.22: TextureManager::Release
599.22: DrawRecorder::ReleaseBuffers
599.22: DrawRecorder::ReleaseEffects
599.22: SeaWater::Release - SeaWater::Release
599.22: Clouds::Release
599.22: Models::Release - Models::Release
599.22: ModelBuffer::Release - ModelBuffer::Release
599.59: EffectBase::CreateEffect - Loading: Texture.fx
599.59: ModelBuffer::Init - SSE4.1 is available
599.59: ModelBuffer::CreateBuffers - Capacity = 600000
599.59: ModelBuffer::Init - Available Texture Memory 3998 MB
599.60: Models::OnInit - Shadow Map Size: 2048, Filter: On
599.60: Models::OnInit - Available Texture Memory 3948 MB
599.60: DrawRecorder::Init - Scenery Shadow Map Size: 8192
599.60: DrawRecorder::Init - Terrain Shadow Map Size: 2048
599.60: DrawRecorder::Init - Available Texture Memory 3836 MB
599.60: FakeDevice::Reset - Available Texture Memory 3836 MB
599.89: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x142, Size = 524288
599.89: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x142, Size = 32768
599.91: SeaWater::SetupNormals - Normal Map #1: 512 x 512
600.17: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x102, Size = 65536
600.17: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x102, Size = 16384
600.19: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x1C4, Size = 32768
600.24: SeaWater::SetupNormals - Normal Map #2: 512 x 512
600.29: SeaWater::SetupNormals - Normal Map #3: 512 x 512
600.35: SeaWater::SetupNormals - Normal Map #4: 512 x 512
600.48: SeaWater::SetupNormals - Normal Map #5: 512 x 512
600.63: SeaWater::SetupNormals - Normal Map #6: 512 x 512
600.77: SeaWater::SetupNormals - Normal Map #7: 512 x 512
600.86: SeaWater::SetupNormals - Normal Map #8: 512 x 512
600.99: SeaWater::SetupNormals - Normal Map #9: 512 x 512
601.12: SeaWater::SetupNormals - Normal Map #10: 512 x 512
601.24: SeaWater::SetupNormals - Normal Map #11: 512 x 512
601.36: SeaWater::SetupNormals - Normal Map #12: 512 x 512
601.48: SeaWater::SetupNormals - Normal Map #13: 512 x 512
601.68: SeaWater::SetupNormals - Normal Map #14: 512 x 512
601.87: SeaWater::SetupNormals - Normal Map #15: 512 x 512
601.97: SeaWater::SetupNormals - Normal Map #16: 512 x 512
606.72: Clouds buffer resized to 1024
606.76: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x142, Size = 65536
608.48: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x142, Size = 1048576
608.48: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x142, Size = 131072
610.73: ModelDrawData buffer resized to 1024
615.12: DrawRecorder::BeginScene - World reset.
615.12: Clouds::Clear
616.21: DrawRecorder::LockLabelTexture - Creating Label Texture 0, Format = 21
616.61: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x144, Size = 32768
621.11: DrawRecorder::LogStats - T:40.5 (2.2 0) MD:442 (2.26) SC:412 TE:486 CL:0 (0;0) SP:681 SH:0 UI:7 Oth:204 LT:59
624.32: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x102, Size = 131072
624.66: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x242, Size = 32768
624.66: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x242, Size = 16384
636.80: ModelDrawData buffer resized to 1536
653.88: DrawRecorder::LogStats - T:47.5 (2.2 0) MD:391 (2.04) SC:388 TE:537 CL:0 (0;0) SP:666 SH:0 UI:5 Oth:124 LT:59
663.88: DrawCalls buffer resized to 4096
663.88: ModelDrawData buffer resized to 2048
669.77: GeometryBuffer::PopulateBuffers - Resize Index Buffer FVF = 0x102, Size = 32768
686.67: DrawRecorder::LogStats - T:51.1 (32.5 856050) MD:360 (1.73) SC:490 TE:509 CL:0 (0;0) SP:237 SH:0 UI:5 Oth:1 LT:10
686.89: GeometryBuffer::PopulateBuffers - Resize Vertex Buffer FVF = 0x102, Size = 262144
719.46: DrawRecorder::LogStats - T:37.2 (2.2 0) MD:441 (1.61) SC:588 TE:497 CL:0 (0;0) SP:711 SH:0 UI:5 Oth:1 LT:59
752.24: DrawRecorder::LogStats - T:30.3 (16.3 0) MD:669 (1.93) SC:587 TE:509 CL:0 (0;0) SP:734 SH:0 UI:5 Oth:291 LT:59
785.04: DrawRecorder::LogStats - T:32.4 (1.3 0) MD:193 (3.06) SC:299 TE:265 CL:0 (0;0) SP:688 SH:0 UI:5 Oth:217 LT:59
803.35: DrawRecorder::BeginScene - World reset.
803.35: Clouds::Clear
803.88: DrawRecorder::BeginScene - World reset.
803.88: Clouds::Clear
817.80: DrawRecorder::LogStats - T:10.8 (3.4 0) MD:91 (2.91) SC:3 TE:426 CL:541 (16;761) SP:4 SH:0 UI:9 Oth:61 LT:0
850.58: DrawRecorder::LogStats - T:15.8 (5.6 13988) MD:88 (3.01) SC:4 TE:460 CL:529 (16;1020) SP:4 SH:0 UI:7 Oth:54 LT:0
883.35: DrawRecorder::LogStats - T:11.2 (1.7 0) MD:23 (3.78) SC:112 TE:352 CL:0 (16;1676) SP:7 SH:0 UI:8 Oth:58 LT:0
885.84: DrawRecorder::BeginScene - World reset.
885.84: Clouds::Clear
916.14: DrawRecorder::LogStats - T:31.2 (1.1 0) MD:180 (2.17) SC:79 TE:119 CL:11 (1;25) SP:35 SH:0 UI:15 Oth:5 LT:0
948.90: DrawRecorder::LogStats - T:45.0 (1.2 0) MD:159 (2.02) SC:294 TE:279 CL:9 (1;25) SP:15 SH:0 UI:11 Oth:5 LT:0
981.69: DrawRecorder::LogStats - T:27.0 (1.1 0) MD:174 (2.25) SC:122 TE:152 CL:8 (1;25) SP:37 SH:0 UI:5 Oth:5 LT:2
1014.47: DrawRecorder::LogStats - T:31.1 (1.3 808086) MD:231 (1.83) SC:235 TE:218 CL:12 (1;25) SP:70 SH:0 UI:5 Oth:5 LT:0
1047.27: DrawRecorder::LogStats - T:36.2 (0.9 0) MD:159 (1.98) SC:6 TE:116 CL:3 (1;25) SP:40 SH:0 UI:41 Oth:1 LT:0
1080.05: DrawRecorder::LogStats - T:23.3 (0.6 0) MD:26 (4.77) SC:9 TE:133 CL:2 (1;25) SP:87 SH:0 UI:13 Oth:0 LT:0
1112.83: DrawRecorder::LogStats - T:12.4 (0.5 0) MD:27 (4.59) SC:0 TE:0 CL:12 (1;25) SP:92 SH:0 UI:13 Oth:5 LT:0
1145.61: DrawRecorder::LogStats - T:43.5 (1.1 0) MD:28 (4.25) SC:432 TE:430 CL:8 (1;25) SP:99 SH:0 UI:13 Oth:1 LT:0
1178.42: DrawRecorder::LogStats - T:55.5 (1.0 0) MD:166 (12.31) SC:325 TE:331 CL:8 (1;25) SP:45 SH:0 UI:13 Oth:5 LT:0
1196.55: DrawRecorder::BeginScene - World reset.
1196.55: Clouds::Clear
1200.54: DrawRecorder::BeginScene - World reset.
1200.54: Clouds::Clear
1211.19: DrawRecorder::LogStats - T:51.1 (1.2 0) MD:177 (2.47) SC:208 TE:190 CL:8 (1;15) SP:86 SH:0 UI:24 Oth:1 LT:0
1243.99: DrawRecorder::LogStats - T:38.1 (1.1 0) MD:173 (2.23) SC:126 TE:143 CL:9 (1;25) SP:47 SH:0 UI:5 Oth:1 LT:0
1276.78: DrawRecorder::LogStats - T:64.2 (1.1 0) MD:35 (4.43) SC:343 TE:334 CL:7 (1;25) SP:49 SH:0 UI:13 Oth:1 LT:0
1309.57: DrawRecorder::LogStats - T:19.1 (0.6 9353) MD:30 (4.13) SC:33 TE:203 CL:2 (1;25) SP:46 SH:0 UI:13 Oth:0 LT:0
1342.35: DrawRecorder::LogStats - T:27.0 (0.9 0) MD:35 (4.43) SC:297 TE:267 CL:8 (1;25) SP:57 SH:0 UI:13 Oth:0 LT:0
1373.06: D3DWrapper::GetAdapterDisplayMode - 1920, 1080, 60, 22
1375.13: DrawRecorder::LogStats - T:33.9 (0.9 0) MD:35 (4.57) SC:308 TE:281 CL:8 (1;25) SP:56 SH:0 UI:13 Oth:0 LT:0
1399.01: DrawRecorder::BeginScene - World reset.
1399.01: Clouds::Clear
1399.15: DrawRecorder::BeginScene - World reset.
1399.15: Clouds::Clear
1407.35: DrawRecorder::BeginScene - World reset.
1407.35: Clouds::Clear
1408.59: DrawRecorder::LogStats - T:1233.9 (0.6 0) MD:27 (4.59) SC:134 TE:54 CL:0 (0;0) SP:24 SH:0 UI:15 Oth:0 LT:0
1441.38: DrawRecorder::LogStats - T:46.6 (1.2 0) MD:165 (2.33) SC:309 TE:273 CL:9 (1;25) SP:43 SH:0 UI:17 Oth:0 LT:0
1474.15: DrawRecorder::LogStats - T:41.9 (1.1 0) MD:166 (1.90) SC:158 TE:262 CL:7 (1;25) SP:16 SH:0 UI:8 Oth:1 LT:0
1506.96: DrawRecorder::LogStats - T:47.4 (1.1 0) MD:167 (2.14) SC:187 TE:203 CL:8 (1;25) SP:17 SH:0 UI:10 Oth:6 LT:0
1539.73: DrawRecorder::LogStats - T:29.0 (1.2 0) MD:162 (1.98) SC:203 TE:283 CL:11 (1;25) SP:24 SH:0 UI:8 Oth:5 LT:0
1572.50: DrawRecorder::LogStats - T:49.1 (1.3 0) MD:166 (1.93) SC:321 TE:315 CL:9 (1;25) SP:6 SH:0 UI:5 Oth:5 LT:0
 
Last edited by a moderator:
Ok, glad you like it. Yes, it makes it more difficult to aim while turning. I will probably add a few additional settings for adjusting the movement limits.

The problem of those triangles is an odd one. It seems CFS3 updates view position/direction twice for each frame, but calculates terrain visibility only once. So if any head movement occurs between updates the list visible terrain triangles no longer matches the actual view. And TrackIR seems to update the view at arbitrary moments so it is very likely to happen at "wrong" time.
I fixed it by simply disabling the second view update (ok, it wasn't so simple to figure out) and looks like it worked well and without side effects. No idea why they made it like this. It might have introduced one frame lag to TrackIR movement, but I guess it is not really noticeable.

However, I noticed that missing triangles is still an issue when zooming out and when rotating the weapon in gunner position (I tested it in WOFF). Most likely it is a similar problem - view update after visibility check, but currenly I'm not looking into it as it seems to be an entirely different part of the code.


gecko, screen tearing happens because you have turned off VSync. I guess turning it off helps with frame rate, but the drawback is this kind of tearing when view moves a lot.
Modern GPUs have something called "adaptive VSync" which prevents tearing and doesn't reduce FPS. It can be enabled in driver settings, but I'm not entirely sure how it works and how modern your GPU has to be.


As for the CTD, the logs doesn't show anything, but I've also had several CTDs during testing (though not with this latest version) when my mod tried to rotate the view to extreme angles. Maybe I need to add a stricter sanity checks into my math. There is a Russian joke about the military thinking: "during wartime the value of sine can reach 4", but it seems that the game engine doesn't agree with it :)
 
It's been working great in most of my installs but in Rising Sun - Pearl Harbor it consistently crashes after a short time in game.

The last in a long string of similar log entries is:

73.94: WaterBuffer::AddIndexed - Error! Water buffer exceeded 131072 indices.

Just before the game crashes the terrain starts flashing large artifact areas, and then it locks up.
It looks like there's something about the way the Rising Sun Mod constructed its terrain that is not compatible with the shaders.
 
Hmm... Yes, this error is caused by too much water.
I didn't expect it to be a problem, but can probably fix it.
 
If I set the Water Load Budget in cfs3config.exe to 50% or less then the error does not crop up.

The line in ConfigOverrides.xml looks like this:

<InteriorWaterLoadingFactor val="0.50"/>
 
Thank you once again Major! This cleared up a water/terrain issue I was having.

And thank you once again as well Ankor for your stunning work!
 
Thanks for the tip, that fixed it. I have the adaptive option, but it didn't work. It seems my settings have somehow gotten reset. I'm also down to getting as low as 12 fps. So I need to figure out what to do to get back on track before I can give much useful test info.
 
Back
Top