View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0030705 | Community | OCCT:Visualization | public | 2019-05-10 18:59 | 2019-05-19 10:53 |
Reporter | Vico Liang | Assigned To | bugmaster | ||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Platform | Mac | OS | OS | ||
Product Version | 7.0.0 | ||||
Target Version | 7.4.0 | Fixed in Version | 7.4.0 | ||
Summary | 0030705: Visualization, TKOpenGl - stipple line GLSL error on using OpenGL 2.1 + GL_EXT_gpu_shader4 extension on macOS | ||||
Description | 236: uniform int uPattern; 237: uniform float uFactor; 238: THE_SHADER_IN vec2 ScreenSpaceCoord; 239: vec4 getColor(void) { return occColor; } 240: #define getFinalColor getColor 241: void main() 242: { 243: float anAngle = atan (dFdx (ScreenSpaceCoord.x), dFdy (ScreenSpaceCoord.y)); 244: float aRotatePoint = gl_FragCoord.x * sin (anAngle) + gl_FragCoord.y * cos (anAngle); 245: uint aBit = uint (floor (aRotatePoint / uFactor + 0.5)) & 15U; 246: if ((uint (uPattern) & (1U << aBit)) == 0U) discard; 247: vec4 aColor = getFinalColor(); 248: if (aColor.a <= 0.1) discard; 249: occSetFragColor (aColor); 250: } TKOpenGl | Type: Error | ID: 0 | Severity: High | Message: Failed to compile Fragment Shader [occt_unlit0020]. Compilation log: ERROR: 0:245: 'aBit' : syntax error: syntax error | ||||
Steps To Reproduce | pload MODELING VISUALIZATION vclear # no issues within Core Profile on macOS #vcaps -core #vgldebug -debug 1 -glslWarn 1 -glslCode short vinit View1 box b 1 2 3 vdisplay -dispMode 0 b vfit vglinfo vaspects b -lineType DASH OpenGL info: GLvendor: ATI Technologies Inc. GLdevice: AMD Radeon Pro 570 OpenGL Engine GLversion: 2.1 ATI-2.8.38 GLSLversion: 1.20 Max texture size: 16384 Max FBO dump size: 16384x16384 Max combined texture units: 16 Max MSAA samples: 0 Viewport: 409x409 GPU memory: 4096 MiB GPU Texture memory: 3880 MiB ResolutionRatio: 1 Draw[10]> vaspects b -lineType DASH TKOpenGl | Type: Error | ID: 0 | Severity: High | Message: 1: #extension GL_EXT_gpu_shader4 : enable 2: // Enable extensions used in OCCT GLSL programs 3: #define FRAGMENT_SHADER 4: #define THE_MAX_LIGHTS 0 5: #define THE_MAX_CLIP_PLANES 0 6: #define THE_NB_FRAG_OUTPUTS 1 7: 8: //! @file Declarations.glsl includes definition of common uniform variables in OCCT GLSL programs 9: //! @def THE_MAX_LIGHTS 10: //! Specifies the length of array of lights, which is 8 by default. Defined by Shader Manager. 11: // #define THE_MAX_LIGHTS 8 12: 13: //! @def THE_MAX_CLIP_PLANES 14: //! Specifies the length of array of clipping planes, which is 8 by default. Defined by Shader Manager. 15: // #define THE_MAX_CLIP_PLANES 8 16: 17: //! @def THE_NB_FRAG_OUTPUTS 18: //! Specifies the length of array of Fragment Shader outputs, which is 1 by default. Defined by Shader Manager. 19: // #define THE_NB_FRAG_OUTPUTS 1 20: 21: // compatibility macros 22: #if (__VERSION__ >= 130) 23: #define THE_ATTRIBUTE in 24: #define THE_SHADER_IN in 25: #define THE_SHADER_OUT out 26: #define THE_OUT out 27: #define occTexture1D texture 28: #define occTexture2D texture 29: #define occTexture3D texture 30: #else 31: #define THE_ATTRIBUTE attribute 32: #define THE_SHADER_IN varying 33: #define THE_SHADER_OUT varying 34: #define THE_OUT 35: #define occTexture1D texture1D 36: #define occTexture2D texture2D 37: #define occTexture3D texture3D 38: #endif 39: 40: #ifdef GL_ES 41: #define THE_PREC_ENUM lowp // enumerations should fit into lowp range 42: #else 43: #define THE_PREC_ENUM 44: #endif 45: 46: // Vertex attributes 47: #ifdef VERTEX_SHADER 48: THE_ATTRIBUTE vec4 occVertex; 49: THE_ATTRIBUTE vec3 occNormal; 50: THE_ATTRIBUTE vec4 occTexCoord; 51: THE_ATTRIBUTE vec4 occVertColor; 52: #elif defined(FRAGMENT_SHADER) 53: #if (__VERSION__ >= 130) 54: #ifdef OCC_ENABLE_draw_buffers 55: out vec4 occFragColorArray[THE_NB_FRAG_OUTPUTS]; 56: #define occFragColorArrayAlias occFragColorArray 57: #define occFragColor0 occFragColorArray[0] 58: #else 59: out vec4 occFragColor0; 60: #endif 61: #else 62: #ifdef OCC_ENABLE_draw_buffers 63: #define occFragColorArrayAlias gl_FragData 64: #define occFragColor0 gl_FragData[0] 65: #else 66: #define occFragColor0 gl_FragColor 67: #endif 68: #endif 69: 70: #if (THE_NB_FRAG_OUTPUTS >= 2) 71: #define occFragColor1 occFragColorArrayAlias[1] 72: #else 73: vec4 occFragColor1; 74: #endif 75: #if (THE_NB_FRAG_OUTPUTS >= 3) 76: #define occFragColor2 occFragColorArrayAlias[2] 77: #else 78: vec4 occFragColor2; 79: #endif 80: #if (THE_NB_FRAG_OUTPUTS >= 4) 81: #define occFragColor3 occFragColorArrayAlias[3] 82: #else 83: vec4 occFragColor3; 84: #endif 85: 86: // Built-in outputs notation 87: #define occFragColor occFragColor0 88: #define occFragCoverage occFragColor1 89: 90: //! Define the main Fragment Shader output - color value. 91: void occSetFragColor (in vec4 theColor); 92: #endif 93: 94: // Matrix state 95: uniform mat4 occWorldViewMatrix; //!< World-view matrix 96: uniform mat4 occProjectionMatrix; //!< Projection matrix 97: uniform mat4 occModelWorldMatrix; //!< Model-world matrix 98: 99: uniform mat4 occWorldViewMatrixInverse; //!< Inverse of the world-view matrix 100: uniform mat4 occProjectionMatrixInverse; //!< Inverse of the projection matrix 101: uniform mat4 occModelWorldMatrixInverse; //!< Inverse of the model-world matrix 102: 103: uniform mat4 occWorldViewMatrixTranspose; //!< Transpose of the world-view matrix 104: uniform mat4 occProjectionMatrixTranspose; //!< Transpose of the projection matrix 105: uniform mat4 occModelWorldMatrixTranspose; //!< Transpose of the model-world matrix 106: 107: uniform mat4 occWorldViewMatrixInverseTranspose; //!< Transpose of the inverse of the world-view matrix 108: uniform mat4 occProjectionMatrixInverseTranspose; //!< Transpose of the inverse of the projection matrix 109: uniform mat4 occModelWorldMatrixInverseTranspose; //!< Transpose of the inverse of the model-world matrix 110: 111: // light type enumeration 112: const int OccLightType_Direct = 1; //!< directional light source 113: const int OccLightType_Point = 2; //!< isotropic point light source 114: const int OccLightType_Spot = 3; //!< spot light source 115: 116: // Light sources 117: uniform vec4 occLightAmbient; //!< Cumulative ambient color 118: #if defined(THE_MAX_LIGHTS) && (THE_MAX_LIGHTS > 0) 119: uniform THE_PREC_ENUM int occLightSourcesCount; //!< Total number of light sources 120: int occLight_Type (in int theId); //!< Type of light source 121: int occLight_IsHeadlight (in int theId); //!< Is light a headlight? 122: vec4 occLight_Diffuse (in int theId); //!< Diffuse intensity for specified light source 123: vec4 occLight_Specular (in int theId); //!< Specular intensity (currently - equals to diffuse intencity) 124: vec4 occLight_Position (in int theId); //!< Position of specified light source 125: vec4 occLight_SpotDirection (in int theId); //!< Direction of specified spot light source 126: float occLight_ConstAttenuation (in int theId); //!< Const attenuation factor of positional light source 127: float occLight_LinearAttenuation (in int theId); //!< Linear attenuation factor of positional light source 128: float occLight_SpotCutOff (in int theId); //!< Maximum spread angle of the spot light (in radians) 129: float occLight_SpotExponent (in int theId); //!< Attenuation of the spot light intensity (from 0 to 1) 130: #endif 131: 132: // Front material properties accessors 133: vec4 occFrontMaterial_Emission(void); //!< Emission color 134: vec4 occFrontMaterial_Ambient(void); //!< Ambient reflection 135: vec4 occFrontMaterial_Diffuse(void); //!< Diffuse reflection 136: vec4 occFrontMaterial_Specular(void); //!< Specular reflection 137: float occFrontMaterial_Shininess(void); //!< Specular exponent 138: float occFrontMaterial_Transparency(void); //!< Transparency coefficient 139: 140: // Back material properties accessors 141: vec4 occBackMaterial_Emission(void); //!< Emission color 142: vec4 occBackMaterial_Ambient(void); //!< Ambient reflection 143: vec4 occBackMaterial_Diffuse(void); //!< Diffuse reflection 144: vec4 occBackMaterial_Specular(void); //!< Specular reflection 145: float occBackMaterial_Shininess(void); //!< Specular exponent 146: float occBackMaterial_Transparency(void); //!< Transparency coefficient 147: 148: #ifdef THE_HAS_DEFAULT_SAMPLER 149: #define occActiveSampler occSampler0 //!< alias for backward compatibility 150: #define occSamplerBaseColor occSampler0 //!< alias to a base color texture 151: uniform sampler2D occSampler0; //!< current active sampler; 152: #endif 153: //! occSampler1, occSampler2,... should be defined in GLSL program body for multitexturing 154: uniform vec4 occColor; //!< color value (in case of disabled lighting) 155: uniform THE_PREC_ENUM int occDistinguishingMode; //!< Are front and back faces distinguished? 156: uniform THE_PREC_ENUM int occTextureEnable; //!< Is texture enabled? 157: uniform vec4 occTexTrsf2d[2]; //!< 2D texture transformation parameters 158: uniform float occPointSize; //!< point size 159: 160: //! Parameters of blended order-independent transparency rendering algorithm 161: uniform int occOitOutput; //!< Enable bit for writing output color buffers for OIT (occFragColor, occFragCoverage) 162: uniform float occOitDepthFactor; //!< Influence of the depth component to the coverage of the accumulated fragment 163: uniform float occAlphaCutoff; //!< alpha test cutoff value 164: 165: //! Parameters of clipping planes 166: #if defined(THE_MAX_CLIP_PLANES) && (THE_MAX_CLIP_PLANES > 0) 167: uniform vec4 occClipPlaneEquations[THE_MAX_CLIP_PLANES]; 168: uniform THE_PREC_ENUM int occClipPlaneChains[THE_MAX_CLIP_PLANES]; //! Indicating the number of planes in the Chain 169: uniform THE_PREC_ENUM int occClipPlaneCount; //!< Total number of clip planes 170: #endif 171: //! @endfile Declarations.glsl 172: 173: //! @file DeclarationsImpl.glsl includes implementation of common functions and properties accessors 174: #if defined(FRAGMENT_SHADER) 175: //! Output color (and coverage for accumulation by OIT algorithm). 176: void occSetFragColor (in vec4 theColor) 177: { 178: #if defined(OCC_ALPHA_TEST) 179: if (theColor.a < occAlphaCutoff) discard; 180: #endif 181: #if defined(OCC_WRITE_WEIGHT_OIT_COVERAGE) 182: float aWeight = theColor.a * clamp (1e+2 * pow (1.0 - gl_FragCoord.z * occOitDepthFactor, 3.0), 1e-2, 1e+2); 183: occFragCoverage.r = theColor.a * aWeight; 184: occFragColor = vec4 (theColor.rgb * theColor.a * aWeight, theColor.a); 185: #else 186: occFragColor = theColor; 187: #endif 188: } 189: #endif 190: 191: #if defined(THE_MAX_LIGHTS) && (THE_MAX_LIGHTS > 0) 192: // arrays of light sources 193: uniform THE_PREC_ENUM ivec2 occLightSourcesTypes[THE_MAX_LIGHTS]; //!< packed light sources types 194: uniform vec4 occLightSources[THE_MAX_LIGHTS * 4]; //!< packed light sources parameters 195: 196: // light source properties accessors 197: int occLight_Type (in int theId) { return occLightSourcesTypes[theId].x; } 198: int occLight_IsHeadlight (in int theId) { return occLightSourcesTypes[theId].y; } 199: vec4 occLight_Diffuse (in int theId) { return occLightSources[theId * 4 + 0]; } 200: vec4 occLight_Specular (in int theId) { return occLightSources[theId * 4 + 0]; } 201: vec4 occLight_Position (in int theId) { return occLightSources[theId * 4 + 1]; } 202: vec4 occLight_SpotDirection (in int theId) { return occLightSources[theId * 4 + 2]; } 203: float occLight_ConstAttenuation (in int theId) { return occLightSources[theId * 4 + 3].x; } 204: float occLight_LinearAttenuation (in int theId) { return occLightSources[theId * 4 + 3].y; } 205: float occLight_SpotCutOff (in int theId) { return occLightSources[theId * 4 + 3].z; } 206: float occLight_SpotExponent (in int theId) { return occLightSources[theId * 4 + 3].w; } 207: #endif 208: 209: // material state 210: uniform vec4 occFrontMaterial[5]; 211: uniform vec4 occBackMaterial[5]; 212: 213: // front material properties accessors 214: vec4 occFrontMaterial_Ambient(void) { return occFrontMaterial[0]; } 215: vec4 occFrontMaterial_Diffuse(void) { return occFrontMaterial[1]; } 216: vec4 occFrontMaterial_Specular(void) { return occFrontMaterial[2]; } 217: vec4 occFrontMaterial_Emission(void) { return occFrontMaterial[3]; } 218: float occFrontMaterial_Shininess(void) { return occFrontMaterial[4].x; } 219: float occFrontMaterial_Transparency(void) { return occFrontMaterial[4].y; } 220: 221: // back material properties accessors 222: vec4 occBackMaterial_Ambient(void) { return occBackMaterial[0]; } 223: vec4 occBackMaterial_Diffuse(void) { return occBackMaterial[1]; } 224: vec4 occBackMaterial_Specular(void) { return occBackMaterial[2]; } 225: vec4 occBackMaterial_Emission(void) { return occBackMaterial[3]; } 226: float occBackMaterial_Shininess(void) { return occBackMaterial[4].x; } 227: float occBackMaterial_Transparency(void) { return occBackMaterial[4].y; } 228: 229: // 2D texture coordinates transformation 230: vec2 occTextureTrsf_Translation(void) { return occTexTrsf2d[0].xy; } 231: vec2 occTextureTrsf_Scale(void) { return occTexTrsf2d[0].zw; } 232: float occTextureTrsf_RotationSin(void) { return occTexTrsf2d[1].x; } 233: float occTextureTrsf_RotationCos(void) { return occTexTrsf2d[1].y; } 234: //! @endfile DeclarationsImpl.glsl 235: 236: uniform int uPattern; 237: uniform float uFactor; 238: THE_SHADER_IN vec2 ScreenSpaceCoord; 239: vec4 getColor(void) { return occColor; } 240: #define getFinalColor getColor 241: void main() 242: { 243: float anAngle = atan (dFdx (ScreenSpaceCoord.x), dFdy (ScreenSpaceCoord.y)); 244: float aRotatePoint = gl_FragCoord.x * sin (anAngle) + gl_FragCoord.y * cos (anAngle); 245: uint aBit = uint (floor (aRotatePoint / uFactor + 0.5)) & 15U; 246: if ((uint (uPattern) & (1U << aBit)) == 0U) discard; 247: vec4 aColor = getFinalColor(); 248: if (aColor.a <= 0.1) discard; 249: occSetFragColor (aColor); 250: } TKOpenGl | Type: Error | ID: 0 | Severity: High | Message: Failed to compile Fragment Shader [occt_unlit0020]. Compilation log: ERROR: 0:245: 'aBit' : syntax error: syntax error | ||||
Tags | No tags attached. | ||||
Test case number | Not required | ||||
|
Please provide uncut log and device information (V3d_View::DiagnosticInformation(Graphic3d_DiagnosticInfo_Complete)). |
|
Branch CR30705 has been created by kgv. SHA-1: dd45524b5b7a7074ea3cd5fb858d334350f8fbd3 Detailed log of new commits: Author: kgv Date: Mon May 13 11:31:42 2019 +0300 0030705: Visualization, TKOpenGl - stipple line GLSL error on using OpenGL 2.1 + GL_EXT_gpu_shader4 extension on macOS Fix compatibility with pure GL_EXT_gpu_shader4 specs by defining "uint" as "unsigned int". |
|
Patch is ready for review. |
|
Patch has been reviewed without remarks |
|
Fix has been tested in framework of WEEK-20 branch Combination - OCCT branch : WEEK-20 master SHA - 853af31fb14e2140d821c7ba1c5c5977072d7662 d67d4b811012eef8913d3c535c29654d0acf3c4c Products branch : WEEK-20 SHA - bde66da19002bfd6a68440a079d00728c5796b30 was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian80-64: OCCT Total CPU difference: 16362.230000000052 / 16346.709999999983 [+0.09%] Products Total CPU difference: 10506.300000000043 / 10516.200000000064 [-0.09%] Windows-64-VC14: OCCT Total CPU difference: 17708.015625 / 17692.25 [+0.09%] Products Total CPU difference: 12195.578125 / 12107.796875 [+0.72%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR30705 has been deleted by inv. SHA-1: dd45524b5b7a7074ea3cd5fb858d334350f8fbd3 |
occt: master 853af31f 2019-05-13 08:31:42 Committer: bugmaster Details Diff |
0030705: Visualization, TKOpenGl - stipple line GLSL error on using OpenGL 2.1 + GL_EXT_gpu_shader4 extension on macOS Fix compatibility with pure GL_EXT_gpu_shader4 specs by defining "uint" as "unsigned int". |
Affected Issues 0030705 |
|
mod - src/OpenGl/OpenGl_ShaderManager.cxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-05-10 18:59 | Vico Liang | New Issue | |
2019-05-10 18:59 | Vico Liang | Assigned To | => kgv |
2019-05-10 19:41 | kgv | Note Added: 0084288 | |
2019-05-13 10:44 | kgv | Steps to Reproduce Updated | |
2019-05-13 11:33 | kgv | Summary | Fragment Shader - syntax error: => Visualization, TKOpenGl - stipple line GLSL error on using OpenGL 2.1 + GL_EXT_gpu_shader4 extension on macOS |
2019-05-13 11:39 | git | Note Added: 0084297 | |
2019-05-13 11:42 | kgv | Steps to Reproduce Updated | |
2019-05-13 14:17 | kgv | Note Added: 0084299 | |
2019-05-13 14:17 | kgv | Assigned To | kgv => osa |
2019-05-13 14:17 | kgv | Status | new => resolved |
2019-05-13 14:17 | kgv | Steps to Reproduce Updated | |
2019-05-13 14:49 | kgv | Relationship added | child of 0025305 |
2019-05-13 14:50 | kgv | Product Version | => 7.0.0 |
2019-05-14 11:49 |
|
Note Added: 0084330 | |
2019-05-14 11:49 |
|
Assigned To | osa => bugmaster |
2019-05-14 11:49 |
|
Status | resolved => reviewed |
2019-05-15 12:00 | bugmaster | Note Added: 0084361 | |
2019-05-15 12:00 | bugmaster | Status | reviewed => tested |
2019-05-15 12:01 | bugmaster | Test case number | => Not required |
2019-05-19 10:40 | bugmaster | Changeset attached | => occt master 853af31f |
2019-05-19 10:40 | bugmaster | Status | tested => verified |
2019-05-19 10:40 | bugmaster | Resolution | open => fixed |
2019-05-19 10:53 | git | Note Added: 0084448 |