fna-workbench

fna-workbench Commit Details


Date:2016-02-08 22:15:13 (9 years 1 month ago)
Author:Ethan Lee
Branch:master
Commit:494bfbb7312583688a8d809570008c5fa9971ee8
Parents: 77485076f6398292d91afc9fd00cc73704f23a3f
Message:StructureMembers implemented

Changes:

File differences

lib/MojoShader-CS
1
1
Subproject commit 54212309dedb163a05092fc0ed6ef5bf8bba35da
Subproject commit e39311fefe3fd735ddb2a2dc9be4cc14278151fd
src/Graphics/Effect/Effect.cs
10221022
10231023
10241024
1025
1026
1025
1026
10271027
10281028
10291029
10301030
1031
1032
1031
1032
10331033
10341034
10351035
10361036
10371037
1038
1039
1038
1039
10401040
10411041
10421042
......
10591059
10601060
10611061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
10621097
10631098
10641099
1065
1066
1067
1068
1069
1070
1100
1101
1102
1103
1104
1105
10711106
10721107
10731108
for (int i = 0; i < effectPtr->param_count; i += 1)
{
MojoShader.MOJOSHADER_effectParam param = paramPtr[i];
if (param.value.value_type == MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_VERTEXSHADER ||
param.value.value_type == MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_PIXELSHADER)
if (param.value.type.parameter_type == MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_VERTEXSHADER ||
param.value.type.parameter_type == MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_PIXELSHADER)
{
// Skip shader objects...
continue;
}
else if (param.value.value_type >= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_SAMPLER &&
param.value.value_type <= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_SAMPLERCUBE)
else if (param.value.type.parameter_type >= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_SAMPLER &&
param.value.type.parameter_type <= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_SAMPLERCUBE)
{
string textureName = String.Empty;
MojoShader.MOJOSHADER_effectSamplerState* states = (MojoShader.MOJOSHADER_effectSamplerState*) param.value.values;
for (int j = 0; j < param.value.value_count; j += 1)
{
if (states[j].value.value_type >= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_TEXTURE &&
states[j].value.value_type <= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_TEXTURECUBE)
if (states[j].value.type.parameter_type >= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_TEXTURE &&
states[j].value.type.parameter_type <= MojoShader.MOJOSHADER_symbolType.MOJOSHADER_SYMTYPE_TEXTURECUBE)
{
MojoShader.MOJOSHADER_effectObject *objectPtr = (MojoShader.MOJOSHADER_effectObject*) effectPtr->objects;
int* index = (int*) states[j].value.values;
}
continue;
}
EffectParameterCollection structMembers = null;
if (param.value.type.member_count > 0)
{
List<EffectParameter> memList = new List<EffectParameter>();
unsafe
{
MojoShader.MOJOSHADER_symbolStructMember* mem;
IntPtr curOffset = IntPtr.Zero;
for (int j = 0; j < param.value.type.member_count; j += 1)
{
mem = (MojoShader.MOJOSHADER_symbolStructMember*) param.value.type.members;
memList.Add(new EffectParameter(
Marshal.PtrToStringAnsi(mem->name),
null,
(int) mem->info.rows,
(int) mem->info.columns,
(int) mem->info.elements,
XNAClass[(int) param.value.type.parameter_class],
XNAType[(int) param.value.type.parameter_type],
null, // FIXME: Nested structs! -flibit
null,
curOffset
));
uint memSize = mem->info.rows + mem->info.columns;
if (mem->info.elements > 0)
{
memSize *= mem->info.elements;
}
curOffset += (int) memSize * 4;
}
}
structMembers = new EffectParameterCollection(memList);
}
parameters.Add(new EffectParameter(
Marshal.PtrToStringAnsi(param.value.name),
Marshal.PtrToStringAnsi(param.value.semantic),
(int) param.value.row_count,
(int) param.value.column_count,
(int) param.value.element_count,
XNAClass[(int) param.value.value_class],
XNAType[(int) param.value.value_type],
null, // FIXME: See mojoshader_effects.c:readvalue -flibit
(int) param.value.type.rows,
(int) param.value.type.columns,
(int) param.value.type.elements,
XNAClass[(int) param.value.type.parameter_class],
XNAType[(int) param.value.type.parameter_type],
structMembers,
INTERNAL_readAnnotations(
param.annotations,
param.annotation_count
src/Graphics/Effect/EffectParameter.cs
110110
111111
112112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
113146
114147
115148
......
119152
120153
121154
122
155
123156
124157
125
158
126159
127160
128161
List<EffectParameter> elements = new List<EffectParameter>(elementCount);
for (int i = 0; i < elementCount; i += 1)
{
EffectParameterCollection elementMembers = null;
if (structureMembers != null)
{
List<EffectParameter> memList = new List<EffectParameter>();
int curOffset = 0;
for (int j = 0; j < structureMembers.Count; j += 1)
{
int memElems = 0;
if (structureMembers[j].Elements != null)
{
memElems = structureMembers[j].Elements.Count;
}
memList.Add(new EffectParameter(
structureMembers[j].Name,
structureMembers[j].Semantic,
structureMembers[j].RowCount,
structureMembers[j].ColumnCount,
memElems,
structureMembers[j].ParameterClass,
structureMembers[j].ParameterType,
null, // FIXME: Nested structs! -flibit
structureMembers[j].Annotations,
new IntPtr(data.ToInt64() + (j * 4 * curOffset))
));
int memSize = structureMembers[j].RowCount * structureMembers[j].ColumnCount;
if (memElems > 0)
{
memSize *= memElems;
}
curOffset += memSize;
}
elementMembers = new EffectParameterCollection(memList);
}
// FIXME: Probably incomplete? -flibit
elements.Add(new EffectParameter(
null,
0,
ParameterClass,
parameterType,
null, // FIXME: See mojoshader_effects.c:readvalue -flibit
elementMembers,
null,
new IntPtr(
data.ToInt64() + (i * rowCount * columnCount)
data.ToInt64() + (i * 4 * rowCount * columnCount)
)
));
}

Archive Download the corresponding diff file

Branches

Number of commits:
Page rendered in 0.09455s using 13 queries.