Advertisement
Guest User

Untitled

a guest
Oct 6th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.39 KB | None | 0 0
  1. private void SetRenderState(Material mat)
  2.         {
  3.             device.SetRenderState<ZBufferType>(RenderState.ZEnable, !mat.DepthTest ? ZBufferType.UseZBuffer : ZBufferType.DontUseZBuffer);
  4.             device.SetRenderState(RenderState.ZWriteEnable, !mat.DepthWrite);
  5.         }
  6.  
  7.         private void SetShadowMeshState()
  8.         {
  9.             // Special case for shadow meshes
  10.             device.SetRenderState(RenderState.ZWriteEnable, false);
  11.             device.SetRenderState(RenderState.Lighting, false);
  12.  
  13.             device.SetRenderState(RenderState.TextureFactor, new Color4(0, 0, 0, 0.9f).ToBgra());
  14.             device.SetTextureStageState(0, TextureStage.Constant, new Color4(0.1f, 0.1f, 0.1f, 1).ToBgra());
  15.             device.SetTextureStageState(0, TextureStage.ColorOperation, TextureOperation.SelectArg1);
  16.             device.SetTextureStageState(0, TextureStage.ColorArg1, TextureArgument.TFactor);
  17.             device.SetTextureStageState(0, TextureStage.AlphaArg1, TextureArgument.TFactor);
  18.  
  19.             device.SetTextureStageState(1, TextureStage.ColorOperation, TextureOperation.Disable);
  20.             device.SetTextureStageState(1, TextureStage.AlphaOperation, TextureOperation.Disable);
  21.         }
  22.  
  23.         private void SetTextureState(Material mat)
  24.         {
  25.             for (int i = 1; i < 4; i++)
  26.             {
  27.                 device.SetTextureStageState(i, TextureStage.ColorOperation, TextureOperation.Disable);
  28.                 device.SetTextureStageState(i, TextureStage.AlphaOperation, TextureOperation.Disable);
  29.                
  30.                 device.SetTextureStageState(0, TextureStage.AlphaArg1, TextureArgument.Texture);
  31.  
  32.                 device.SetSamplerState(i, SamplerState.MinFilter, TextureFilter.Linear);
  33.                 device.SetSamplerState(i, SamplerState.MagFilter, TextureFilter.Anisotropic);
  34.                 device.SetSamplerState(i, SamplerState.MipFilter, TextureFilter.Linear);
  35.             }
  36.  
  37.             device.SetRenderState(RenderState.TextureFactor, mat.Color.ToRgba());
  38.  
  39.             if (mat.DetailType != MaterialDetailType.BlendMask)
  40.             {
  41.                 if (mat.Texture != null)
  42.                 {
  43.                     device.SetTextureStageState(0, TextureStage.ColorOperation, TextureOperation.Modulate);
  44.                     device.SetTextureStageState(0, TextureStage.ColorArg1, TextureArgument.Texture);
  45.                     device.SetTextureStageState(0, TextureStage.ColorArg0, TextureArgument.Current);
  46.                     device.SetTexture(0, mat.Texture.Handle);
  47.  
  48.                     if (mat.UVScale == Vector2.Zero)
  49.                         mat.UVScale = new Vector2(1, 1);
  50.  
  51.                     device.SetTextureStageState(0, TextureStage.TextureTransformFlags, TextureTransform.Count2);
  52.                     device.SetTransform(TransformState.Texture0, Matrix.Scaling(mat.UVScale.X, mat.UVScale.Y, 1));
  53.                     device.SetTextureStageState(0, TextureStage.ResultArg, TextureArgument.Current);
  54.  
  55.                     device.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.Linear);
  56.                     device.SetSamplerState(0, SamplerState.MagFilter, TextureFilter.Anisotropic);
  57.                     device.SetSamplerState(0, SamplerState.MipFilter, TextureFilter.Linear);
  58.                 }
  59.             }
  60.             else
  61.             {
  62.                 if (mat.Texture != null)
  63.                 {
  64.                     device.SetTextureStageState(0, TextureStage.ColorOperation, TextureOperation.SelectArg1);
  65.                     device.SetTextureStageState(0, TextureStage.ColorArg1, TextureArgument.Texture);
  66.                     device.SetTextureStageState(0, TextureStage.ColorArg0, TextureArgument.Current);
  67.                     device.SetTexture(0, mat.Texture.Handle);
  68.  
  69.                     if (mat.UVScale == Vector2.Zero)
  70.                         mat.UVScale = new Vector2(1, 1);
  71.  
  72.                     device.SetTextureStageState(0, TextureStage.TextureTransformFlags, TextureTransform.Count2);
  73.                     device.SetTransform(TransformState.Texture0, Matrix.Scaling(mat.UVScale.X, mat.UVScale.Y, 1));
  74.                     device.SetTextureStageState(0, TextureStage.ResultArg, TextureArgument.Temp);
  75.  
  76.                     device.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.Linear);
  77.                     device.SetSamplerState(0, SamplerState.MagFilter, TextureFilter.Anisotropic);
  78.                     device.SetSamplerState(0, SamplerState.MipFilter, TextureFilter.Linear);
  79.                 }
  80.             }
  81.  
  82.             if (mat.Detail != null)
  83.             {
  84.                 if (mat.DetailType == MaterialDetailType.BlendMask)
  85.                 {
  86.                     device.SetTexture(1, mat.Detail.Handle);
  87.  
  88.                     device.SetTextureStageState(1, TextureStage.ColorOperation, TextureOperation.SelectArg1);
  89.  
  90.                     device.SetTextureStageState(1, TextureStage.ColorArg0, TextureArgument.Current);
  91.                     device.SetTextureStageState(1, TextureStage.ColorArg1, TextureArgument.Texture);
  92.                     device.SetTextureStageState(1, TextureStage.ResultArg, TextureArgument.Temp);
  93.                     device.SetTextureStageState(1, TextureStage.TexCoordIndex, 0);
  94.  
  95.                     device.SetSamplerState(1, SamplerState.MinFilter, TextureFilter.Linear);
  96.                     device.SetSamplerState(1, SamplerState.MagFilter, TextureFilter.Anisotropic);
  97.                     device.SetSamplerState(1, SamplerState.MipFilter, TextureFilter.Linear);
  98.                 }
  99.                 else
  100.                 {
  101.                     device.SetTexture(1, mat.Detail.Handle);
  102.  
  103.                     device.SetTextureStageState(1, TextureStage.ColorOperation, TextureOperation.Modulate);
  104.  
  105.                     device.SetTextureStageState(1, TextureStage.ColorArg0, TextureArgument.Current);
  106.                     device.SetTextureStageState(1, TextureStage.ColorArg1, TextureArgument.Texture);
  107.                     device.SetTextureStageState(1, TextureStage.ResultArg, TextureArgument.Current);
  108.                     device.SetTextureStageState(1, TextureStage.TexCoordIndex, 0);
  109.  
  110.                     device.SetSamplerState(1, SamplerState.MinFilter, TextureFilter.Linear);
  111.                     device.SetSamplerState(1, SamplerState.MagFilter, TextureFilter.Anisotropic);
  112.                     device.SetSamplerState(1, SamplerState.MipFilter, TextureFilter.Linear);
  113.                 }
  114.             }
  115.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement