@@ -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
194283void CBlender_Screen_SET::Compile (CBlender_Compile& C)
0 commit comments