mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-26 18:09:07 -07:00
Initial commit
This commit is contained in:
85
src/package_4/class_4.as
Normal file
85
src/package_4/class_4.as
Normal file
@@ -0,0 +1,85 @@
|
||||
package package_4
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import flash.utils.Dictionary;
|
||||
import package_19.name_117;
|
||||
import package_21.name_116;
|
||||
import package_21.name_124;
|
||||
import package_21.name_77;
|
||||
import package_28.name_119;
|
||||
import package_30.name_114;
|
||||
import package_30.name_115;
|
||||
import package_30.name_121;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class class_4
|
||||
{
|
||||
alternativa3d static const _projectProcedure:name_114 = method_73();
|
||||
|
||||
public var name:String;
|
||||
|
||||
alternativa3d var priority:int = 0;
|
||||
|
||||
public function class_4()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
private static function method_73() : name_114
|
||||
{
|
||||
var res:name_114 = new name_114(["m44 o0, i0, c0"],"projectProcedure");
|
||||
res.name_122(name_115.CONSTANT,0,"cProjMatrix",4);
|
||||
return res;
|
||||
}
|
||||
|
||||
alternativa3d function get canDrawInShadowMap() : Boolean
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
alternativa3d function method_74(transformProcedure:name_114, vertexShader:name_121) : String
|
||||
{
|
||||
vertexShader.name_120("tTransformedPosition");
|
||||
vertexShader.name_123(transformProcedure);
|
||||
vertexShader.name_118(transformProcedure,"aPosition");
|
||||
vertexShader.name_125(transformProcedure,"tTransformedPosition");
|
||||
return "tTransformedPosition";
|
||||
}
|
||||
|
||||
public function getResources(resourceType:Class = null) : Vector.<name_77>
|
||||
{
|
||||
var key:* = undefined;
|
||||
var res:Vector.<name_77> = new Vector.<name_77>();
|
||||
var dict:Dictionary = new Dictionary();
|
||||
var count:int = 0;
|
||||
this.alternativa3d::fillResources(dict,resourceType);
|
||||
for(key in dict)
|
||||
{
|
||||
var _loc8_:* = count++;
|
||||
res[_loc8_] = key as name_77;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
alternativa3d function fillResources(resources:Dictionary, resourceType:Class) : void
|
||||
{
|
||||
}
|
||||
|
||||
alternativa3d function collectDraws(camera:name_124, surface:name_117, geometry:name_119, lights:Vector.<name_116>, lightsLength:int, objectRenderPriority:int = -1) : void
|
||||
{
|
||||
}
|
||||
|
||||
public function clone() : class_4
|
||||
{
|
||||
var res:class_4 = new class_4();
|
||||
res.clonePropertiesFrom(this);
|
||||
return res;
|
||||
}
|
||||
|
||||
protected function clonePropertiesFrom(source:class_4) : void
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
163
src/package_4/class_5.as
Normal file
163
src/package_4/class_5.as
Normal file
@@ -0,0 +1,163 @@
|
||||
package package_4
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import avmplus.getQualifiedClassName;
|
||||
import flash.display3D.Context3DBlendFactor;
|
||||
import flash.display3D.Context3DProgramType;
|
||||
import flash.display3D.VertexBuffer3D;
|
||||
import flash.utils.Dictionary;
|
||||
import flash.utils.getDefinitionByName;
|
||||
import package_19.name_117;
|
||||
import package_21.name_116;
|
||||
import package_21.name_124;
|
||||
import package_21.name_126;
|
||||
import package_21.name_128;
|
||||
import package_21.name_135;
|
||||
import package_21.name_78;
|
||||
import package_28.name_119;
|
||||
import package_28.name_129;
|
||||
import package_30.name_114;
|
||||
import package_30.name_115;
|
||||
import package_30.name_121;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class class_5 extends class_4
|
||||
{
|
||||
alternativa3d static const _samplerSetProcedure:name_114 = new name_114(["#v0=vUV","#s0=sTexture","#c0=cAlpha","tex t0, v0, s0 <2d, linear,repeat, miplinear>","mov t0.w, c0.w","mov o0, t0"],"samplerSetProcedure");
|
||||
|
||||
alternativa3d static const _samplerSetProcedureOpacity:name_114 = new name_114(["#v0=vUV","#s0=sTexture","#s1=sOpacity","#c0=cAlpha","tex t0, v0, s0 <2d, linear,repeat, miplinear>","tex t1, v0, s1 <2d, linear,repeat, miplinear>","mov t0.w, t1.x","mul t0.w, t0.w, c0.w","mov o0, t0"],"samplerSetProcedureOpacity");
|
||||
|
||||
alternativa3d static const _samplerSetProcedureDiffuseAlpha:name_114 = new name_114(["#v0=vUV","#s0=sTexture","#c0=cAlpha","tex t0, v0, s0 <2d, linear,repeat, miplinear>","mul t0.w, t0.w, c0.w","mov o0, t0"],"samplerSetProcedureDiffuseAlpha");
|
||||
|
||||
alternativa3d static const _passUVProcedure:name_114 = new name_114(["#v0=vUV","#a0=aUV","mov v0, a0"],"passUVProcedure");
|
||||
|
||||
private static var _programs:Dictionary = new Dictionary();
|
||||
|
||||
public var diffuseMap:name_129;
|
||||
|
||||
public var opacityMap:name_129;
|
||||
|
||||
public var alpha:Number = 1;
|
||||
|
||||
public var var_21:Boolean = false;
|
||||
|
||||
public function class_5(diffuseMap:name_129 = null, opacityMap:name_129 = null, alpha:Number = 1)
|
||||
{
|
||||
super();
|
||||
this.diffuseMap = diffuseMap;
|
||||
this.opacityMap = opacityMap;
|
||||
this.alpha = alpha;
|
||||
}
|
||||
|
||||
override alternativa3d function get canDrawInShadowMap() : Boolean
|
||||
{
|
||||
return !this.var_21 && this.opacityMap == null;
|
||||
}
|
||||
|
||||
override alternativa3d function fillResources(resources:Dictionary, resourceType:Class) : void
|
||||
{
|
||||
super.alternativa3d::fillResources(resources,resourceType);
|
||||
if(this.diffuseMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.diffuseMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.diffuseMap] = true;
|
||||
}
|
||||
if(this.opacityMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.opacityMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.opacityMap] = true;
|
||||
}
|
||||
}
|
||||
|
||||
private function method_75(object:name_78) : name_127
|
||||
{
|
||||
var vertexLinker:name_121 = new name_121(Context3DProgramType.VERTEX);
|
||||
var positionVar:String = "aPosition";
|
||||
vertexLinker.name_120(positionVar,name_115.ATTRIBUTE);
|
||||
if(object.alternativa3d::transformProcedure != null)
|
||||
{
|
||||
positionVar = alternativa3d::method_74(object.alternativa3d::transformProcedure,vertexLinker);
|
||||
}
|
||||
vertexLinker.name_123(alternativa3d::_projectProcedure);
|
||||
vertexLinker.name_118(alternativa3d::_projectProcedure,positionVar);
|
||||
vertexLinker.name_123(alternativa3d::_passUVProcedure);
|
||||
var outProcedure:name_114 = this.var_21 ? alternativa3d::_samplerSetProcedureDiffuseAlpha : (this.opacityMap != null ? alternativa3d::_samplerSetProcedureOpacity : alternativa3d::_samplerSetProcedure);
|
||||
var fragmentLinker:name_121 = new name_121(Context3DProgramType.FRAGMENT);
|
||||
fragmentLinker.name_123(outProcedure);
|
||||
fragmentLinker.name_133(vertexLinker);
|
||||
return new name_127(vertexLinker,fragmentLinker);
|
||||
}
|
||||
|
||||
override alternativa3d function collectDraws(camera:name_124, surface:name_117, geometry:name_119, lights:Vector.<name_116>, lightsLength:int, objectRenderPriority:int = -1) : void
|
||||
{
|
||||
var program:name_127 = null;
|
||||
var object:name_78 = surface.alternativa3d::object;
|
||||
var positionBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.POSITION);
|
||||
var uvBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.TEXCOORDS[0]);
|
||||
var key:int = this.var_21 ? 2 : (this.opacityMap != null ? 1 : 0);
|
||||
var optionsPrograms:Vector.<name_127> = _programs[object.alternativa3d::transformProcedure];
|
||||
if(optionsPrograms == null)
|
||||
{
|
||||
optionsPrograms = new Vector.<name_127>(3,true);
|
||||
_programs[object.alternativa3d::transformProcedure] = optionsPrograms;
|
||||
program = this.method_75(object);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
optionsPrograms[key] = program;
|
||||
}
|
||||
else
|
||||
{
|
||||
program = optionsPrograms[key];
|
||||
if(program == null)
|
||||
{
|
||||
program = this.method_75(object);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
optionsPrograms[key] = program;
|
||||
}
|
||||
}
|
||||
if(positionBuffer == null || uvBuffer == null || this.diffuseMap == null || this.diffuseMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(!this.var_21 && this.opacityMap != null && this.opacityMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var drawUnit:name_135 = camera.alternativa3d::renderer.alternativa3d::name_137(object,program.program,geometry.alternativa3d::name_132,surface.indexBegin,surface.numTriangles,program);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aPosition"),positionBuffer,geometry.alternativa3d::_attributesOffsets[name_126.POSITION],name_126.alternativa3d::FORMATS[name_126.POSITION]);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aUV"),uvBuffer,geometry.alternativa3d::_attributesOffsets[name_126.TEXCOORDS[0]],name_126.alternativa3d::FORMATS[name_126.TEXCOORDS[0]]);
|
||||
object.alternativa3d::setTransformConstants(drawUnit,surface,program.vertexShader,camera);
|
||||
drawUnit.alternativa3d::name_136(camera,program.vertexShader.getVariableIndex("cProjMatrix"),object.alternativa3d::localToCameraTransform);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cAlpha"),0,0,0,this.alpha);
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sTexture"),this.diffuseMap.alternativa3d::_texture);
|
||||
if(!this.var_21 && this.opacityMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sOpacity"),this.opacityMap.alternativa3d::_texture);
|
||||
}
|
||||
if(this.var_21 || this.opacityMap != null || this.alpha < 1)
|
||||
{
|
||||
drawUnit.alternativa3d::blendSource = Context3DBlendFactor.SOURCE_ALPHA;
|
||||
drawUnit.alternativa3d::blendDestination = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA;
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.TRANSPARENT_SORT);
|
||||
}
|
||||
else
|
||||
{
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.OPAQUE);
|
||||
}
|
||||
}
|
||||
|
||||
override public function clone() : class_4
|
||||
{
|
||||
var res:class_5 = new class_5(null,null,this.alpha);
|
||||
res.clonePropertiesFrom(this);
|
||||
return res;
|
||||
}
|
||||
|
||||
override protected function clonePropertiesFrom(source:class_4) : void
|
||||
{
|
||||
super.clonePropertiesFrom(source);
|
||||
var t:class_5 = source as class_5;
|
||||
this.diffuseMap = t.diffuseMap;
|
||||
this.opacityMap = t.opacityMap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
590
src/package_4/class_9.as
Normal file
590
src/package_4/class_9.as
Normal file
@@ -0,0 +1,590 @@
|
||||
package package_4
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import flash.display.BitmapData;
|
||||
import flash.display3D.Context3DBlendFactor;
|
||||
import flash.display3D.Context3DProgramType;
|
||||
import flash.display3D.VertexBuffer3D;
|
||||
import flash.utils.Dictionary;
|
||||
import flash.utils.getDefinitionByName;
|
||||
import flash.utils.getQualifiedClassName;
|
||||
import package_19.name_117;
|
||||
import package_21.name_116;
|
||||
import package_21.name_124;
|
||||
import package_21.name_126;
|
||||
import package_21.name_128;
|
||||
import package_21.name_135;
|
||||
import package_21.name_139;
|
||||
import package_21.name_78;
|
||||
import package_24.DirectionalLight;
|
||||
import package_24.OmniLight;
|
||||
import package_24.SpotLight;
|
||||
import package_28.name_119;
|
||||
import package_28.name_129;
|
||||
import package_28.name_93;
|
||||
import package_30.name_114;
|
||||
import package_30.name_115;
|
||||
import package_30.name_121;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class class_9 extends class_5
|
||||
{
|
||||
alternativa3d static var fogTexture:name_129;
|
||||
|
||||
alternativa3d static const DISABLED:int = 0;
|
||||
|
||||
alternativa3d static const SIMPLE:int = 1;
|
||||
|
||||
alternativa3d static const ADVANCED:int = 2;
|
||||
|
||||
alternativa3d static var fogMode:int = alternativa3d::DISABLED;
|
||||
|
||||
alternativa3d static var fogNear:Number = 1000;
|
||||
|
||||
alternativa3d static var fogFar:Number = 5000;
|
||||
|
||||
alternativa3d static var fogMaxDensity:Number = 1;
|
||||
|
||||
alternativa3d static var fogColorR:Number = 200 / 255;
|
||||
|
||||
alternativa3d static var fogColorG:Number = 162 / 255;
|
||||
|
||||
alternativa3d static var fogColorB:Number = 200 / 255;
|
||||
|
||||
private static const _programs:Dictionary = new Dictionary();
|
||||
|
||||
private static const _lightFragmentProcedures:Dictionary = new Dictionary();
|
||||
|
||||
private static const _passVaryingsProcedure:name_114 = new name_114(["#v0=vPosition","#v1=vViewVector","#c0=cCameraPosition","mov v0, i0","sub t0, c0, i0","mov v1.xyz, t0.xyz","mov v1.w, c0.w"]);
|
||||
|
||||
private static const _passTBNRightProcedure:name_114 = method_123(true);
|
||||
|
||||
private static const _passTBNLeftProcedure:name_114 = method_123(false);
|
||||
|
||||
private static const _ambientLightProcedure:name_114 = new name_114(["#c0=cSurface","mov o0, i0","mov o1, c0.xxxx"],"ambientLightProcedure");
|
||||
|
||||
private static const _setGlossinessFromConstantProcedure:name_114 = new name_114(["#c0=cSurface","mov o0.w, c0.y"],"setGlossinessFromConstantProcedure");
|
||||
|
||||
private static const _setGlossinessFromTextureProcedure:name_114 = new name_114(["#v0=vUV","#c0=cSurface","#s0=sGlossiness","tex t0, v0, s0 <2d, repeat, linear, miplinear>","mul o0.w, t0.x, c0.y"],"setGlossinessFromTextureProcedure");
|
||||
|
||||
private static const _getNormalAndViewTangentProcedure:name_114 = new name_114(["#v0=vTangent","#v1=vBinormal","#v2=vNormal","#v3=vUV","#v4=vViewVector","#c0=cAmbientColor","#s0=sBump","tex t0, v3, s0 <2d,repeat,linear,miplinear>","add t0, t0, t0","sub t0.xyz, t0.xyz, c0.www","nrm t1.xyz, v0.xyz","dp3 o0.x, t0.xyz, t1.xyz","nrm t1.xyz, v1.xyz","dp3 o0.y, t0.xyz, t1.xyz","nrm t1.xyz, v2.xyz","dp3 o0.z, t0.xyz, t1.xyz","nrm o0.xyz, o0.xyz","nrm o1.xyz, v4"],"getNormalAndViewTangentProcedure");
|
||||
|
||||
private static const _getNormalAndViewObjectProcedure:name_114 = new name_114(["#v3=vUV","#v4=vViewVector","#c0=cAmbientColor","#s0=sBump","tex t0, v3, s0 <2d,repeat,linear,miplinear>","add t0, t0, t0","sub t0.xyz, t0.xyz, c0.www","nrm o0.xyz, t0.xyz","nrm o1.xyz, v4"],"getNormalAndViewObjectProcedure");
|
||||
|
||||
private static const _applySpecularProcedure:name_114 = new name_114(["#v0=vUV","#s0=sSpecular","tex t0, v0, s0 <2d, repeat,linear,miplinear>","mul o0.xyz, o0.xyz, t0.xyz"],"applySpecularProcedure");
|
||||
|
||||
private static const _mulLightingProcedure:name_114 = new name_114(["#s0=sTexture","#v0=vUV","#c0=cSurface","tex t0, v0, s0 <2d, repeat, linear, miplinear>","mul t0.xyz, t0.xyz, i0.xyz","mul t1.xyz, i1.xyz, c0.z","add t0.xyz, t0.xyz, t1.xyz","mov o0, t0"],"mulLightingProcedure");
|
||||
|
||||
private static const passSimpleFogConstProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogSpace","dp4 t0.z, i0, c0","mov v0, t0.zzzz","sub v0.y, i0.w, t0.z"],"passSimpleFogConst");
|
||||
|
||||
private static const outputWithSimpleFogProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogColor","#c1=cFogRange","min t0.xy, v0.xy, c1.xy","max t0.xy, t0.xy, c1.zw","mul i0.xyz, i0.xyz, t0.y","mul t0.xyz, c0.xyz, t0.x","add i0.xyz, i0.xyz, t0.xyz","mov o0, i0"],"outputWithSimpleFog");
|
||||
|
||||
private static const postPassAdvancedFogConstProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogSpace","dp4 t0.z, i0, c0","mov v0, t0.zzzz","sub v0.y, i0.w, t0.z","mov v0.zw, i1.xwxw","mov o0, i1"],"postPassAdvancedFogConst");
|
||||
|
||||
private static const outputWithAdvancedFogProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogConsts","#c1=cFogRange","#s0=sFogTexture","min t0.xy, v0.xy, c1.xy","max t0.xy, t0.xy, c1.zw","mul i0.xyz, i0.xyz, t0.y","mov t1.xyzw, c0.yyzw","div t0.z, v0.z, v0.w","mul t0.z, t0.z, c0.x","add t1.x, t1.x, t0.z","tex t1, t1, s0 <2d, repeat, linear, miplinear>","mul t0.xyz, t1.xyz, t0.x","add i0.xyz, i0.xyz, t0.xyz","mov o0, i0"],"outputWithAdvancedFog");
|
||||
|
||||
alternativa3d var var_54:Boolean = false;
|
||||
|
||||
alternativa3d var outputAlpha:name_114 = new name_114(["#c0=cSurface","mov i0.w, c0.w","mov o0, i0"],"outputAlpha");
|
||||
|
||||
alternativa3d var outputDiffuseAlpha:name_114 = new name_114(["#c0=cSurface","mul i0.w, i0.w, c0.w","mov o0, i0"],"outputDiffuseAlpha");
|
||||
|
||||
alternativa3d var outputOpacity:name_114 = new name_114(["#c0=cSurface","#s0=sOpacity","#v0=vUV","tex t0, v0, s0 <2d, repeat,linear,miplinear>","mul i0.w, t0.x, c0.w","mov o0, i0"],"outputOpacity");
|
||||
|
||||
public var normalMap:name_129;
|
||||
|
||||
private var var_53:int = 0;
|
||||
|
||||
public var specularMap:name_129;
|
||||
|
||||
public var glossinessMap:name_129;
|
||||
|
||||
public var glossiness:Number = 100;
|
||||
|
||||
public var var_25:Number = 1;
|
||||
|
||||
public function class_9(diffuseMap:name_129, normalMap:name_129, specularMap:name_129 = null, glossinessMap:name_129 = null, opacityMap:name_129 = null)
|
||||
{
|
||||
super(diffuseMap);
|
||||
this.normalMap = normalMap;
|
||||
this.specularMap = specularMap;
|
||||
this.glossinessMap = glossinessMap;
|
||||
this.opacityMap = opacityMap;
|
||||
}
|
||||
|
||||
private static function method_123(right:Boolean) : name_114
|
||||
{
|
||||
var crsInSpace:String = right ? "crs t1.xyz, i0, i1" : "crs t1.xyz, i1, i0";
|
||||
return new name_114(["#v0=vTangent","#v1=vBinormal","#v2=vNormal",crsInSpace,"mul t1.xyz, t1.xyz, i0.w","mov v0.x, i0.x","mov v0.y, t1.x","mov v0.z, i1.x","mov v0.w, i1.w","mov v1.x, i0.y","mov v1.y, t1.y","mov v1.z, i1.y","mov v1.w, i1.w","mov v2.x, i0.z","mov v2.y, t1.z","mov v2.z, i1.z","mov v2.w, i1.w"],"passTBNProcedure");
|
||||
}
|
||||
|
||||
public function get method_124() : int
|
||||
{
|
||||
return this.var_53;
|
||||
}
|
||||
|
||||
public function set method_124(value:int) : void
|
||||
{
|
||||
if(value != name_204.TANGENT_RIGHT_HANDED && value != name_204.TANGENT_LEFT_HANDED && value != name_204.OBJECT)
|
||||
{
|
||||
throw new ArgumentError("Value must be a constant from the NormalMapSpace class");
|
||||
}
|
||||
this.var_53 = value;
|
||||
}
|
||||
|
||||
alternativa3d function getPassUVProcedure() : name_114
|
||||
{
|
||||
return alternativa3d::_passUVProcedure;
|
||||
}
|
||||
|
||||
alternativa3d function setPassUVProcedureConstants(destination:name_135, vertexLinker:name_121) : void
|
||||
{
|
||||
}
|
||||
|
||||
private function method_75(object:name_78, lights:Vector.<name_116>, directional:DirectionalLight, lightsLength:int) : name_127
|
||||
{
|
||||
var i:int = 0;
|
||||
var outputProcedure:name_114 = null;
|
||||
var procedure:name_114 = null;
|
||||
var nrmProcedure:name_114 = null;
|
||||
var shadowProc:name_114 = null;
|
||||
var dirMulShadowProcedure:name_114 = null;
|
||||
var light:name_116 = null;
|
||||
var lightFragmentProcedure:name_114 = null;
|
||||
var vertexLinker:name_121 = new name_121(Context3DProgramType.VERTEX);
|
||||
var fragmentLinker:name_121 = new name_121(Context3DProgramType.FRAGMENT);
|
||||
fragmentLinker.name_120("tTotalLight");
|
||||
fragmentLinker.name_120("tTotalHighLight");
|
||||
fragmentLinker.name_120("tNormal");
|
||||
fragmentLinker.name_120("cAmbientColor",name_115.CONSTANT);
|
||||
fragmentLinker.name_123(_ambientLightProcedure);
|
||||
fragmentLinker.name_118(_ambientLightProcedure,"cAmbientColor");
|
||||
fragmentLinker.name_125(_ambientLightProcedure,"tTotalLight","tTotalHighLight");
|
||||
var positionVar:String = "aPosition";
|
||||
var normalVar:String = "aNormal";
|
||||
var tangentVar:String = "aTangent";
|
||||
vertexLinker.name_120(positionVar,name_115.ATTRIBUTE);
|
||||
vertexLinker.name_120(tangentVar,name_115.ATTRIBUTE);
|
||||
vertexLinker.name_120(normalVar,name_115.ATTRIBUTE);
|
||||
if(object.alternativa3d::transformProcedure != null)
|
||||
{
|
||||
positionVar = alternativa3d::method_74(object.alternativa3d::transformProcedure,vertexLinker);
|
||||
}
|
||||
vertexLinker.name_123(alternativa3d::_projectProcedure);
|
||||
vertexLinker.name_118(alternativa3d::_projectProcedure,positionVar);
|
||||
vertexLinker.name_123(this.alternativa3d::getPassUVProcedure());
|
||||
if(this.glossinessMap != null)
|
||||
{
|
||||
fragmentLinker.name_123(_setGlossinessFromTextureProcedure);
|
||||
fragmentLinker.name_125(_setGlossinessFromTextureProcedure,"tTotalHighLight");
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(_setGlossinessFromConstantProcedure);
|
||||
fragmentLinker.name_125(_setGlossinessFromConstantProcedure,"tTotalHighLight");
|
||||
}
|
||||
if(lightsLength > 0)
|
||||
{
|
||||
if(object.alternativa3d::deltaTransformProcedure != null)
|
||||
{
|
||||
vertexLinker.name_120("tTransformedNormal");
|
||||
procedure = object.alternativa3d::deltaTransformProcedure.name_143();
|
||||
vertexLinker.name_123(procedure);
|
||||
vertexLinker.name_118(procedure,normalVar);
|
||||
vertexLinker.name_125(procedure,"tTransformedNormal");
|
||||
normalVar = "tTransformedNormal";
|
||||
vertexLinker.name_120("tTransformedTangent");
|
||||
procedure = object.alternativa3d::deltaTransformProcedure.name_143();
|
||||
vertexLinker.name_123(procedure);
|
||||
vertexLinker.name_118(procedure,tangentVar);
|
||||
vertexLinker.name_125(procedure,"tTransformedTangent");
|
||||
tangentVar = "tTransformedTangent";
|
||||
}
|
||||
vertexLinker.name_123(_passVaryingsProcedure);
|
||||
vertexLinker.name_118(_passVaryingsProcedure,positionVar);
|
||||
fragmentLinker.name_120("tViewVector");
|
||||
if(this.var_53 == name_204.TANGENT_RIGHT_HANDED || this.var_53 == name_204.TANGENT_LEFT_HANDED)
|
||||
{
|
||||
nrmProcedure = this.var_53 == name_204.TANGENT_RIGHT_HANDED ? _passTBNRightProcedure : _passTBNLeftProcedure;
|
||||
vertexLinker.name_123(nrmProcedure);
|
||||
vertexLinker.name_118(nrmProcedure,tangentVar,normalVar);
|
||||
fragmentLinker.name_123(_getNormalAndViewTangentProcedure);
|
||||
fragmentLinker.name_125(_getNormalAndViewTangentProcedure,"tNormal","tViewVector");
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(_getNormalAndViewObjectProcedure);
|
||||
fragmentLinker.name_125(_getNormalAndViewObjectProcedure,"tNormal","tViewVector");
|
||||
}
|
||||
if(directional != null)
|
||||
{
|
||||
vertexLinker.name_123(directional.shadow.getVShader());
|
||||
shadowProc = directional.shadow.getFShader();
|
||||
fragmentLinker.name_123(shadowProc);
|
||||
fragmentLinker.name_125(shadowProc,"tTotalLight");
|
||||
dirMulShadowProcedure = _lightFragmentProcedures[directional.shadow];
|
||||
if(dirMulShadowProcedure == null)
|
||||
{
|
||||
dirMulShadowProcedure = new name_114();
|
||||
this.method_76(dirMulShadowProcedure,directional,true);
|
||||
}
|
||||
fragmentLinker.name_123(dirMulShadowProcedure);
|
||||
fragmentLinker.name_118(dirMulShadowProcedure,"tNormal","tViewVector","tTotalLight","cAmbientColor");
|
||||
fragmentLinker.name_125(dirMulShadowProcedure,"tTotalLight","tTotalHighLight");
|
||||
}
|
||||
for(i = 0; i < lightsLength; )
|
||||
{
|
||||
light = lights[i];
|
||||
if(light != directional)
|
||||
{
|
||||
lightFragmentProcedure = _lightFragmentProcedures[light];
|
||||
if(lightFragmentProcedure == null)
|
||||
{
|
||||
lightFragmentProcedure = new name_114();
|
||||
lightFragmentProcedure.name = "light" + i.toString();
|
||||
if(light is DirectionalLight)
|
||||
{
|
||||
this.method_76(lightFragmentProcedure,light,false);
|
||||
lightFragmentProcedure.name += "Directional";
|
||||
}
|
||||
else if(light is OmniLight)
|
||||
{
|
||||
lightFragmentProcedure.name_140(["#c0=c" + light.alternativa3d::name_138 + "Position","#c1=c" + light.alternativa3d::name_138 + "Color","#c2=c" + light.alternativa3d::name_138 + "Radius","#v0=vPosition","sub t0, c0, v0","dp3 t0.w, t0.xyz, t0.xyz","nrm t0.xyz, t0.xyz","add t1.xyz, i1.xyz, t0.xyz","mov t1.w, c0.w","nrm t1.xyz, t1.xyz","dp3 t1.w, t1.xyz, i0.xyz","pow t1.w, t1.w, o1.w","sqt t1.x, t0.w","dp3 t0.w, t0.xyz, i0.xyz","sub t0.x, t1.x, c2.z","div t0.y, t0.x, c2.y","sub t0.x, c2.x, t0.y","sat t0.xw, t0.xw","mul t0.xyz, c1.xyz, t0.xxx","mul t1.xyz, t0.xyz, t1.w","add o1.xyz, o1.xyz, t1.xyz","mul t0.xyz, t0.xyz, t0.www","add o0.xyz, o0.xyz, t0.xyz"]);
|
||||
lightFragmentProcedure.name += "Omni";
|
||||
}
|
||||
else if(light is SpotLight)
|
||||
{
|
||||
lightFragmentProcedure.name_140(["#c0=c" + light.alternativa3d::name_138 + "Position","#c1=c" + light.alternativa3d::name_138 + "Color","#c2=c" + light.alternativa3d::name_138 + "Radius","#c3=c" + light.alternativa3d::name_138 + "Axis","#v0=vPosition","sub t0, c0, v0","dp3 t0.w, t0, t0","nrm t0.xyz,t0.xyz","add t2.xyz, i1.xyz, t0.xyz","nrm t2.xyz, t2.xyz","dp3 t2.x, t2.xyz, i0.xyz","pow t2.x, t2.x, o1.w","dp3 t1.x, t0.xyz, c3.xyz","dp3 t0.x, t0, i0.xyz","sqt t0.w, t0.w","sub t0.w, t0.w, c2.y","div t0.y, t0.w, c2.x","sub t0.w, c0.w, t0.y","sub t0.y, t1.x, c2.w","div t0.y, t0.y, c2.z","sat t0.xyw,t0.xyw","mul t1.xyz,c1.xyz,t0.yyy","mul t1.xyz,t1.xyz,t0.www","mul t2.xyz, t2.x, t1.xyz","add o1.xyz, o1.xyz, t2.xyz","mul t1.xyz, t1.xyz, t0.xxx","add o0.xyz, o0.xyz, t1.xyz"]);
|
||||
lightFragmentProcedure.name += "Spot";
|
||||
}
|
||||
}
|
||||
fragmentLinker.name_123(lightFragmentProcedure);
|
||||
fragmentLinker.name_118(lightFragmentProcedure,"tNormal","tViewVector");
|
||||
fragmentLinker.name_125(lightFragmentProcedure,"tTotalLight","tTotalHighLight");
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
if(this.specularMap != null)
|
||||
{
|
||||
fragmentLinker.name_123(_applySpecularProcedure);
|
||||
fragmentLinker.name_125(_applySpecularProcedure,"tTotalHighLight");
|
||||
outputProcedure = _applySpecularProcedure;
|
||||
}
|
||||
fragmentLinker.name_120("outColor");
|
||||
fragmentLinker.name_123(_mulLightingProcedure);
|
||||
fragmentLinker.name_118(_mulLightingProcedure,"tTotalLight","tTotalHighLight");
|
||||
fragmentLinker.name_125(_mulLightingProcedure,"outColor");
|
||||
if(var_21)
|
||||
{
|
||||
fragmentLinker.name_123(this.alternativa3d::outputDiffuseAlpha);
|
||||
fragmentLinker.name_118(this.alternativa3d::outputDiffuseAlpha,"outColor");
|
||||
outputProcedure = this.alternativa3d::outputDiffuseAlpha;
|
||||
}
|
||||
else if(opacityMap != null)
|
||||
{
|
||||
fragmentLinker.name_123(this.alternativa3d::outputOpacity);
|
||||
fragmentLinker.name_118(this.alternativa3d::outputOpacity,"outColor");
|
||||
outputProcedure = this.alternativa3d::outputOpacity;
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(this.alternativa3d::outputAlpha);
|
||||
fragmentLinker.name_118(this.alternativa3d::outputAlpha,"outColor");
|
||||
outputProcedure = this.alternativa3d::outputAlpha;
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE || alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
fragmentLinker.name_125(outputProcedure,"outColor");
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE)
|
||||
{
|
||||
vertexLinker.name_123(passSimpleFogConstProcedure);
|
||||
vertexLinker.name_118(passSimpleFogConstProcedure,positionVar);
|
||||
fragmentLinker.name_123(outputWithSimpleFogProcedure);
|
||||
fragmentLinker.name_118(outputWithSimpleFogProcedure,"outColor");
|
||||
}
|
||||
else if(alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
vertexLinker.name_120("tProjected");
|
||||
vertexLinker.name_125(alternativa3d::_projectProcedure,"tProjected");
|
||||
vertexLinker.name_123(postPassAdvancedFogConstProcedure);
|
||||
vertexLinker.name_118(postPassAdvancedFogConstProcedure,positionVar,"tProjected");
|
||||
fragmentLinker.name_123(outputWithAdvancedFogProcedure);
|
||||
fragmentLinker.name_118(outputWithAdvancedFogProcedure,"outColor");
|
||||
}
|
||||
fragmentLinker.name_133(vertexLinker);
|
||||
return new name_127(vertexLinker,fragmentLinker);
|
||||
}
|
||||
|
||||
private function method_76(procedure:name_114, light:name_116, useShadow:Boolean) : void
|
||||
{
|
||||
var source:Array = ["#c0=c" + light.alternativa3d::name_138 + "Direction","#c1=c" + light.alternativa3d::name_138 + "Color","add t0.xyz, i1.xyz, c0.xyz","mov t0.w, c0.w","nrm t0.xyz,t0.xyz","dp3 t0.w, t0.xyz, i0.xyz","pow t0.w, t0.w, o1.w","dp3 t0.x, i0.xyz, c0.xyz","sat t0.x, t0.x"];
|
||||
if(useShadow)
|
||||
{
|
||||
source.push("mul t0.x, t0.x, i2.x");
|
||||
source.push("mul t0.xyz, c1.xyz, t0.xxx");
|
||||
source.push("mov o0.xyz, t0.xyz");
|
||||
source.push("add o0.xyz, o0.xyz, i3.xyz");
|
||||
source.push("mul t0.w, i2.x, t0.w");
|
||||
source.push("mul o1.xyz, c1.xyz, t0.www");
|
||||
}
|
||||
else
|
||||
{
|
||||
source.push("mul t0.xyz, c1.xyz, t0.xxxx");
|
||||
source.push("add o0, o0, t0.xyz");
|
||||
source.push("mul t0.xyz, c1.xyz, t0.w");
|
||||
source.push("add o1.xyz, o1.xyz, t0.xyz");
|
||||
}
|
||||
procedure.name_140(source);
|
||||
}
|
||||
|
||||
override alternativa3d function fillResources(resources:Dictionary, resourceType:Class) : void
|
||||
{
|
||||
super.alternativa3d::fillResources(resources,resourceType);
|
||||
if(this.normalMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.normalMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.normalMap] = true;
|
||||
}
|
||||
if(opacityMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(opacityMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[opacityMap] = true;
|
||||
}
|
||||
if(this.glossinessMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.glossinessMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.glossinessMap] = true;
|
||||
}
|
||||
if(this.specularMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.specularMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.specularMap] = true;
|
||||
}
|
||||
}
|
||||
|
||||
override alternativa3d function collectDraws(camera:name_124, surface:name_117, geometry:name_119, lights:Vector.<name_116>, lightsLength:int, objectRenderPriority:int = -1) : void
|
||||
{
|
||||
var program:name_127 = null;
|
||||
var i:int = 0;
|
||||
var light:name_116 = null;
|
||||
var directional:DirectionalLight = null;
|
||||
var camTransform:name_139 = null;
|
||||
var transform:name_139 = null;
|
||||
var rScale:Number = NaN;
|
||||
var len:Number = NaN;
|
||||
var omni:OmniLight = null;
|
||||
var spot:SpotLight = null;
|
||||
var falloff:Number = NaN;
|
||||
var hotspot:Number = NaN;
|
||||
var lm:name_139 = null;
|
||||
var dist:Number = NaN;
|
||||
var cLocal:name_139 = null;
|
||||
var halfW:Number = NaN;
|
||||
var leftX:Number = NaN;
|
||||
var leftY:Number = NaN;
|
||||
var rightX:Number = NaN;
|
||||
var rightY:Number = NaN;
|
||||
var angle:Number = NaN;
|
||||
var dx:Number = NaN;
|
||||
var dy:Number = NaN;
|
||||
var lens:Number = NaN;
|
||||
var uScale:Number = NaN;
|
||||
var uRight:Number = NaN;
|
||||
var bmd:BitmapData = null;
|
||||
if(diffuseMap == null || this.normalMap == null || diffuseMap.alternativa3d::_texture == null || this.normalMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(!var_21 && opacityMap != null && opacityMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(this.glossinessMap != null && this.glossinessMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(this.specularMap != null && this.specularMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var object:name_78 = surface.alternativa3d::object;
|
||||
var positionBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.POSITION);
|
||||
var uvBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.TEXCOORDS[0]);
|
||||
var normalsBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.NORMAL);
|
||||
var tangentsBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.TANGENT4);
|
||||
if(positionBuffer == null || uvBuffer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var key:String = alternativa3d::fogMode.toString() + this.var_53.toString() + (this.glossinessMap != null ? "G" : "g") + (opacityMap != null ? "O" : "o") + (this.specularMap != null ? "S" : "s") + (var_21 ? "D" : "d");
|
||||
for(i = 0; i < lightsLength; i++)
|
||||
{
|
||||
light = lights[i];
|
||||
if(light is DirectionalLight && directional == null && DirectionalLight(light).shadow != null)
|
||||
{
|
||||
directional = DirectionalLight(light);
|
||||
key += "S";
|
||||
}
|
||||
key += light.alternativa3d::name_138;
|
||||
}
|
||||
var programs:Dictionary = _programs[object.alternativa3d::transformProcedure];
|
||||
if(programs == null)
|
||||
{
|
||||
programs = new Dictionary(false);
|
||||
_programs[object.alternativa3d::transformProcedure] = programs;
|
||||
program = this.method_75(object,lights,directional,lightsLength);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
programs[key] = program;
|
||||
}
|
||||
else
|
||||
{
|
||||
program = programs[key];
|
||||
if(program == null)
|
||||
{
|
||||
program = this.method_75(object,lights,directional,lightsLength);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
programs[key] = program;
|
||||
}
|
||||
}
|
||||
var drawUnit:name_135 = camera.alternativa3d::renderer.alternativa3d::name_137(object,program.program,geometry.alternativa3d::name_132,surface.indexBegin,surface.numTriangles,program);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aPosition"),positionBuffer,geometry.alternativa3d::_attributesOffsets[name_126.POSITION],name_126.alternativa3d::FORMATS[name_126.POSITION]);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aUV"),uvBuffer,geometry.alternativa3d::_attributesOffsets[name_126.TEXCOORDS[0]],name_126.alternativa3d::FORMATS[name_126.TEXCOORDS[0]]);
|
||||
object.alternativa3d::setTransformConstants(drawUnit,surface,program.vertexShader,camera);
|
||||
drawUnit.alternativa3d::name_136(camera,program.vertexShader.getVariableIndex("cProjMatrix"),object.alternativa3d::localToCameraTransform);
|
||||
drawUnit.alternativa3d::name_205(program.fragmentShader.getVariableIndex("cAmbientColor"),camera.alternativa3d::ambient,1);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cSurface"),0,this.glossiness,this.var_25,alpha);
|
||||
if(lightsLength > 0)
|
||||
{
|
||||
if(this.var_53 == name_204.TANGENT_RIGHT_HANDED || this.var_53 == name_204.TANGENT_LEFT_HANDED)
|
||||
{
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aNormal"),normalsBuffer,geometry.alternativa3d::_attributesOffsets[name_126.NORMAL],name_126.alternativa3d::FORMATS[name_126.NORMAL]);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aTangent"),tangentsBuffer,geometry.alternativa3d::_attributesOffsets[name_126.TANGENT4],name_126.alternativa3d::FORMATS[name_126.TANGENT4]);
|
||||
}
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sBump"),this.normalMap.alternativa3d::_texture);
|
||||
camTransform = object.alternativa3d::cameraToLocalTransform;
|
||||
drawUnit.alternativa3d::name_144(program.vertexShader.getVariableIndex("cCameraPosition"),camTransform.d,camTransform.h,camTransform.l);
|
||||
for(i = 0; i < lightsLength; )
|
||||
{
|
||||
light = lights[i];
|
||||
if(light is DirectionalLight)
|
||||
{
|
||||
transform = light.alternativa3d::name_141;
|
||||
len = Number(Math.sqrt(transform.c * transform.c + transform.g * transform.g + transform.k * transform.k));
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Direction"),-transform.c / len,-transform.g / len,-transform.k / len,1);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Color"),light.alternativa3d::red,light.alternativa3d::green,light.alternativa3d::blue);
|
||||
}
|
||||
else if(light is OmniLight)
|
||||
{
|
||||
omni = light as OmniLight;
|
||||
transform = light.alternativa3d::name_141;
|
||||
rScale = Number(Math.sqrt(transform.a * transform.a + transform.e * transform.e + transform.i * transform.i));
|
||||
rScale += Math.sqrt(transform.b * transform.b + transform.f * transform.f + transform.j * transform.j);
|
||||
rScale += Math.sqrt(transform.c * transform.c + transform.g * transform.g + transform.k * transform.k);
|
||||
rScale /= 3;
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Position"),transform.d,transform.h,transform.l);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Radius"),1,omni.attenuationEnd * rScale - omni.attenuationBegin * rScale,omni.attenuationBegin * rScale);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Color"),light.alternativa3d::red,light.alternativa3d::green,light.alternativa3d::blue);
|
||||
}
|
||||
else if(light is SpotLight)
|
||||
{
|
||||
spot = light as SpotLight;
|
||||
transform = light.alternativa3d::name_141;
|
||||
rScale = Number(Math.sqrt(transform.a * transform.a + transform.e * transform.e + transform.i * transform.i));
|
||||
rScale += Math.sqrt(transform.b * transform.b + transform.f * transform.f + transform.j * transform.j);
|
||||
rScale += len = Number(Math.sqrt(transform.c * transform.c + transform.g * transform.g + transform.k * transform.k));
|
||||
rScale /= 3;
|
||||
falloff = Number(Math.cos(spot.falloff * 0.5));
|
||||
hotspot = Number(Math.cos(spot.hotspot * 0.5));
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Position"),transform.d,transform.h,transform.l);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Axis"),-transform.c / len,-transform.g / len,-transform.k / len);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Radius"),spot.attenuationEnd * rScale - spot.attenuationBegin * rScale,spot.attenuationBegin * rScale,hotspot == falloff ? 0.000001 : hotspot - falloff,falloff);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("c" + light.alternativa3d::name_138 + "Color"),light.alternativa3d::red,light.alternativa3d::green,light.alternativa3d::blue);
|
||||
}
|
||||
if(directional != null)
|
||||
{
|
||||
directional.shadow.applyShader(drawUnit,program,object,camera);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sTexture"),diffuseMap.alternativa3d::_texture);
|
||||
if(!var_21 && opacityMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sOpacity"),opacityMap.alternativa3d::_texture);
|
||||
}
|
||||
if(this.glossinessMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sGlossiness"),this.glossinessMap.alternativa3d::_texture);
|
||||
}
|
||||
if(this.specularMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sSpecular"),this.specularMap.alternativa3d::_texture);
|
||||
}
|
||||
this.alternativa3d::setPassUVProcedureConstants(drawUnit,program.vertexShader);
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE || alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
lm = object.alternativa3d::localToCameraTransform;
|
||||
dist = alternativa3d::fogFar - alternativa3d::fogNear;
|
||||
drawUnit.alternativa3d::name_144(program.vertexShader.getVariableIndex("cFogSpace"),lm.i / dist,lm.j / dist,lm.k / dist,(lm.l - alternativa3d::fogNear) / dist);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cFogRange"),alternativa3d::fogMaxDensity,1,0,1 - alternativa3d::fogMaxDensity);
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE)
|
||||
{
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cFogColor"),alternativa3d::fogColorR,alternativa3d::fogColorG,alternativa3d::fogColorB);
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
if(alternativa3d::fogTexture == null)
|
||||
{
|
||||
bmd = new BitmapData(32,1,false,16711680);
|
||||
for(i = 0; i < 32; i++)
|
||||
{
|
||||
bmd.setPixel(i,0,i / 32 * 255 << 16);
|
||||
}
|
||||
alternativa3d::fogTexture = new name_93(bmd);
|
||||
alternativa3d::fogTexture.upload(camera.alternativa3d::context3D);
|
||||
}
|
||||
cLocal = camera.alternativa3d::localToGlobalTransform;
|
||||
halfW = camera.view.width / 2;
|
||||
leftX = -halfW * cLocal.a + camera.alternativa3d::focalLength * cLocal.c;
|
||||
leftY = -halfW * cLocal.e + camera.alternativa3d::focalLength * cLocal.g;
|
||||
rightX = halfW * cLocal.a + camera.alternativa3d::focalLength * cLocal.c;
|
||||
rightY = halfW * cLocal.e + camera.alternativa3d::focalLength * cLocal.g;
|
||||
angle = Math.atan2(leftY,leftX) - Math.PI / 2;
|
||||
if(angle < 0)
|
||||
{
|
||||
angle += Math.PI * 2;
|
||||
}
|
||||
dx = rightX - leftX;
|
||||
dy = rightY - leftY;
|
||||
lens = Number(Math.sqrt(dx * dx + dy * dy));
|
||||
leftX /= lens;
|
||||
leftY /= lens;
|
||||
rightX /= lens;
|
||||
rightY /= lens;
|
||||
uScale = Math.acos(leftX * rightX + leftY * rightY) / Math.PI / 2;
|
||||
uRight = angle / Math.PI / 2;
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cFogConsts"),0.5 * uScale,0.5 - uRight,0);
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sFogTexture"),alternativa3d::fogTexture.alternativa3d::_texture);
|
||||
}
|
||||
if(this.alternativa3d::var_54)
|
||||
{
|
||||
if(drawUnit.alternativa3d::object == null)
|
||||
{
|
||||
throw new Error("");
|
||||
}
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.OPAQUE);
|
||||
}
|
||||
else if(var_21 || opacityMap != null || alpha < 1)
|
||||
{
|
||||
drawUnit.alternativa3d::blendSource = Context3DBlendFactor.SOURCE_ALPHA;
|
||||
drawUnit.alternativa3d::blendDestination = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA;
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.TRANSPARENT_SORT);
|
||||
}
|
||||
else
|
||||
{
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.OPAQUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
17
src/package_4/name_11.as
Normal file
17
src/package_4/name_11.as
Normal file
@@ -0,0 +1,17 @@
|
||||
package package_4
|
||||
{
|
||||
public class name_11
|
||||
{
|
||||
public static const DISABLED:int = 0;
|
||||
|
||||
public static const SIMPLE:int = 1;
|
||||
|
||||
public static const ADVANCED:int = 2;
|
||||
|
||||
public function name_11()
|
||||
{
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
57
src/package_4/name_127.as
Normal file
57
src/package_4/name_127.as
Normal file
@@ -0,0 +1,57 @@
|
||||
package package_4
|
||||
{
|
||||
import flash.display3D.Context3D;
|
||||
import flash.display3D.Program3D;
|
||||
import package_30.name_121;
|
||||
|
||||
public class name_127
|
||||
{
|
||||
public var program:Program3D;
|
||||
|
||||
public var vertexShader:name_121;
|
||||
|
||||
public var fragmentShader:name_121;
|
||||
|
||||
public function name_127(vertexShader:name_121, fragmentShader:name_121)
|
||||
{
|
||||
super();
|
||||
this.vertexShader = vertexShader;
|
||||
this.fragmentShader = fragmentShader;
|
||||
}
|
||||
|
||||
public function upload(context3D:Context3D) : void
|
||||
{
|
||||
if(this.program != null)
|
||||
{
|
||||
this.program.dispose();
|
||||
}
|
||||
if(this.vertexShader != null && this.fragmentShader != null)
|
||||
{
|
||||
this.program = context3D.createProgram();
|
||||
try
|
||||
{
|
||||
this.program.upload(this.vertexShader.name_206(),this.fragmentShader.name_206());
|
||||
}
|
||||
catch(e:Error)
|
||||
{
|
||||
trace(name_28.method_98(fragmentShader.name_206()));
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.program = null;
|
||||
}
|
||||
}
|
||||
|
||||
public function dispose() : void
|
||||
{
|
||||
if(this.program != null)
|
||||
{
|
||||
this.program.dispose();
|
||||
this.program = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
17
src/package_4/name_204.as
Normal file
17
src/package_4/name_204.as
Normal file
@@ -0,0 +1,17 @@
|
||||
package package_4
|
||||
{
|
||||
public class name_204
|
||||
{
|
||||
public static const TANGENT_RIGHT_HANDED:int = 0;
|
||||
|
||||
public static const TANGENT_LEFT_HANDED:int = 1;
|
||||
|
||||
public static const OBJECT:int = 2;
|
||||
|
||||
public function name_204()
|
||||
{
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
387
src/package_4/name_28.as
Normal file
387
src/package_4/name_28.as
Normal file
@@ -0,0 +1,387 @@
|
||||
package package_4
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import avmplus.getQualifiedSuperclassName;
|
||||
import flash.display3D.Context3D;
|
||||
import flash.display3D.Context3DTextureFormat;
|
||||
import flash.display3D.IndexBuffer3D;
|
||||
import flash.display3D.VertexBuffer3D;
|
||||
import flash.display3D.textures.Texture;
|
||||
import flash.geom.Point;
|
||||
import flash.utils.ByteArray;
|
||||
import flash.utils.Dictionary;
|
||||
import flash.utils.Endian;
|
||||
import flash.utils.getDefinitionByName;
|
||||
import package_30.name_115;
|
||||
import package_30.name_168;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_28
|
||||
{
|
||||
private static var twoOperandsCommands:Dictionary;
|
||||
|
||||
private static const DXT1:ByteArray = method_88();
|
||||
|
||||
private static const PVRTC:ByteArray = method_91();
|
||||
|
||||
private static const ETC1:ByteArray = method_87();
|
||||
|
||||
private static var programType:Vector.<String> = Vector.<String>(["VERTEX","FRAGMENT"]);
|
||||
|
||||
private static var samplerDimension:Vector.<String> = Vector.<String>(["2D","cube","3D"]);
|
||||
|
||||
private static var samplerWraping:Vector.<String> = Vector.<String>(["clamp","repeat"]);
|
||||
|
||||
private static var samplerMipmap:Vector.<String> = Vector.<String>(["mipnone","mipnearest","miplinear"]);
|
||||
|
||||
private static var samplerFilter:Vector.<String> = Vector.<String>(["nearest","linear"]);
|
||||
|
||||
private static var swizzleType:Vector.<String> = Vector.<String>(["x","y","z","w"]);
|
||||
|
||||
private static const O_CODE:uint = "o".charCodeAt(0);
|
||||
|
||||
public function name_28()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
private static function method_88() : ByteArray
|
||||
{
|
||||
var DXT1Data:Vector.<int> = Vector.<int>([65,84,70,0,2,71,2,2,2,3,0,0,12,0,0,0,16,0,0,85,105,56,0,0,0,0,0,157,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,1,0,0,0,129,188,4,0,1,0,0,0,2,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,66,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,10,87,77,80,72,79,84,79,0,25,0,192,122,0,0,0,1,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,224,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,16,0,0,85,105,56,0,0,0,0,0,157,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,1,0,0,0,129,188,4,0,1,0,0,0,2,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,66,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,10,87,77,80,72,79,84,79,0,25,0,192,122,0,0,0,1,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,224,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
,0,0,0,0,0,12,0,0,0,16,0,0,85,105,56,0,0,0,0,0,157,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,1,0,0,0,129,188,4,0,1,0,0,0,2,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,66,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,10,87,77,80,72,79,84,79,0,25,0,192,122,0,0,0,1,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,224,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,0,7,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
|
||||
return method_84(DXT1Data);
|
||||
}
|
||||
|
||||
private static function method_87() : ByteArray
|
||||
{
|
||||
var ETC1Data:Vector.<int> = Vector.<int>([65,84,70,0,2,104,2,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,0,0,0,255,252,0,0,0,0,12,0,0,0,16,0,0,127,233,56,0,0,0,0,0,157,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,1,0,0,0,129,188,4,0,1,0,0,0,2,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,66,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,9,87,77,80,72,79,84,79,0,25,0,192,120,0,0,0,1,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,0,7,143,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,0,0,0,255,252,0,0,0,0,12,0,0,0,16,0,0,127,233,56,0,0,0,0,0,157,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,1,0,0,0,129,188,4,0,1,0,0,0,2,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,66,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,9,87,77,80,72,79,84,79,0,25,0,192,120,0,0,0,1,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,208
|
||||
,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,16,0,0,0,255,252,0,0,0,0,12,0,0,0,16,0,0,127,233,56,0,0,0,0,0,157,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,1,0,0,0,129,188,4,0,1,0,0,0,2,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,66,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,9,87,77,80,72,79,84,79,0,25,0,192,120,0,0,0,1,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,208,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,114,0,4,0]);
|
||||
return method_84(ETC1Data);
|
||||
}
|
||||
|
||||
private static function method_91() : ByteArray
|
||||
{
|
||||
var PVRTCData:Vector.<int> = Vector.<int>([65,84,70,0,2,173,2,2,2,3,0,0,0,0,0,0,0,0,13,0,0,0,16,0,0,0,104,190,153,255,0,0,0,0,15,91,0,0,16,0,0,102,12,228,2,255,225,0,0,0,0,0,223,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,2,0,0,0,129,188,4,0,1,0,0,0,4,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,132,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,9,87,77,80,72,79,84,79,0,25,0,192,120,0,1,0,3,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,165,192,0,7,227,99,186,53,197,40,185,134,182,32,130,98,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,192,120,64,6,16,34,52,192,196,65,132,90,98,68,16,17,68,60,91,8,48,76,35,192,97,132,71,76,33,164,97,1,2,194,12,19,8,240,29,132,24,38,17,224,48,194,35,166,16,210,48,128,128,24,68,121,132,52,204,32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,16,0,0,0,233,56,90,0,0,0,0,12,0,0,0,16,0,0,127,237,210,0,0,0,0,0,155,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,2,0,0,0,129,188,4,0
|
||||
,1,0,0,0,4,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,64,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,9,87,77,80,72,79,84,79,0,25,0,192,120,0,1,0,3,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,16,0,0,0,233,56,90,0,0,0,0,12,0,0,0,16,0,0,127,237,210,0,0,0,0,0,155,73,73,188,1,8,0,0,0,5,0,1,188,1,0,16,0,0,0,74,0,0,0,128,188,4,0,1,0,0,0,2,0,0,0,129,188,4,0,1,0,0,0,4,0,0,0,192,188,4,0,1,0,0,0,90,0,0,0,193,188,4,0,1,0,0,0,64,0,0,0,0,0,0,0,36,195,221,111,3,78,254,75,177,133,61,119,118,141,201,9,87,77,80,72,79,84,79,0,25,0,192,120,0,1,0,3,96,0,160,0,10,0,0,160,0,0,0,4,111,255,0,1,0,0,1,0,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,200,0,0,0,0,0,0,0,0,0,0]);
|
||||
return method_84(PVRTCData);
|
||||
}
|
||||
|
||||
private static function method_84(source:Vector.<int>) : ByteArray
|
||||
{
|
||||
var result:ByteArray = new ByteArray();
|
||||
for(var i:int = 0,var length:int = int(source.length); i < length; i++)
|
||||
{
|
||||
result.writeByte(source[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static function method_96(byteArray:ByteArray, size:Point) : void
|
||||
{
|
||||
byteArray.position = 7;
|
||||
var w:int = int(byteArray.readByte());
|
||||
var h:int = int(byteArray.readByte());
|
||||
size.x = 1 << w;
|
||||
size.y = 1 << h;
|
||||
byteArray.position = 0;
|
||||
}
|
||||
|
||||
public static function name_35(context3D:Context3D) : String
|
||||
{
|
||||
var testTexture:Texture = context3D.createTexture(4,4,Context3DTextureFormat.COMPRESSED,false);
|
||||
var result:String = name_6.NONE;
|
||||
try
|
||||
{
|
||||
testTexture.uploadCompressedTextureFromByteArray(DXT1,0);
|
||||
result = name_6.DXT1;
|
||||
}
|
||||
catch(e:Error)
|
||||
{
|
||||
result = name_6.NONE;
|
||||
}
|
||||
if(result == name_6.NONE)
|
||||
{
|
||||
try
|
||||
{
|
||||
testTexture.uploadCompressedTextureFromByteArray(PVRTC,0);
|
||||
result = name_6.PVRTC;
|
||||
}
|
||||
catch(e:Error)
|
||||
{
|
||||
result = name_6.NONE;
|
||||
}
|
||||
}
|
||||
if(result == name_6.NONE)
|
||||
{
|
||||
try
|
||||
{
|
||||
testTexture.uploadCompressedTextureFromByteArray(ETC1,0);
|
||||
result = name_6.ETC1;
|
||||
}
|
||||
catch(e:Error)
|
||||
{
|
||||
result = name_6.NONE;
|
||||
}
|
||||
}
|
||||
testTexture.dispose();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static function method_92(vector:Vector.<Number>) : ByteArray
|
||||
{
|
||||
var result:ByteArray = new ByteArray();
|
||||
result.endian = Endian.LITTLE_ENDIAN;
|
||||
for(var i:int = 0; i < vector.length; i++)
|
||||
{
|
||||
result.writeFloat(vector[i]);
|
||||
}
|
||||
result.position = 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static function method_99(byteArray:ByteArray) : Vector.<uint>
|
||||
{
|
||||
var result:Vector.<uint> = new Vector.<uint>();
|
||||
var length:uint = 0;
|
||||
byteArray.position = 0;
|
||||
for(byteArray.endian = Endian.LITTLE_ENDIAN; byteArray.bytesAvailable > 0; )
|
||||
{
|
||||
var _loc4_:* = length++;
|
||||
result[_loc4_] = byteArray.readUnsignedShort();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static function method_93(context:Context3D, byteArray:ByteArray, numVertices:uint, stride:uint = 3) : VertexBuffer3D
|
||||
{
|
||||
if(context == null)
|
||||
{
|
||||
throw new ReferenceError("context is not set");
|
||||
}
|
||||
var buffer:VertexBuffer3D = context.createVertexBuffer(numVertices,stride);
|
||||
buffer.uploadFromByteArray(byteArray,0,0,numVertices);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static function method_100(context:Context3D, vector:Vector.<Number>, numVertices:uint, stride:uint = 3) : VertexBuffer3D
|
||||
{
|
||||
if(context == null)
|
||||
{
|
||||
throw new ReferenceError("context is not set");
|
||||
}
|
||||
var buffer:VertexBuffer3D = context.createVertexBuffer(numVertices,stride);
|
||||
var byteArray:ByteArray = name_28.method_92(vector);
|
||||
buffer.uploadFromByteArray(byteArray,0,0,numVertices);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static function method_94(context:Context3D, byteArray:ByteArray, width:Number, height:Number, format:String) : Texture
|
||||
{
|
||||
if(context == null)
|
||||
{
|
||||
throw new ReferenceError("context is not set");
|
||||
}
|
||||
var texture:Texture = context.createTexture(width,height,format,false);
|
||||
texture.uploadCompressedTextureFromByteArray(byteArray,0);
|
||||
return texture;
|
||||
}
|
||||
|
||||
public static function method_97(context:Context3D, byteArray:ByteArray, numIndices:uint) : IndexBuffer3D
|
||||
{
|
||||
if(context == null)
|
||||
{
|
||||
throw new ReferenceError("context is not set");
|
||||
}
|
||||
var buffer:IndexBuffer3D = context.createIndexBuffer(numIndices);
|
||||
buffer.uploadFromByteArray(byteArray,0,0,numIndices);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static function method_95(context:Context3D, vector:Vector.<uint>, numIndices:int = -1) : IndexBuffer3D
|
||||
{
|
||||
if(context == null)
|
||||
{
|
||||
throw new ReferenceError("context is not set");
|
||||
}
|
||||
var count:uint = numIndices > 0 ? uint(numIndices) : uint(vector.length);
|
||||
var buffer:IndexBuffer3D = context.createIndexBuffer(count);
|
||||
buffer.uploadFromVector(vector,0,count);
|
||||
var byteArray:ByteArray = new ByteArray();
|
||||
byteArray.endian = Endian.LITTLE_ENDIAN;
|
||||
for(var i:int = 0; i < count; i++)
|
||||
{
|
||||
byteArray.writeInt(vector[i]);
|
||||
}
|
||||
byteArray.position = 0;
|
||||
buffer.uploadFromVector(vector,0,count);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static function method_98(byteCode:ByteArray) : String
|
||||
{
|
||||
if(!twoOperandsCommands)
|
||||
{
|
||||
twoOperandsCommands = new Dictionary();
|
||||
twoOperandsCommands[1] = true;
|
||||
twoOperandsCommands[2] = true;
|
||||
twoOperandsCommands[3] = true;
|
||||
twoOperandsCommands[4] = true;
|
||||
twoOperandsCommands[6] = true;
|
||||
twoOperandsCommands[11] = true;
|
||||
twoOperandsCommands[17] = true;
|
||||
twoOperandsCommands[18] = true;
|
||||
twoOperandsCommands[19] = true;
|
||||
twoOperandsCommands[23] = true;
|
||||
twoOperandsCommands[24] = true;
|
||||
twoOperandsCommands[25] = true;
|
||||
twoOperandsCommands[40] = true;
|
||||
twoOperandsCommands[41] = true;
|
||||
twoOperandsCommands[42] = true;
|
||||
}
|
||||
var res:String = "";
|
||||
byteCode.position = 0;
|
||||
if(byteCode.bytesAvailable < 7)
|
||||
{
|
||||
return "error in byteCode header";
|
||||
}
|
||||
res += "magic = " + byteCode.readUnsignedByte().toString(16);
|
||||
res += "\nversion = " + byteCode.readInt().toString(10);
|
||||
res += "\nshadertypeid = " + byteCode.readUnsignedByte().toString(16);
|
||||
var pType:String = programType[byteCode.readByte()];
|
||||
res += "\nshadertype = " + pType;
|
||||
res += "\nsource\n";
|
||||
pType = pType.substring(0,1).toLowerCase();
|
||||
for(var lineNumber:uint = 1; byteCode.bytesAvailable - 24 >= 0; )
|
||||
{
|
||||
res += (lineNumber++).toString() + ": " + method_90(byteCode,pType) + "\n";
|
||||
}
|
||||
if(byteCode.bytesAvailable > 0)
|
||||
{
|
||||
res += "\nunexpected byteCode length. extra bytes:" + byteCode.bytesAvailable;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
private static function method_90(byteCode:ByteArray, programType:String) : String
|
||||
{
|
||||
var result:String = null;
|
||||
var cmd:uint = uint(byteCode.readUnsignedInt());
|
||||
var command:String = name_168.COMMAND_NAMES[cmd];
|
||||
var destNumber:uint = uint(byteCode.readUnsignedShort());
|
||||
var swizzle:uint = uint(byteCode.readByte());
|
||||
var s:String = "";
|
||||
var destSwizzle:uint = 0;
|
||||
if(swizzle < 15)
|
||||
{
|
||||
s += ".";
|
||||
s += (swizzle & 1) > 0 ? "x" : "";
|
||||
s += (swizzle & 2) > 0 ? "y" : "";
|
||||
s += (swizzle & 4) > 0 ? "z" : "";
|
||||
s += (swizzle & 8) > 0 ? "w" : "";
|
||||
destSwizzle = uint(s.length);
|
||||
}
|
||||
var destType:String = name_115.TYPE_NAMES[byteCode.readUnsignedByte()].charAt(0);
|
||||
if(destType.charCodeAt(0) == O_CODE)
|
||||
{
|
||||
result = command + " " + method_83(destType,programType) + s + ", ";
|
||||
}
|
||||
else
|
||||
{
|
||||
result = command + " " + method_83(destType,programType) + destNumber.toString() + s + ", ";
|
||||
}
|
||||
result += method_83(method_85(byteCode,destSwizzle),programType);
|
||||
if(Boolean(twoOperandsCommands[cmd]))
|
||||
{
|
||||
if(cmd == 40)
|
||||
{
|
||||
result += ", " + method_83(method_86(byteCode),programType);
|
||||
}
|
||||
else
|
||||
{
|
||||
result += ", " + method_83(method_85(byteCode,destSwizzle),programType);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
byteCode.readDouble();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static function method_83(variable:String, programType:String) : String
|
||||
{
|
||||
var char:uint = uint(variable.charCodeAt(0));
|
||||
if(char == "o".charCodeAt(0))
|
||||
{
|
||||
return variable + (programType == "f" ? "c" : "p");
|
||||
}
|
||||
if(char != "v".charCodeAt(0))
|
||||
{
|
||||
return programType + variable;
|
||||
}
|
||||
return variable;
|
||||
}
|
||||
|
||||
private static function method_86(byteCode:ByteArray) : String
|
||||
{
|
||||
var number:uint = uint(byteCode.readUnsignedInt());
|
||||
byteCode.readByte();
|
||||
var dim:uint = uint(byteCode.readByte() >> 4);
|
||||
var wraping:uint = uint(byteCode.readByte() >> 4);
|
||||
var n:uint = uint(byteCode.readByte());
|
||||
return "s" + number.toString() + " <" + samplerDimension[dim] + ", " + samplerWraping[wraping] + ", " + samplerFilter[n >> 4 & 0x0F] + ", " + samplerMipmap[n & 0x0F] + ">";
|
||||
}
|
||||
|
||||
private static function method_85(byteCode:ByteArray, destSwizzle:uint) : String
|
||||
{
|
||||
var s1Number:uint = uint(byteCode.readUnsignedShort());
|
||||
var offset:uint = uint(byteCode.readUnsignedByte());
|
||||
var s:String = method_89(byteCode.readUnsignedByte(),destSwizzle);
|
||||
var s1Type:String = name_115.TYPE_NAMES[byteCode.readUnsignedByte()].charAt(0);
|
||||
var indexType:String = name_115.TYPE_NAMES[byteCode.readUnsignedByte()].charAt(0);
|
||||
var comp:String = swizzleType[byteCode.readUnsignedByte()];
|
||||
if(byteCode.readUnsignedByte() > 0)
|
||||
{
|
||||
return s1Type + "[" + indexType + s1Number.toString() + "." + comp + (offset > 0 ? "+" + offset.toString() : "") + "]" + s;
|
||||
}
|
||||
return s1Type + s1Number.toString() + s;
|
||||
}
|
||||
|
||||
private static function method_89(swizzle:uint, destSwizzle:uint) : String
|
||||
{
|
||||
var s:String = "";
|
||||
if(swizzle != 228)
|
||||
{
|
||||
s += ".";
|
||||
s += swizzleType[swizzle & 3];
|
||||
s += swizzleType[swizzle >> 2 & 3];
|
||||
s += swizzleType[swizzle >> 4 & 3];
|
||||
s += swizzleType[swizzle >> 6 & 3];
|
||||
s = s.substring(0,destSwizzle > 0 ? destSwizzle : Number(s.length));
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
alternativa3d static function name_131(child:Class, parent:Class) : Boolean
|
||||
{
|
||||
var className:String = null;
|
||||
var current:Class = child;
|
||||
if(parent == null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
while(current != parent)
|
||||
{
|
||||
className = getQualifiedSuperclassName(current);
|
||||
if(className == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
current = getDefinitionByName(className) as Class;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
113
src/package_4/name_313.as
Normal file
113
src/package_4/name_313.as
Normal file
@@ -0,0 +1,113 @@
|
||||
package package_4
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import flash.display3D.Context3DBlendFactor;
|
||||
import flash.display3D.Context3DProgramType;
|
||||
import flash.display3D.VertexBuffer3D;
|
||||
import flash.utils.Dictionary;
|
||||
import package_19.name_117;
|
||||
import package_21.name_116;
|
||||
import package_21.name_124;
|
||||
import package_21.name_126;
|
||||
import package_21.name_128;
|
||||
import package_21.name_135;
|
||||
import package_21.name_78;
|
||||
import package_28.name_119;
|
||||
import package_30.name_114;
|
||||
import package_30.name_115;
|
||||
import package_30.name_121;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_313 extends class_4
|
||||
{
|
||||
private static var outColorProcedure:name_114 = new name_114(["#c0=cColor","mov o0, c0"],"outColorProcedure");
|
||||
|
||||
private static var _programs:Dictionary = new Dictionary();
|
||||
|
||||
public var alpha:Number = 1;
|
||||
|
||||
private var red:Number;
|
||||
|
||||
private var green:Number;
|
||||
|
||||
private var blue:Number;
|
||||
|
||||
public function name_313(color:uint = 8355711, alpha:Number = 1)
|
||||
{
|
||||
super();
|
||||
this.color = color;
|
||||
this.alpha = alpha;
|
||||
alternativa3d::priority = 1;
|
||||
}
|
||||
|
||||
public function get color() : uint
|
||||
{
|
||||
return (this.red * 255 << 16) + (this.green * 255 << 8) + this.blue * 255;
|
||||
}
|
||||
|
||||
public function set color(value:uint) : void
|
||||
{
|
||||
this.red = (value >> 16 & 0xFF) / 255;
|
||||
this.green = (value >> 8 & 0xFF) / 255;
|
||||
this.blue = (value & 0xFF) / 255;
|
||||
}
|
||||
|
||||
private function method_75(object:name_78) : name_127
|
||||
{
|
||||
var vertexLinker:name_121 = new name_121(Context3DProgramType.VERTEX);
|
||||
var positionVar:String = "aPosition";
|
||||
vertexLinker.name_120(positionVar,name_115.ATTRIBUTE);
|
||||
if(object.alternativa3d::transformProcedure != null)
|
||||
{
|
||||
positionVar = alternativa3d::method_74(object.alternativa3d::transformProcedure,vertexLinker);
|
||||
}
|
||||
vertexLinker.name_123(alternativa3d::_projectProcedure);
|
||||
vertexLinker.name_118(alternativa3d::_projectProcedure,positionVar);
|
||||
var fragmentLinker:name_121 = new name_121(Context3DProgramType.FRAGMENT);
|
||||
fragmentLinker.name_123(outColorProcedure);
|
||||
fragmentLinker.name_133(vertexLinker);
|
||||
return new name_127(vertexLinker,fragmentLinker);
|
||||
}
|
||||
|
||||
override alternativa3d function collectDraws(camera:name_124, surface:name_117, geometry:name_119, lights:Vector.<name_116>, lightsLength:int, objectRenderPriority:int = -1) : void
|
||||
{
|
||||
var object:name_78 = surface.alternativa3d::object;
|
||||
var positionBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.POSITION);
|
||||
if(positionBuffer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var program:name_127 = _programs[object.alternativa3d::transformProcedure];
|
||||
if(program == null)
|
||||
{
|
||||
program = this.method_75(object);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
_programs[object.alternativa3d::transformProcedure] = program;
|
||||
}
|
||||
var drawUnit:name_135 = camera.alternativa3d::renderer.alternativa3d::name_137(object,program.program,geometry.alternativa3d::name_132,surface.indexBegin,surface.numTriangles,program);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aPosition"),positionBuffer,geometry.alternativa3d::_attributesOffsets[name_126.POSITION],name_126.alternativa3d::FORMATS[name_126.POSITION]);
|
||||
object.alternativa3d::setTransformConstants(drawUnit,surface,program.vertexShader,camera);
|
||||
drawUnit.alternativa3d::name_136(camera,program.vertexShader.getVariableIndex("cProjMatrix"),object.alternativa3d::localToCameraTransform);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cColor"),this.red,this.green,this.blue,this.alpha);
|
||||
if(this.alpha < 1)
|
||||
{
|
||||
drawUnit.alternativa3d::blendSource = Context3DBlendFactor.SOURCE_ALPHA;
|
||||
drawUnit.alternativa3d::blendDestination = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA;
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.TRANSPARENT_SORT);
|
||||
}
|
||||
else
|
||||
{
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.OPAQUE);
|
||||
}
|
||||
}
|
||||
|
||||
override public function clone() : class_4
|
||||
{
|
||||
var res:name_313 = new name_313(this.color,this.alpha);
|
||||
res.clonePropertiesFrom(this);
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
19
src/package_4/name_6.as
Normal file
19
src/package_4/name_6.as
Normal file
@@ -0,0 +1,19 @@
|
||||
package package_4
|
||||
{
|
||||
public class name_6
|
||||
{
|
||||
public static const NONE:String = "atf_none";
|
||||
|
||||
public static const DXT1:String = "atf_dxt1";
|
||||
|
||||
public static const ETC1:String = "atf_etc1";
|
||||
|
||||
public static const PVRTC:String = "atf_pvrtc";
|
||||
|
||||
public function name_6()
|
||||
{
|
||||
super();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
485
src/package_4/name_643.as
Normal file
485
src/package_4/name_643.as
Normal file
@@ -0,0 +1,485 @@
|
||||
package package_4
|
||||
{
|
||||
import alternativa.engine3d.alternativa3d;
|
||||
import avmplus.getQualifiedClassName;
|
||||
import flash.display.BitmapData;
|
||||
import flash.display3D.Context3DBlendFactor;
|
||||
import flash.display3D.Context3DProgramType;
|
||||
import flash.display3D.VertexBuffer3D;
|
||||
import flash.utils.Dictionary;
|
||||
import flash.utils.getDefinitionByName;
|
||||
import package_19.name_117;
|
||||
import package_21.name_116;
|
||||
import package_21.name_124;
|
||||
import package_21.name_126;
|
||||
import package_21.name_128;
|
||||
import package_21.name_135;
|
||||
import package_21.name_139;
|
||||
import package_21.name_78;
|
||||
import package_28.name_119;
|
||||
import package_28.name_129;
|
||||
import package_28.name_93;
|
||||
import package_30.name_114;
|
||||
import package_30.name_115;
|
||||
import package_30.name_121;
|
||||
|
||||
use namespace alternativa3d;
|
||||
|
||||
public class name_643 extends class_5
|
||||
{
|
||||
alternativa3d static var fogTexture:name_129;
|
||||
|
||||
private static var _programs:Dictionary = new Dictionary();
|
||||
|
||||
alternativa3d static const DISABLED:int = 0;
|
||||
|
||||
alternativa3d static const SIMPLE:int = 1;
|
||||
|
||||
alternativa3d static const ADVANCED:int = 2;
|
||||
|
||||
alternativa3d static var fogMode:int = alternativa3d::DISABLED;
|
||||
|
||||
alternativa3d static var fogNear:Number = 1000;
|
||||
|
||||
alternativa3d static var fogFar:Number = 5000;
|
||||
|
||||
alternativa3d static var fogMaxDensity:Number = 1;
|
||||
|
||||
alternativa3d static var fogColorR:Number = 200 / 255;
|
||||
|
||||
alternativa3d static var fogColorG:Number = 162 / 255;
|
||||
|
||||
alternativa3d static var fogColorB:Number = 200 / 255;
|
||||
|
||||
alternativa3d static const _passReflectionProcedure:name_114 = new name_114(["#v1=vNormal","#v0=vPosition","mov v0, i0","mov v1, i1"],"passReflectionProcedure");
|
||||
|
||||
alternativa3d static const _applyReflectionProcedure:name_114 = new name_114(["#v1=vNormal","#v0=vPosition","#s0=sCubeMap","#c0=cCamera","sub t0, v0, c0","dp3 t1.x, v1, t0","add t1.x, t1.x, t1.x","mul t1, v1, t1.x","sub t1, t0, t1","nrm t1.xyz, t1.xyz","tex o0, t1, s0 <cube,clamp,linear,nomip>"],"applyReflectionProcedure");
|
||||
|
||||
alternativa3d static const _applyReflectionNormalMapProcedure:name_114 = new name_114(["#s0=sCubeMap","#c0=cCamera","#v0=vPosition","sub t0, v0, c0","dp3 t1.x, i0.xyz, t0","add t1.x, t1.x, t1.x","mul t1, i0.xyz, t1.x","sub t1, t0, t1","nrm t1.xyz, t1.xyz","tex o0, t1, s0 <cube,clamp,linear,nomip>"],"applyReflectionNormalMapProcedure");
|
||||
|
||||
alternativa3d static const _blendReflection:name_114 = new name_114(["#c0=cAlpha","mul t1, i0, c0.y","mul t0.xyz, i1, c0.z","add t0.xyz, t1, t0","mov t0.w, i0.w","mov o0, t0"],"blendReflection");
|
||||
|
||||
alternativa3d static const _blendReflectionMap:name_114 = new name_114(["#c0=cCamera","#c1=cAlpha","#s0=sReflection","#v0=vUV","tex t0, v0, s0 <2d,repeat,linear,miplinear>","mul t0, t0, c1.z","mul t1.xyz, i1, t0","sub t0, c0.www, t0","mul t2, i0, t0","add t0.xyz, t1, t2","mov t0.w, i0.w","mov o0, t0"],"blendReflectionMap");
|
||||
|
||||
private static const _passTBNRightProcedure:name_114 = method_123(true);
|
||||
|
||||
private static const _passTBNLeftProcedure:name_114 = method_123(false);
|
||||
|
||||
private static const _getNormalTangentProcedure:name_114 = new name_114(["#v0=vTangent","#v1=vBinormal","#v2=vNormal","#v3=vUV","#c0=cCamera","#s0=sBump","tex t0, v3, s0 <2d,repeat,linear,miplinear>","add t0, t0, t0","sub t0.xyz, t0.xyz, c0.www","nrm t1.xyz, v0.xyz","dp3 o0.x, t0.xyz, t1.xyz","nrm t1.xyz, v1.xyz","dp3 o0.y, t0.xyz, t1.xyz","nrm t1.xyz, v2.xyz","dp3 o0.z, t0.xyz, t1.xyz","nrm o0.xyz, o0.xyz"],"getNormalTangentProcedure");
|
||||
|
||||
private static const _getNormalObjectProcedure:name_114 = new name_114(["#v3=vUV","#c0=cCamera","#s0=sBump","tex t0, v3, s0 <2d,repeat,linear,miplinear>","add t0, t0, t0","sub t0.xyz, t0.xyz, c0.www","nrm o0.xyz, t0.xyz"],"getNormalObjectProcedure");
|
||||
|
||||
private static const passSimpleFogConstProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogSpace","dp4 t0.z, i0, c0","mov v0, t0.zzzz","sub v0.y, i0.w, t0.z"],"passSimpleFogConst");
|
||||
|
||||
private static const outputWithSimpleFogProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogColor","#c1=cFogRange","min t0.xy, v0.xy, c1.xy","max t0.xy, t0.xy, c1.zw","mul i0.xyz, i0.xyz, t0.y","mul t0.xyz, c0.xyz, t0.x","add i0.xyz, i0.xyz, t0.xyz","mov o0, i0"],"outputWithSimpleFog");
|
||||
|
||||
private static const postPassAdvancedFogConstProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogSpace","dp4 t0.z, i0, c0","mov v0, t0.zzzz","sub v0.y, i0.w, t0.z","mov v0.zw, i1.xwxw","mov o0, i1"],"postPassAdvancedFogConst");
|
||||
|
||||
private static const outputWithAdvancedFogProcedure:name_114 = new name_114(["#v0=vZDistance","#c0=cFogConsts","#c1=cFogRange","#s0=sFogTexture","min t0.xy, v0.xy, c1.xy","max t0.xy, t0.xy, c1.zw","mul i0.xyz, i0.xyz, t0.y","mov t1.xyzw, c0.yyzw","div t0.z, v0.z, v0.w","mul t0.z, t0.z, c0.x","add t1.x, t1.x, t0.z","tex t1, t1, s0 <2d, repeat, linear, miplinear>","mul t0.xyz, t1.xyz, t0.x","add i0.xyz, i0.xyz, t0.xyz","mov o0, i0"],"outputWithAdvancedFog");
|
||||
|
||||
private static const _applyLightMapProcedure:name_114 = new name_114(["#v0=vUV1","#s0=sLightMap","tex t0, v0, s0 <2d,repeat,linear,mipnone>","add t0, t0, t0","mul i0.xyz, i0.xyz, t0.xyz","mov o0, i0"],"applyLightMapProcedure");
|
||||
|
||||
private static const _passLightMapUVProcedure:name_114 = new name_114(["#a0=aUV1","#v0=vUV1","mov v0, a0"],"passLightMapUVProcedure");
|
||||
|
||||
private var var_53:int = 0;
|
||||
|
||||
public var normalMap:name_129;
|
||||
|
||||
public var environmentMap:name_129;
|
||||
|
||||
public var reflection:Number = 1;
|
||||
|
||||
public var reflectionMap:name_129;
|
||||
|
||||
public var lightMap:name_129;
|
||||
|
||||
public var lightMapChannel:uint = 1;
|
||||
|
||||
public function name_643(diffuseMap:name_129 = null, environmentMap:name_129 = null, normalMap:name_129 = null, reflectionMap:name_129 = null, lightMap:name_129 = null, opacityMap:name_129 = null, alpha:Number = 1)
|
||||
{
|
||||
super(diffuseMap,opacityMap,alpha);
|
||||
this.environmentMap = environmentMap;
|
||||
this.normalMap = normalMap;
|
||||
this.reflectionMap = reflectionMap;
|
||||
this.lightMap = lightMap;
|
||||
}
|
||||
|
||||
private static function method_123(right:Boolean) : name_114
|
||||
{
|
||||
var crsInSpace:String = right ? "crs t1.xyz, i0, i1" : "crs t1.xyz, i1, i0";
|
||||
return new name_114(["#v0=vTangent","#v1=vBinormal","#v2=vNormal",crsInSpace,"mul t1.xyz, t1.xyz, i0.w","mov v0.x, i0.x","mov v0.y, t1.x","mov v0.z, i1.x","mov v0.w, i1.w","mov v1.x, i0.y","mov v1.y, t1.y","mov v1.z, i1.y","mov v1.w, i1.w","mov v2.x, i0.z","mov v2.y, t1.z","mov v2.z, i1.z","mov v2.w, i1.w"],"passTBNProcedure");
|
||||
}
|
||||
|
||||
public function get method_124() : int
|
||||
{
|
||||
return this.var_53;
|
||||
}
|
||||
|
||||
public function set method_124(value:int) : void
|
||||
{
|
||||
if(value != name_204.TANGENT_RIGHT_HANDED && value != name_204.TANGENT_LEFT_HANDED && value != name_204.OBJECT)
|
||||
{
|
||||
throw new ArgumentError("Value must be a constant from the NormalMapSpace class");
|
||||
}
|
||||
this.var_53 = value;
|
||||
}
|
||||
|
||||
override alternativa3d function fillResources(resources:Dictionary, resourceType:Class) : void
|
||||
{
|
||||
super.alternativa3d::fillResources(resources,resourceType);
|
||||
if(this.environmentMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.environmentMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.environmentMap] = true;
|
||||
}
|
||||
if(this.normalMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.normalMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.normalMap] = true;
|
||||
}
|
||||
if(this.reflectionMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.reflectionMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.reflectionMap] = true;
|
||||
}
|
||||
if(this.lightMap != null && Boolean(name_28.alternativa3d::name_131(getDefinitionByName(getQualifiedClassName(this.lightMap)) as Class,resourceType)))
|
||||
{
|
||||
resources[this.lightMap] = true;
|
||||
}
|
||||
}
|
||||
|
||||
private function method_75(targetObject:name_78) : EnvironmentMaterialShaderProgram
|
||||
{
|
||||
var procedure:name_114 = null;
|
||||
var outputProcedure:name_114 = null;
|
||||
var nrmProcedure:name_114 = null;
|
||||
var vertexLinker:name_121 = new name_121(Context3DProgramType.VERTEX);
|
||||
var fragmentLinker:name_121 = new name_121(Context3DProgramType.FRAGMENT);
|
||||
var positionVar:String = "aPosition";
|
||||
var normalVar:String = "aNormal";
|
||||
var tangentVar:String = "aTangent";
|
||||
vertexLinker.name_120(positionVar,name_115.ATTRIBUTE);
|
||||
vertexLinker.name_120(normalVar,name_115.ATTRIBUTE);
|
||||
if(targetObject.alternativa3d::transformProcedure != null)
|
||||
{
|
||||
positionVar = alternativa3d::method_74(targetObject.alternativa3d::transformProcedure,vertexLinker);
|
||||
}
|
||||
if(targetObject.alternativa3d::deltaTransformProcedure != null)
|
||||
{
|
||||
vertexLinker.name_120("tTransformedNormal");
|
||||
procedure = targetObject.alternativa3d::deltaTransformProcedure.name_143();
|
||||
vertexLinker.name_123(procedure);
|
||||
vertexLinker.name_118(procedure,normalVar);
|
||||
vertexLinker.name_125(procedure,"tTransformedNormal");
|
||||
normalVar = "tTransformedNormal";
|
||||
if((this.var_53 == name_204.TANGENT_RIGHT_HANDED || this.var_53 == name_204.TANGENT_LEFT_HANDED) && this.normalMap != null)
|
||||
{
|
||||
vertexLinker.name_120(tangentVar,name_115.ATTRIBUTE);
|
||||
vertexLinker.name_120("tTransformedTangent");
|
||||
procedure = targetObject.alternativa3d::deltaTransformProcedure.name_143();
|
||||
vertexLinker.name_123(procedure);
|
||||
vertexLinker.name_118(procedure,tangentVar);
|
||||
vertexLinker.name_125(procedure,"tTransformedTangent");
|
||||
tangentVar = "tTransformedTangent";
|
||||
}
|
||||
}
|
||||
else if((this.var_53 == name_204.TANGENT_RIGHT_HANDED || this.var_53 == name_204.TANGENT_LEFT_HANDED) && this.normalMap != null)
|
||||
{
|
||||
vertexLinker.name_120(tangentVar,name_115.ATTRIBUTE);
|
||||
}
|
||||
vertexLinker.name_123(_passLightMapUVProcedure);
|
||||
vertexLinker.name_123(alternativa3d::_passReflectionProcedure);
|
||||
vertexLinker.name_118(alternativa3d::_passReflectionProcedure,positionVar,normalVar);
|
||||
vertexLinker.name_123(alternativa3d::_projectProcedure);
|
||||
vertexLinker.name_118(alternativa3d::_projectProcedure,positionVar);
|
||||
vertexLinker.name_123(alternativa3d::_passUVProcedure);
|
||||
if(this.normalMap != null)
|
||||
{
|
||||
fragmentLinker.name_120("tNormal");
|
||||
if(this.var_53 == name_204.TANGENT_RIGHT_HANDED || this.var_53 == name_204.TANGENT_LEFT_HANDED)
|
||||
{
|
||||
nrmProcedure = this.var_53 == name_204.TANGENT_RIGHT_HANDED ? _passTBNRightProcedure : _passTBNLeftProcedure;
|
||||
vertexLinker.name_123(nrmProcedure);
|
||||
vertexLinker.name_118(nrmProcedure,tangentVar,normalVar);
|
||||
fragmentLinker.name_123(_getNormalTangentProcedure);
|
||||
fragmentLinker.name_125(_getNormalTangentProcedure,"tNormal");
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(_getNormalObjectProcedure);
|
||||
fragmentLinker.name_125(_getNormalObjectProcedure,"tNormal");
|
||||
}
|
||||
}
|
||||
vertexLinker.name_142();
|
||||
fragmentLinker.name_120("tColor");
|
||||
if(var_21)
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_samplerSetProcedureDiffuseAlpha);
|
||||
fragmentLinker.name_125(alternativa3d::_samplerSetProcedureDiffuseAlpha,"tColor");
|
||||
}
|
||||
else if(opacityMap != null)
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_samplerSetProcedureOpacity);
|
||||
fragmentLinker.name_125(alternativa3d::_samplerSetProcedureOpacity,"tColor");
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_samplerSetProcedure);
|
||||
fragmentLinker.name_125(alternativa3d::_samplerSetProcedure,"tColor");
|
||||
}
|
||||
fragmentLinker.name_120("tReflection");
|
||||
if(this.normalMap != null)
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_applyReflectionNormalMapProcedure);
|
||||
fragmentLinker.name_118(alternativa3d::_applyReflectionNormalMapProcedure,"tNormal");
|
||||
fragmentLinker.name_125(alternativa3d::_applyReflectionNormalMapProcedure,"tReflection");
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_applyReflectionProcedure);
|
||||
fragmentLinker.name_125(alternativa3d::_applyReflectionProcedure,"tReflection");
|
||||
}
|
||||
fragmentLinker.name_123(_applyLightMapProcedure);
|
||||
fragmentLinker.name_118(_applyLightMapProcedure,"tColor");
|
||||
fragmentLinker.name_125(_applyLightMapProcedure,"tColor");
|
||||
if(this.reflectionMap != null)
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_blendReflectionMap);
|
||||
fragmentLinker.name_118(alternativa3d::_blendReflectionMap,"tColor","tReflection");
|
||||
outputProcedure = alternativa3d::_blendReflectionMap;
|
||||
}
|
||||
else
|
||||
{
|
||||
fragmentLinker.name_123(alternativa3d::_blendReflection);
|
||||
fragmentLinker.name_118(alternativa3d::_blendReflection,"tColor","tReflection");
|
||||
outputProcedure = alternativa3d::_blendReflection;
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE || alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
fragmentLinker.name_120("outColor");
|
||||
fragmentLinker.name_125(outputProcedure,"outColor");
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE)
|
||||
{
|
||||
vertexLinker.name_123(passSimpleFogConstProcedure);
|
||||
vertexLinker.name_118(passSimpleFogConstProcedure,positionVar);
|
||||
fragmentLinker.name_123(outputWithSimpleFogProcedure);
|
||||
fragmentLinker.name_118(outputWithSimpleFogProcedure,"outColor");
|
||||
}
|
||||
else if(alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
vertexLinker.name_120("tProjected");
|
||||
vertexLinker.name_125(alternativa3d::_projectProcedure,"tProjected");
|
||||
vertexLinker.name_123(postPassAdvancedFogConstProcedure);
|
||||
vertexLinker.name_118(postPassAdvancedFogConstProcedure,positionVar,"tProjected");
|
||||
fragmentLinker.name_123(outputWithAdvancedFogProcedure);
|
||||
fragmentLinker.name_118(outputWithAdvancedFogProcedure,"outColor");
|
||||
}
|
||||
fragmentLinker.name_142();
|
||||
fragmentLinker.name_133(vertexLinker);
|
||||
return new EnvironmentMaterialShaderProgram(vertexLinker,fragmentLinker);
|
||||
}
|
||||
|
||||
override alternativa3d function collectDraws(camera:name_124, surface:name_117, geometry:name_119, lights:Vector.<name_116>, lightsLength:int, objectRenderPriority:int = -1) : void
|
||||
{
|
||||
var program:name_127 = null;
|
||||
var i:int = 0;
|
||||
var lm:name_139 = null;
|
||||
var dist:Number = NaN;
|
||||
var cLocal:name_139 = null;
|
||||
var halfW:Number = NaN;
|
||||
var leftX:Number = NaN;
|
||||
var leftY:Number = NaN;
|
||||
var rightX:Number = NaN;
|
||||
var rightY:Number = NaN;
|
||||
var angle:Number = NaN;
|
||||
var dx:Number = NaN;
|
||||
var dy:Number = NaN;
|
||||
var lens:Number = NaN;
|
||||
var uScale:Number = NaN;
|
||||
var uRight:Number = NaN;
|
||||
var bmd:BitmapData = null;
|
||||
if(diffuseMap == null || this.environmentMap == null || diffuseMap.alternativa3d::_texture == null || this.environmentMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if(!var_21 && opacityMap != null && opacityMap.alternativa3d::_texture == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var object:name_78 = surface.alternativa3d::object;
|
||||
var positionBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.POSITION);
|
||||
var uvBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.TEXCOORDS[0]);
|
||||
var normalsBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.NORMAL);
|
||||
var tangentsBuffer:VertexBuffer3D = geometry.alternativa3d::getVertexBuffer(name_126.TANGENT4);
|
||||
if(positionBuffer == null || uvBuffer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var key:String = alternativa3d::fogMode.toString() + this.var_53.toString() + (this.normalMap != null ? "N" : "n") + (opacityMap != null ? "O" : "o") + (var_21 ? "D" : "d");
|
||||
var programs:Dictionary = _programs[object.alternativa3d::transformProcedure];
|
||||
if(programs == null)
|
||||
{
|
||||
programs = new Dictionary(false);
|
||||
_programs[object.alternativa3d::transformProcedure] = programs;
|
||||
program = this.method_75(object);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
programs[key] = program;
|
||||
}
|
||||
else
|
||||
{
|
||||
program = programs[key];
|
||||
if(program == null)
|
||||
{
|
||||
program = this.method_75(object);
|
||||
program.upload(camera.alternativa3d::context3D);
|
||||
programs[key] = program;
|
||||
}
|
||||
}
|
||||
var drawUnit:name_135 = camera.alternativa3d::renderer.alternativa3d::name_137(object,program.program,geometry.alternativa3d::name_132,surface.indexBegin,surface.numTriangles,program);
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sLightMap"),this.lightMap.alternativa3d::_texture);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aPosition"),positionBuffer,geometry.alternativa3d::_attributesOffsets[name_126.POSITION],name_126.alternativa3d::FORMATS[name_126.POSITION]);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aUV"),uvBuffer,geometry.alternativa3d::_attributesOffsets[name_126.TEXCOORDS[0]],name_126.alternativa3d::FORMATS[name_126.TEXCOORDS[0]]);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aUV1"),uvBuffer,geometry.alternativa3d::_attributesOffsets[name_126.TEXCOORDS[this.lightMapChannel]],name_126.alternativa3d::FORMATS[name_126.TEXCOORDS[this.lightMapChannel]]);
|
||||
drawUnit.alternativa3d::setVertexBufferAt(program.vertexShader.getVariableIndex("aNormal"),normalsBuffer,geometry.alternativa3d::_attributesOffsets[name_126.NORMAL],name_126.alternativa3d::FORMATS[name_126.NORMAL]);
|
||||
object.alternativa3d::setTransformConstants(drawUnit,surface,program.vertexShader,camera);
|
||||
drawUnit.alternativa3d::name_136(camera,program.vertexShader.getVariableIndex("cProjMatrix"),object.alternativa3d::localToCameraTransform);
|
||||
var camTransform:name_139 = object.alternativa3d::cameraToLocalTransform;
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cCamera"),camTransform.d,camTransform.h,camTransform.l);
|
||||
var envProgram:EnvironmentMaterialShaderProgram = program as EnvironmentMaterialShaderProgram;
|
||||
if(this.normalMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(envProgram.sBump,this.normalMap.alternativa3d::_texture);
|
||||
if(this.var_53 == name_204.TANGENT_RIGHT_HANDED || this.var_53 == name_204.TANGENT_LEFT_HANDED)
|
||||
{
|
||||
drawUnit.alternativa3d::setVertexBufferAt(envProgram.aTangent,tangentsBuffer,geometry.alternativa3d::_attributesOffsets[name_126.TANGENT4],name_126.alternativa3d::FORMATS[name_126.TANGENT4]);
|
||||
}
|
||||
}
|
||||
if(this.reflectionMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(envProgram.sReflection,this.reflectionMap.alternativa3d::_texture);
|
||||
}
|
||||
drawUnit.alternativa3d::setTextureAt(envProgram.sTexture,diffuseMap.alternativa3d::_texture);
|
||||
drawUnit.alternativa3d::setTextureAt(envProgram.sCubeMap,this.environmentMap.alternativa3d::_texture);
|
||||
var cameraToLocalTransform:name_139 = object.alternativa3d::cameraToLocalTransform;
|
||||
drawUnit.alternativa3d::name_134(envProgram.cCamera,cameraToLocalTransform.d,cameraToLocalTransform.h,cameraToLocalTransform.l);
|
||||
drawUnit.alternativa3d::name_134(envProgram.cAlpha,0,1 - this.reflection,this.reflection,alpha);
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sTexture"),diffuseMap.alternativa3d::_texture);
|
||||
if(!var_21 && opacityMap != null)
|
||||
{
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sOpacity"),opacityMap.alternativa3d::_texture);
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE || alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
lm = object.alternativa3d::localToCameraTransform;
|
||||
dist = alternativa3d::fogFar - alternativa3d::fogNear;
|
||||
drawUnit.alternativa3d::name_144(program.vertexShader.getVariableIndex("cFogSpace"),lm.i / dist,lm.j / dist,lm.k / dist,(lm.l - alternativa3d::fogNear) / dist);
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cFogRange"),alternativa3d::fogMaxDensity,1,0,1 - alternativa3d::fogMaxDensity);
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::SIMPLE)
|
||||
{
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cFogColor"),alternativa3d::fogColorR,alternativa3d::fogColorG,alternativa3d::fogColorB);
|
||||
}
|
||||
if(alternativa3d::fogMode == alternativa3d::ADVANCED)
|
||||
{
|
||||
if(alternativa3d::fogTexture == null)
|
||||
{
|
||||
bmd = new BitmapData(32,1,false,16711680);
|
||||
for(i = 0; i < 32; i++)
|
||||
{
|
||||
bmd.setPixel(i,0,i / 32 * 255 << 16);
|
||||
}
|
||||
alternativa3d::fogTexture = new name_93(bmd);
|
||||
alternativa3d::fogTexture.upload(camera.alternativa3d::context3D);
|
||||
}
|
||||
cLocal = camera.alternativa3d::localToGlobalTransform;
|
||||
halfW = camera.view.width / 2;
|
||||
leftX = -halfW * cLocal.a + camera.alternativa3d::focalLength * cLocal.c;
|
||||
leftY = -halfW * cLocal.e + camera.alternativa3d::focalLength * cLocal.g;
|
||||
rightX = halfW * cLocal.a + camera.alternativa3d::focalLength * cLocal.c;
|
||||
rightY = halfW * cLocal.e + camera.alternativa3d::focalLength * cLocal.g;
|
||||
angle = Math.atan2(leftY,leftX) - Math.PI / 2;
|
||||
if(angle < 0)
|
||||
{
|
||||
angle += Math.PI * 2;
|
||||
}
|
||||
dx = rightX - leftX;
|
||||
dy = rightY - leftY;
|
||||
lens = Number(Math.sqrt(dx * dx + dy * dy));
|
||||
leftX /= lens;
|
||||
leftY /= lens;
|
||||
rightX /= lens;
|
||||
rightY /= lens;
|
||||
uScale = Math.acos(leftX * rightX + leftY * rightY) / Math.PI / 2;
|
||||
uRight = angle / Math.PI / 2;
|
||||
drawUnit.alternativa3d::name_134(program.fragmentShader.getVariableIndex("cFogConsts"),0.5 * uScale,0.5 - uRight,0);
|
||||
drawUnit.alternativa3d::setTextureAt(program.fragmentShader.getVariableIndex("sFogTexture"),alternativa3d::fogTexture.alternativa3d::_texture);
|
||||
}
|
||||
if(var_21 || opacityMap != null || alpha < 1)
|
||||
{
|
||||
drawUnit.alternativa3d::blendSource = Context3DBlendFactor.SOURCE_ALPHA;
|
||||
drawUnit.alternativa3d::blendDestination = Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA;
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.TRANSPARENT_SORT);
|
||||
}
|
||||
else
|
||||
{
|
||||
camera.alternativa3d::renderer.alternativa3d::name_130(drawUnit,objectRenderPriority >= 0 ? objectRenderPriority : name_128.OPAQUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
import package_30.name_121;
|
||||
|
||||
class EnvironmentMaterialShaderProgram extends name_127
|
||||
{
|
||||
public var aTangent:int = -1;
|
||||
|
||||
public var aNormal:int = -1;
|
||||
|
||||
public var aPosition:int = -1;
|
||||
|
||||
public var aUV:int = -1;
|
||||
|
||||
public var cCamera:int = -1;
|
||||
|
||||
public var cAlpha:int = -1;
|
||||
|
||||
public var cProjMatrix:int = -1;
|
||||
|
||||
public var sBump:int = -1;
|
||||
|
||||
public var sTexture:int = -1;
|
||||
|
||||
public var sOpacity:int = -1;
|
||||
|
||||
public var sCubeMap:int = -1;
|
||||
|
||||
public var sReflection:int = -1;
|
||||
|
||||
public function EnvironmentMaterialShaderProgram(vertexShader:name_121, fragmentShader:name_121)
|
||||
{
|
||||
super(vertexShader,fragmentShader);
|
||||
this.aPosition = vertexShader.getVariableIndex("aPosition");
|
||||
this.aNormal = vertexShader.getVariableIndex("aNormal");
|
||||
this.aUV = vertexShader.getVariableIndex("aUV");
|
||||
if(fragmentShader.method_286("sBump"))
|
||||
{
|
||||
this.sBump = fragmentShader.getVariableIndex("sBump");
|
||||
}
|
||||
if(vertexShader.method_286("aTangent"))
|
||||
{
|
||||
this.aTangent = vertexShader.getVariableIndex("aTangent");
|
||||
}
|
||||
if(fragmentShader.method_286("sReflection"))
|
||||
{
|
||||
this.sReflection = fragmentShader.getVariableIndex("sReflection");
|
||||
}
|
||||
this.cProjMatrix = vertexShader.getVariableIndex("cProjMatrix");
|
||||
this.sTexture = fragmentShader.getVariableIndex("sTexture");
|
||||
this.sCubeMap = fragmentShader.getVariableIndex("sCubeMap");
|
||||
this.cCamera = fragmentShader.getVariableIndex("cCamera");
|
||||
this.cAlpha = fragmentShader.getVariableIndex("cAlpha");
|
||||
if(fragmentShader.method_286("sOpacity"))
|
||||
{
|
||||
this.sOpacity = fragmentShader.getVariableIndex("sOpacity");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user