Skip to content

Commit 8c9f0e3

Browse files
committed
CBlender_Screen_SET: Add OpenGL-specific implementation.
1 parent e6798d5 commit 8c9f0e3

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

src/Layers/xrRender/Blender_Screen_SET.cpp

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,95 @@ void CBlender_Screen_SET::Compile (CBlender_Compile& C)
189189
C.r_End ();
190190
}
191191

192+
#elif defined(USE_OGL)
193+
194+
void CBlender_Screen_SET::Compile (CBlender_Compile& C)
195+
{
196+
IBlender::Compile (C);
197+
//C.r_Pass ("stub_notransform_t", "Blender_Screen_SET", false);
198+
199+
if (oBlend.IDselected==6)
200+
{
201+
// Usually for wallmarks
202+
C.r_Pass ("stub_notransform_t", "stub_default_ma", false);
203+
204+
VERIFY(C.L_textures.size()>0);
205+
C.r_Sampler("s_base", C.L_textures[0], false, D3DTADDRESS_CLAMP);
206+
}
207+
else
208+
{
209+
if (9==oBlend.IDselected)
210+
{
211+
// 4x R
212+
C.r_Pass ("stub_notransform_t_m4", "stub_default", false);
213+
//C.StageSET_Color (D3DTA_TEXTURE, D3DTOP_MODULATE4X, D3DTA_DIFFUSE);
214+
//C.StageSET_Alpha (D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_DIFFUSE);
215+
}
216+
else
217+
{
218+
if ((7==oBlend.IDselected) || (8==oBlend.IDselected))
219+
{
220+
// 2x R
221+
C.r_Pass ("stub_notransform_t_m2", "stub_default", false);
222+
//C.StageSET_Color (D3DTA_TEXTURE, D3DTOP_MODULATE2X, D3DTA_DIFFUSE);
223+
//C.StageSET_Alpha (D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_DIFFUSE);
224+
}
225+
else
226+
{
227+
// 1x R
228+
C.r_Pass ("stub_notransform_t", "stub_default", false);
229+
//C.StageSET_Color (D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_DIFFUSE);
230+
//C.StageSET_Alpha (D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_DIFFUSE);
231+
}
232+
}
233+
//C.Stage_Texture (oT_Name);
234+
//C.Stage_Matrix (oT_xform, 0);
235+
//C.Stage_Constant ("$null");
236+
//C.StageEnd ();
237+
VERIFY(C.L_textures.size()>0);
238+
C.r_Sampler("s_base", C.L_textures[0], false, D3DTADDRESS_CLAMP);
239+
}
240+
241+
C.PassSET_ZB (oZTest.value,oZWrite.value);
242+
243+
switch (oBlend.IDselected)
244+
{
245+
case 0: // SET
246+
C.PassSET_Blend (FALSE, D3DBLEND_ONE,D3DBLEND_ZERO, FALSE,0);
247+
break;
248+
case 1: // BLEND
249+
C.PassSET_Blend (TRUE, D3DBLEND_SRCALPHA,D3DBLEND_INVSRCALPHA, TRUE,oAREF.value);
250+
break;
251+
case 2: // ADD
252+
C.PassSET_Blend (TRUE, D3DBLEND_ONE,D3DBLEND_ONE, FALSE,oAREF.value);
253+
break;
254+
case 3: // MUL
255+
C.PassSET_Blend (TRUE, D3DBLEND_DESTCOLOR,D3DBLEND_ZERO, FALSE,oAREF.value);
256+
break;
257+
case 4: // MUL_2X
258+
C.PassSET_Blend (TRUE, D3DBLEND_DESTCOLOR,D3DBLEND_SRCCOLOR, FALSE,oAREF.value);
259+
break;
260+
case 5: // ALPHA-ADD
261+
C.PassSET_Blend (TRUE, D3DBLEND_SRCALPHA,D3DBLEND_ONE, TRUE,oAREF.value);
262+
break;
263+
case 6: // MUL_2X + A-test
264+
C.PassSET_Blend (TRUE, D3DBLEND_DESTCOLOR,D3DBLEND_SRCCOLOR, FALSE,oAREF.value);
265+
break;
266+
case 7: // SET (2r)
267+
C.PassSET_Blend (TRUE, D3DBLEND_ONE,D3DBLEND_ZERO, TRUE,0);
268+
break;
269+
case 8: // BLEND (2r)
270+
C.PassSET_Blend (TRUE, D3DBLEND_SRCALPHA,D3DBLEND_INVSRCALPHA, TRUE,oAREF.value);
271+
break;
272+
case 9: // BLEND (2r)
273+
C.PassSET_Blend (TRUE, D3DBLEND_SRCALPHA,D3DBLEND_INVSRCALPHA, TRUE,oAREF.value);
274+
break;
275+
}
276+
C.PassSET_LightFog (oLighting.value,oFog.value);
277+
278+
C.r_End ();
279+
}
280+
192281
#else // USE_DX10
193282

194283
void CBlender_Screen_SET::Compile (CBlender_Compile& C)

0 commit comments

Comments
 (0)