Skip to content

Commit 14cd244

Browse files
committed
Engine, shaders: add lut phase
1 parent 106d56d commit 14cd244

File tree

8 files changed

+105
-0
lines changed

8 files changed

+105
-0
lines changed
-2 Bytes
Binary file not shown.

res/gamedata/shaders/r5/pp_lut.ps

146 Bytes
Binary file not shown.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include "stdafx.h"
2+
3+
#include "blender_lut.h"
4+
5+
CBlender_lut::CBlender_lut() { description.CLS = 0; }
6+
7+
LPCSTR CBlender_lut::getComment()
8+
{
9+
return "INTERNAL: LUT";
10+
}
11+
12+
void CBlender_lut::Compile(CBlender_Compile& C)
13+
{
14+
IBlender::Compile(C);
15+
16+
C.r_Pass("stub_screen_space", "pp_lut", FALSE, FALSE, FALSE);
17+
C.r_dx11Texture("s_image", r2_RT_generic0);
18+
C.r_dx11Texture("s_lut_atlas", "shaders\\lut_atlas");
19+
20+
C.r_dx11Sampler("smp_base");
21+
C.r_dx11Sampler("smp_nofilter");
22+
C.r_dx11Sampler("smp_rtlinear");
23+
C.r_dx11Sampler("smp_linear");
24+
C.r_End();
25+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#pragma once
2+
3+
class CBlender_lut : public IBlender
4+
{
5+
public:
6+
CBlender_lut();
7+
~CBlender_lut() override = default;
8+
9+
LPCSTR getComment() override;
10+
void Compile(CBlender_Compile& C) override;
11+
};
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include "stdafx.h"
2+
3+
void CRenderTarget::phase_lut()
4+
{
5+
PIX_EVENT(phase_LUT);
6+
7+
//Constants
8+
u32 Offset = 0;
9+
u32 C = color_rgba(0, 0, 0, 255);
10+
11+
float d_Z = EPS_S;
12+
float d_W = 1.0f;
13+
float w = float(Device.dwWidth);
14+
float h = float(Device.dwHeight);
15+
16+
Fvector2 p0, p1;
17+
#if defined(USE_DX10) || defined(USE_DX11)
18+
p0.set(0.0f, 0.0f);
19+
p1.set(1.0f, 1.0f);
20+
#else
21+
p0.set(0.5f / w, 0.5f / h);
22+
p1.set((w + 0.5f) / w, (h + 0.5f) / h);
23+
#endif
24+
25+
//////////////////////////////////////////////////////////////////////////
26+
//Set MSAA/NonMSAA rendertarget
27+
#if defined(USE_DX10) || defined(USE_DX11)
28+
ref_rt& dest_rt = RImplementation.o.msaa ? rt_Generic : rt_Color;
29+
u_setrt(RCache, dest_rt, 0, 0, NULL);
30+
#else
31+
u_setrt(rt_Generic_0, nullptr, nullptr, nullptr);
32+
#endif
33+
34+
RCache.set_CullMode(CULL_NONE);
35+
RCache.set_Stencil(FALSE);
36+
37+
//Fill vertex buffer
38+
FVF::TL* pv = (FVF::TL*)RImplementation.Vertex.Lock(4, g_combine->vb_stride, Offset);
39+
pv->set(0, float(h), d_Z, d_W, C, p0.x, p1.y); pv++;
40+
pv->set(0, 0, d_Z, d_W, C, p0.x, p0.y); pv++;
41+
pv->set(float(w), float(h), d_Z, d_W, C, p1.x, p1.y); pv++;
42+
pv->set(float(w), 0, d_Z, d_W, C, p1.x, p0.y); pv++;
43+
RImplementation.Vertex.Unlock(4, g_combine->vb_stride);
44+
45+
//Set pass
46+
RCache.set_Element(s_lut->E[0]);
47+
48+
//Set geometry
49+
RCache.set_Geometry(g_combine);
50+
RCache.Render(D3DPT_TRIANGLELIST, Offset, 0, 4, 0, 2);
51+
52+
#if defined(USE_DX10) || defined(USE_DX11)
53+
HW.get_context(CHW::IMM_CTX_ID)->CopyResource(rt_Generic_0->pTexture->surface_get(), dest_rt->pTexture->surface_get());
54+
#endif
55+
};

src/Layers/xrRenderPC_R4/r4_rendertarget_phase_combine.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,8 @@ void CRenderTarget::phase_combine()
400400
if (ps_r2_ls_flags.test(R2FLAG_DOF))
401401
phase_dof();
402402

403+
phase_lut();
404+
403405
//(Anomaly) Compute night vision effect
404406
if (ps_r2_nightvision > 0)
405407
phase_nightvision();

src/Layers/xrRenderPC_R4/xrRender_R4.vcxproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
<ClInclude Include="..\xrRender\blenders\blender_dof.h" />
7676
<ClInclude Include="..\xrRender\blenders\blender_gasmask_drops.h" />
7777
<ClInclude Include="..\xrRender\blenders\blender_gasmask_dudv.h" />
78+
<ClInclude Include="..\xrRender\blenders\blender_lut.h" />
7879
<ClInclude Include="..\xrRender\blenders\blender_nightvision.h" />
7980
<ClInclude Include="..\xrRender\blenders\dx11RainBlender.h" />
8081
<ClInclude Include="..\xrRenderDX11\dx11ConstantBuffer.h" />
@@ -246,6 +247,7 @@
246247
<ClCompile Include="..\xrRender\blenders\blender_dof.cpp" />
247248
<ClCompile Include="..\xrRender\blenders\blender_gasmask_drops.cpp" />
248249
<ClCompile Include="..\xrRender\blenders\blender_gasmask_dudv.cpp" />
250+
<ClCompile Include="..\xrRender\blenders\blender_lut.cpp" />
249251
<ClCompile Include="..\xrRender\blenders\Blender_Model_EbB_deferred.cpp" />
250252
<ClCompile Include="..\xrRender\blenders\blender_nightvision.cpp" />
251253
<ClCompile Include="..\xrRender\blenders\Blender_Particle_deferred.cpp" />
@@ -335,6 +337,7 @@
335337
<ClCompile Include="..\xrRender\rendertarget_phase_dof.cpp" />
336338
<ClCompile Include="..\xrRender\rendertarget_phase_gasmask_drops.cpp" />
337339
<ClCompile Include="..\xrRender\rendertarget_phase_gasmask_dudv.cpp" />
340+
<ClCompile Include="..\xrRender\rendertarget_phase_lut.cpp" />
338341
<ClCompile Include="..\xrRender\rendertarget_phase_nightvision.cpp" />
339342
<ClCompile Include="..\xrRender\ResourceManager.cpp" />
340343
<ClCompile Include="..\xrRender\ResourceManager_Loader.cpp" />

src/Layers/xrRenderPC_R4/xrRender_R4.vcxproj.filters

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,6 +744,9 @@
744744
<ClInclude Include="..\..\utils\xrLC_Light\R_light.h">
745745
<Filter>Lights</Filter>
746746
</ClInclude>
747+
<ClInclude Include="..\xrRender\blenders\blender_lut.h">
748+
<Filter>Shading templates</Filter>
749+
</ClInclude>
747750
</ItemGroup>
748751
<ItemGroup>
749752
<ClCompile Include="stdafx.cpp">
@@ -1376,6 +1379,12 @@
13761379
<ClCompile Include="..\xrRender\rendertarget_phase_gasmask_dudv.cpp">
13771380
<Filter>Core_Target</Filter>
13781381
</ClCompile>
1382+
<ClCompile Include="..\xrRender\blenders\blender_lut.cpp">
1383+
<Filter>Shading templates</Filter>
1384+
</ClCompile>
1385+
<ClCompile Include="..\xrRender\rendertarget_phase_lut.cpp">
1386+
<Filter>Core_Target</Filter>
1387+
</ClCompile>
13791388
</ItemGroup>
13801389
<ItemGroup>
13811390
<None Include="packages.config" />

0 commit comments

Comments
 (0)