text: #if !defined(__EMSCRIPTEN__)
  static const char model_unlit_ps_gl2[] = R"(#version 120
  #ifdef GL_ARB_shading_language_420pack
  #extension GL_ARB_shading_language_420pack : require
  #endif
  
  struct PS_Input
  {
      vec4 PosVS;
      vec4 Color;
      vec2 UV;
      vec4 PosP;
  };
  
  struct PS_ConstanBuffer
  {
      vec4 fLightDirection;
      vec4 fLightColor;
      vec4 fLightAmbient;
      vec4 fFlipbookParameter;
      vec4 fUVDistortionParameter;
      vec4 fBlendTextureParameter;
      vec4 fCameraFrontDirection;
      vec4 fFalloffParameter;
      vec4 fFalloffBeginColor;
      vec4 fFalloffEndColor;
      vec4 fEmissiveScaling;
      vec4 fEdgeColor;
      vec4 fEdgeParameter;
      vec4 softParticleParam;
      vec4 reconstructionParam1;
      vec4 reconstructionParam2;
      vec4 mUVInversedBack;
  };
  
  uniform PS_ConstanBuffer CBPS0;
  
  uniform sampler2D Sampler_sampler_colorTex;
  
  varying vec4 _VSPS_Color;
  varying vec2 _VSPS_UV;
  varying vec4 _VSPS_PosP;
  
  vec4 _main(PS_Input Input)
  {
      vec4 Output = texture2D(Sampler_sampler_colorTex, Input.UV) * Input.Color;
      vec3 _45 = Output.xyz * CBPS0.fEmissiveScaling.x;
      Output = vec4(_45.x, _45.y, _45.z, Output.w);
      if (Output.w == 0.0)
      {
          discard;
      }
      return Output;
  }
  
  void main()
  {
      PS_Input Input;
      Input.PosVS = gl_FragCoord;
      Input.Color = _VSPS_Color;
      Input.UV = _VSPS_UV;
      Input.PosP = _VSPS_PosP;
      vec4 _83 = _main(Input);
      gl_FragData[0] = _83;
  }
  
  )";
  
  static const char model_unlit_ps_gl3[] = R"(#version 330
  #ifdef GL_ARB_shading_language_420pack
  #extension GL_ARB_shading_language_420pack : require
  #endif
  
  struct PS_Input
  {
      vec4 PosVS;
      vec4 Color;
      vec2 UV;
      vec4 PosP;
  };
  
  struct PS_ConstanBuffer
  {
      vec4 fLightDirection;
      vec4 fLightColor;
      vec4 fLightAmbient;
      vec4 fFlipbookParameter;
      vec4 fUVDistortionParameter;
      vec4 fBlendTextureParameter;
      vec4 fCameraFrontDirection;
      vec4 fFalloffParameter;
      vec4 fFalloffBeginColor;
      vec4 fFalloffEndColor;
      vec4 fEmissiveScaling;
      vec4 fEdgeColor;
      vec4 fEdgeParameter;
      vec4 softParticleParam;
      vec4 reconstructionParam1;
      vec4 reconstructionParam2;
      vec4 mUVInversedBack;
  };
  
  uniform PS_ConstanBuffer CBPS0;
  
  uniform sampler2D Sampler_sampler_colorTex;
  uniform sampler2D Sampler_sampler_depthTex;
  
  centroid in vec4 _VSPS_Color;
  centroid in vec2 _VSPS_UV;
  in vec4 _VSPS_PosP;
  layout(location = 0) out vec4 _entryPointOutput;
  
  float SoftParticle(float backgroundZ, float meshZ, vec4 softparticleParam, vec4 reconstruct1, vec4 reconstruct2)
  {
      float distanceFar = softparticleParam.x;
      float distanceNear = softparticleParam.y;
      float distanceNearOffset = softparticleParam.z;
      vec2 rescale = reconstruct1.xy;
      vec4 params = reconstruct2;
      vec2 zs = vec2((backgroundZ * rescale.x) + rescale.y, meshZ);
      vec2 depth = ((zs * params.w) - vec2(params.y)) / (vec2(params.x) - (zs * params.z));
      float alphaFar = (depth.y - depth.x) / distanceFar;
      float alphaNear = ((-distanceNearOffset) - depth.y) / distanceNear;
      return min(max(min(alphaFar, alphaNear), 0.0), 1.0);
  }
  
  vec4 _main(PS_Input Input)
  {
      vec4 Output = texture(Sampler_sampler_colorTex, Input.UV) * Input.Color;
      vec3 _125 = Output.xyz * CBPS0.fEmissiveScaling.x;
      Output = vec4(_125.x, _125.y, _125.z, Output.w);
      vec4 screenPos = Input.PosP / vec4(Input.PosP.w);
      vec2 screenUV = (screenPos.xy + vec2(1.0)) / vec2(2.0);
      screenUV.y = 1.0 - screenUV.y;
      screenUV.y = 1.0 - screenUV.y;
      screenUV.y = CBPS0.mUVInversedBack.x + (CBPS0.mUVInversedBack.y * screenUV.y);
      if (!(CBPS0.softParticleParam.w == 0.0))
      {
          float backgroundZ = texture(Sampler_sampler_depthTex, screenUV).x;
          float param = backgroundZ;
          float param_1 = screenPos.z;
          vec4 param_2 = CBPS0.softParticleParam;
          vec4 param_3 = CBPS0.reconstructionParam1;
          vec4 param_4 = CBPS0.reconstructionParam2;
          Output.w *= SoftParticle(param, param_1, param_2, param_3, param_4);
      }
      if (Output.w == 0.0)
      {
          discard;
      }
      return Output;
  }
  
  void main()
  {
      PS_Input Input;
      Input.PosVS = gl_FragCoord;
      Input.Color = _VSPS_Color;
      Input.UV = _VSPS_UV;
      Input.PosP = _VSPS_PosP;
      vec4 _227 = _main(Input);
      _entryPointOutput = _227;
  }
  
  )";
  
  #endif
  
  static const char model_unlit_ps_gles2[] = R"(
  precision mediump float;
  precision highp int;
  
  struct PS_Input
  {
      highp vec4 PosVS;
      highp vec4 Color;
      highp vec2 UV;
      highp vec4 PosP;
  };
  
  struct PS_ConstanBuffer
  {
      highp vec4 fLightDirection;
      highp vec4 fLightColor;
      highp vec4 fLightAmbient;
      highp vec4 fFlipbookParameter;
      highp vec4 fUVDistortionParameter;
      highp vec4 fBlendTextureParameter;
      highp vec4 fCameraFrontDirection;
      highp vec4 fFalloffParameter;
      highp vec4 fFalloffBeginColor;
      highp vec4 fFalloffEndColor;
      highp vec4 fEmissiveScaling;
      highp vec4 fEdgeColor;
      highp vec4 fEdgeParameter;
      highp vec4 softParticleParam;
      highp vec4 reconstructionParam1;
      highp vec4 reconstructionParam2;
      highp vec4 mUVInversedBack;
  };
  
  uniform PS_ConstanBuffer CBPS0;
  
  uniform  sampler2D Sampler_sampler_colorTex;
  
  varying  vec4 _VSPS_Color;
  varying  vec2 _VSPS_UV;
  varying  vec4 _VSPS_PosP;
  
  highp vec4 _main(PS_Input Input)
  {
      highp vec4 Output = texture2D(Sampler_sampler_colorTex, Input.UV) * Input.Color;
      highp vec3 _45 = Output.xyz * CBPS0.fEmissiveScaling.x;
      Output = vec4(_45.x, _45.y, _45.z, Output.w);
      if (Output.w == 0.0)
      {
          discard;
      }
      return Output;
  }
  
  void main()
  {
      PS_Input Input;
      Input.PosVS = gl_FragCoord;
      Input.Color = _VSPS_Color;
      Input.UV = _VSPS_UV;
      Input.PosP = _VSPS_PosP;
      highp vec4 _83 = _main(Input);
      gl_FragData[0] = _83;
  }
  
  )";
  
  static const char model_unlit_ps_gles3[] = R"(#version 300 es
  precision mediump float;
  precision highp int;
  
  struct PS_Input
  {
      highp vec4 PosVS;
      highp vec4 Color;
      highp vec2 UV;
      highp vec4 PosP;
  };
  
  struct PS_ConstanBuffer
  {
      highp vec4 fLightDirection;
      highp vec4 fLightColor;
      highp vec4 fLightAmbient;
      highp vec4 fFlipbookParameter;
      highp vec4 fUVDistortionParameter;
      highp vec4 fBlendTextureParameter;
      highp vec4 fCameraFrontDirection;
      highp vec4 fFalloffParameter;
      highp vec4 fFalloffBeginColor;
      highp vec4 fFalloffEndColor;
      highp vec4 fEmissiveScaling;
      highp vec4 fEdgeColor;
      highp vec4 fEdgeParameter;
      highp vec4 softParticleParam;
      highp vec4 reconstructionParam1;
      highp vec4 reconstructionParam2;
      highp vec4 mUVInversedBack;
  };
  
  uniform PS_ConstanBuffer CBPS0;
  
  uniform highp sampler2D Sampler_sampler_colorTex;
  uniform highp sampler2D Sampler_sampler_depthTex;
  
  centroid in highp vec4 _VSPS_Color;
  centroid in highp vec2 _VSPS_UV;
  in highp vec4 _VSPS_PosP;
  layout(location = 0) out highp vec4 _entryPointOutput;
  
  highp float SoftParticle(highp float backgroundZ, highp float meshZ, highp vec4 softparticleParam, highp vec4 reconstruct1, highp vec4 reconstruct2)
  {
      highp float distanceFar = softparticleParam.x;
      highp float distanceNear = softparticleParam.y;
      highp float distanceNearOffset = softparticleParam.z;
      highp vec2 rescale = reconstruct1.xy;
      highp vec4 params = reconstruct2;
      highp vec2 zs = vec2((backgroundZ * rescale.x) + rescale.y, meshZ);
      highp vec2 depth = ((zs * params.w) - vec2(params.y)) / (vec2(params.x) - (zs * params.z));
      highp float alphaFar = (depth.y - depth.x) / distanceFar;
      highp float alphaNear = ((-distanceNearOffset) - depth.y) / distanceNear;
      return min(max(min(alphaFar, alphaNear), 0.0), 1.0);
  }
  
  highp vec4 _main(PS_Input Input)
  {
      highp vec4 Output = texture(Sampler_sampler_colorTex, Input.UV) * Input.Color;
      highp vec3 _125 = Output.xyz * CBPS0.fEmissiveScaling.x;
      Output = vec4(_125.x, _125.y, _125.z, Output.w);
      highp vec4 screenPos = Input.PosP / vec4(Input.PosP.w);
      highp vec2 screenUV = (screenPos.xy + vec2(1.0)) / vec2(2.0);
      screenUV.y = 1.0 - screenUV.y;
      screenUV.y = 1.0 - screenUV.y;
      screenUV.y = CBPS0.mUVInversedBack.x + (CBPS0.mUVInversedBack.y * screenUV.y);
      if (!(CBPS0.softParticleParam.w == 0.0))
      {
          highp float backgroundZ = texture(Sampler_sampler_depthTex, screenUV).x;
          highp float param = backgroundZ;
          highp float param_1 = screenPos.z;
          highp vec4 param_2 = CBPS0.softParticleParam;
          highp vec4 param_3 = CBPS0.reconstructionParam1;
          highp vec4 param_4 = CBPS0.reconstructionParam2;
          Output.w *= SoftParticle(param, param_1, param_2, param_3, param_4);
      }
      if (Output.w == 0.0)
      {
          discard;
      }
      return Output;
  }
  
  void main()
  {
      PS_Input Input;
      Input.PosVS = gl_FragCoord;
      Input.Color = _VSPS_Color;
      Input.UV = _VSPS_UV;
      Input.PosP = _VSPS_PosP;
      highp vec4 _227 = _main(Input);
      _entryPointOutput = _227;
  }
  
  )";
  
  
      static const char* get_model_unlit_ps (EffekseerRendererGL::OpenGLDeviceType deviceType)
      {
      #if !defined(__EMSCRIPTEN__)
          if (deviceType == EffekseerRendererGL::OpenGLDeviceType::OpenGL3)
              return model_unlit_ps_gl3;
          if (deviceType == EffekseerRendererGL::OpenGLDeviceType::OpenGL2)
              return model_unlit_ps_gl2;
      #endif
          if (deviceType == EffekseerRendererGL::OpenGLDeviceType::OpenGLES3)
              return model_unlit_ps_gles3;
          if (deviceType == EffekseerRendererGL::OpenGLDeviceType::OpenGLES2)
              return model_unlit_ps_gles2;
          return nullptr;
      }
      