示例#1
0
 public LCC3VertexArray(int tag, string name)
     : base(tag, name)
 {
     _elementType = LCC3ElementType.Float;
     _elementSize = 3;
     _shouldAllowVertexBuffering = true;
     _shouldReleaseRedundantContent = true;
     _semantic = this.DefaultSemantic;
 }
 public string NameOfSemantic(LCC3Semantic semantic)
 {
     return null;
 }
        public LCC3ShaderVariableScope VariableScopeForSemantic(LCC3Semantic semantic)
        {
            switch (semantic)
            {
                case LCC3Semantic.SemanticDrawCountCurrentFrame:
                case LCC3Semantic.SemanticRandomNumber:
                case LCC3Semantic.SemanticBoneMatrixCount:
                case LCC3Semantic.SemanticBoneMatricesGlobal:
                case LCC3Semantic.SemanticBoneMatricesInvTranGlobal:
                case LCC3Semantic.SemanticBoneMatricesEyeSpace:
                case LCC3Semantic.SemanticBoneMatricesInvTranEyeSpace:
                case LCC3Semantic.SemanticBoneMatricesModelSpace:
                case LCC3Semantic.SemanticBoneMatricesInvTranModelSpace:
                    return LCC3ShaderVariableScope.ScopeDraw;

                case LCC3Semantic.SemanticViewMatrix:
                case LCC3Semantic.SemanticViewMatrixInv:
                case LCC3Semantic.SemanticViewMatrixInvTran:
                case LCC3Semantic.SemanticProjMatrix:
                case LCC3Semantic.SemanticProjMatrixInv:
                case LCC3Semantic.SemanticProjMatrixInvTran:
                case LCC3Semantic.SemanticViewProjMatrix:
                case LCC3Semantic.SemanticViewProjMatrixInv:
                case LCC3Semantic.SemanticViewProjMatrixInvTran:

                case LCC3Semantic.SemanticCameraLocationGlobal:
                case LCC3Semantic.SemanticCameraFrustum:
                case LCC3Semantic.SemanticViewport:

                case LCC3Semantic.SemanticIsUsingLighting:
                case LCC3Semantic.SemanticSceneLightColorAmbient:

                case LCC3Semantic.SemanticLightIsEnabled:
                case LCC3Semantic.SemanticLightPositionGlobal:
                case LCC3Semantic.SemanticLightPositionEyeSpace:
                case LCC3Semantic.SemanticLightInvertedPositionGlobal:
                case LCC3Semantic.SemanticLightInvertedPositionEyeSpace:
                case LCC3Semantic.SemanticLightColorAmbient:
                case LCC3Semantic.SemanticLightColorDiffuse:
                case LCC3Semantic.SemanticLightColorSpecular:
                case LCC3Semantic.SemanticLightAttenuation:
                case LCC3Semantic.SemanticLightSpotDirectionGlobal:
                case LCC3Semantic.SemanticLightSpotDirectionEyeSpace:
                case LCC3Semantic.SemanticLightSpotExponent:
                case LCC3Semantic.SemanticLightSpotCutoffAngle:
                case LCC3Semantic.SemanticLightSpotCutoffAngleCosine:

                case LCC3Semantic.SemanticFogIsEnabled:
                case LCC3Semantic.SemanticFogColor:
                case LCC3Semantic.SemanticFogAttenuationMode:
                case LCC3Semantic.SemanticFogDensity:
                case LCC3Semantic.SemanticFogStartDistance:
                case LCC3Semantic.SemanticFogEndDistance:

                case LCC3Semantic.SemanticFrameTime:
                case LCC3Semantic.SemanticApplicationTime:
                case LCC3Semantic.SemanticApplicationTimeSine:
                case LCC3Semantic.SemanticApplicationTimeCosine:
                case LCC3Semantic.SemanticApplicationTimeTangent:

                    return LCC3ShaderVariableScope.ScopeScene;

                default:
                    return LCC3ShaderVariableScope.ScopeNode;
            }
        }
 public LCC3ShaderVariableConfiguration()
 {
     _semantic = LCC3Semantic.SemanticNone;
     _type = LCC3ElementType.None;
 }
示例#5
0
        public LCC3ShaderUniform UniformForSemantic(LCC3Semantic semantic, int semanticIndex)
        {
            foreach (LCC3ShaderUniform uniform in _uniformsSceneScope)
            {
                if (uniform.Semantic == semantic && uniform.SemanticIndex == semanticIndex)
                {
                    return uniform;
                }
            }

            foreach (LCC3ShaderUniform uniform in _uniformsNodeScope)
            {
                if (uniform.Semantic == semantic && uniform.SemanticIndex == semanticIndex)
                {
                    return uniform;
                }
            }

            foreach (LCC3ShaderUniform uniform in _uniformsDrawScope)
            {
                if (uniform.Semantic == semantic && uniform.SemanticIndex == semanticIndex)
                {
                    return uniform;
                }
            }

            return null;
        }
示例#6
0
 public LCC3ShaderUniform UniformForSemantic(LCC3Semantic semantic)
 {
     return this.UniformForSemantic(semantic, 0);
 }
示例#7
0
        public LCC3ShaderAttribute AttributeForSemantic(LCC3Semantic semantic, uint semanticIndex)
        {
            foreach (LCC3ShaderAttribute attribute in _attributes)
            {
                if (attribute.Semantic == semantic && attribute.SemanticIndex == semanticIndex)
                {
                    return attribute;
                }
            }

            return null;
        }
示例#8
0
 public LCC3ShaderAttribute AttributeForSemantic(LCC3Semantic semantic)
 {
     return this.AttributeForSemantic(semantic, 0);
 }
示例#9
0
        public void PopulateFrom(LCC3VertexArray anotherArray)
        {
            base.PopulateFrom(anotherArray);

            _semantic = anotherArray.Semantic;
            _elementType = anotherArray.ElementType;
            _elementSize = anotherArray.ElementSize;
            _vertexStride = anotherArray.VertexStride;
            _elementOffset = anotherArray.ElementOffset;
            _shouldNormalizeContent = anotherArray.ShouldNormalizeContent;
            _shouldAllowVertexBuffering = anotherArray.ShouldAllowVertexBuffering;
            _shouldReleaseRedundantContent = anotherArray.ShouldReleaseRedundantContent;

            this.DeleteGraphicsBuffer();

            if (anotherArray.AllocatedVertexCapacity > 0)
            {
                this.AllocatedVertexCapacity = anotherArray.AllocatedVertexCapacity;
                _vertices = (object[])anotherArray.Vertices.Clone();
            }
            else
            {
                _vertices = anotherArray.Vertices;
            }

            _vertexCount = anotherArray.VertexCount;
        }
 private void MapVarNameToSemantic(string name, LCC3Semantic semantic, LCC3ElementType elementType, uint size=1)
 {
     this.MapVarNameToSemantic(name, semantic, 0, elementType, size);
 }
        private void MapVarNameToSemantic(string name, LCC3Semantic semantic, 
                                          uint semanticIndex, LCC3ElementType elementType,
                                          uint size=1)
        {
            LCC3ShaderVariableConfiguration varConfig = new LCC3ShaderVariableConfiguration();
            varConfig.Name = name;
            varConfig.Semantic = semantic;
            varConfig.SemanticIndex = semanticIndex;
            varConfig.Type = elementType;
            varConfig.Size = size;

            this.AddVariableConfiguration(varConfig);
        }
        public LCC3ShaderUniform UniformOverrideForSemantic(LCC3Semantic semantic, int semanticIndex)
        {
            foreach (LCC3ShaderUniform uniform in _uniforms)
            {
                if (uniform.Semantic == semantic && uniform.SemanticIndex == semanticIndex)
                {
                    return uniform;
                }
            }

            return this.AddUniformOverrideForUniform(_program.UniformForSemantic(semantic, semanticIndex));
        }
示例#13
0
 public LCC3VertexArray VertexArrayForSemanticAtIndex(LCC3Semantic vertexSemantic, uint semanticIndex)
 {
     switch (vertexSemantic)
     {
         case LCC3Semantic.SemanticVertexLocation:
             return this.VertexLocations;
         case LCC3Semantic.SemanticVertexNormal:
             return this.VertexNormals;
         case LCC3Semantic.SemanticVertexTangent:
             return this.VertexTangents;
         case LCC3Semantic.SemanticVertexBitangent:
             return this.VertexBitangents;
         case LCC3Semantic.SemanticColor:
             return this.VertexColors;
         case LCC3Semantic.SemanticVertexWeights:
             return this.VertexWeights;
         case LCC3Semantic.SemanticVertexMatrixIndices:
             return this.VertexMatrixIndices;
         case LCC3Semantic.SemanticPointSize:
             return this.VertexPointSizes;
         case LCC3Semantic.SemanticVertexTexture:
             return this.VertexTextureCoords;
         default:
             return null;
     }
 }