From 1d0c9d66576a3cdf226d2169f20f70ce51d85eae Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Sun, 9 Aug 2026 04:23:10 -0700 Subject: [PATCH] Added shaders and doomscript from the build. --- .../decls/renderprogs/blendlight_fragment.inc | 20 + .../renderprogs/decalmerged_fragment.inc | 105 + .../renderprogs/decalquadmerged_fragment.inc | 18 + bin/base/decls/renderprogs/global.inc | 571 ++ .../decls/renderprogs/includes/autosprite.inc | 39 + .../renderprogs/includes/deferredlighting.inc | 77 + bin/base/decls/renderprogs/includes/gore.inc | 179 + .../renderprogs/includes/interaction.inc | 1225 ++++ .../decls/renderprogs/includes/luminance.inc | 40 + .../decls/renderprogs/includes/shadow.inc | 191 + .../decls/renderprogs/includes/unique.inc | 204 + .../decls/renderprogs/includes/vertex.inc | 752 ++ bin/base/decls/renderprogs/includes/vmtr.inc | 970 +++ .../decls/renderprogs/includes/wrinklemap.inc | 32 + bin/base/decls/renderprogs/particle_fp.inc | 52 + bin/base/decls/renderprogs/particle_vp.inc | 35 + bin/base/decls/renderprogs/skinning.inc | 284 + .../decls/renderprogs/skinning_normals.inc | 339 + .../decls/renderprogs/softparticle_fp.inc | 15 + .../decls/renderprogs/softparticle_vp.inc | 48 + .../renderparm/adaptiveglareblurmap.decl | 1 + .../renderparm/adaptiveglareblurstep.decl | 1 + .../decls/renderparm/adaptiveglarecolor.decl | 1 + .../decls/renderparm/adaptiveglaremap.decl | 1 + .../decls/renderparm/adaptiveglaremapalt.decl | 1 + .../decls/renderparm/adaptiveglareparms.decl | 1 + .../renderparm/adaptiveglarethreshold.decl | 1 + .../decls/renderparm/adaptiveluminance.decl | 1 + .../decls/renderparm/addprogram.decl | 1 + .../renderparm/allowblendedpassmerge.decl | 1 + .../decls/renderparm/allowoverlays.decl | 1 + .../decls/renderparm/alphascale.decl | 1 + .../decls/renderparm/altbumpcontribution.decl | 1 + .../renderparm/altdiffusecontribution.decl | 1 + .../decls/renderparm/altmaterial.decl | 1 + .../generated/decls/renderparm/altscale.decl | 1 + .../decls/renderparm/ambientenvmap.decl | 1 + .../decls/renderparm/ambientlightcolor.decl | 1 + .../decls/renderparm/ambientprogram.decl | 1 + .../generated/decls/renderparm/arealight.decl | 1 + .../decls/renderparm/autospritetype.decl | 1 + .../decls/renderparm/bakedvieworigin.decl | 1 + .../generated/decls/renderparm/binkcb.decl | 1 + .../generated/decls/renderparm/binkcr.decl | 1 + .../generated/decls/renderparm/binky.decl | 1 + .../decls/renderparm/blendprogram.decl | 1 + .../decls/renderparm/brightnessscale.decl | 1 + .../renderparm/buildareaoriginindex.decl | 1 + .../generated/decls/renderparm/bumpmap.decl | 1 + .../decls/renderparm/cbblacklevel.decl | 1 + .../decls/renderparm/cbbrightness.decl | 1 + .../decls/renderparm/cbcolorburn.decl | 1 + .../decls/renderparm/cbcolordodge.decl | 1 + .../decls/renderparm/cbcolormultiply.decl | 1 + .../decls/renderparm/cbcolorscreen.decl | 1 + .../decls/renderparm/cbconversionlut.decl | 1 + .../decls/renderparm/cbdesaturate.decl | 1 + .../decls/renderparm/cbhighlight.decl | 1 + .../generated/decls/renderparm/cbmidtone.decl | 1 + .../generated/decls/renderparm/cbshadow.decl | 1 + .../decls/renderparm/channellight0.decl | 1 + .../decls/renderparm/channellight1.decl | 1 + .../decls/renderparm/channellight2.decl | 1 + .../decls/renderparm/channellight3.decl | 1 + .../decls/renderparm/channellight4.decl | 1 + .../decls/renderparm/channellight5.decl | 1 + .../decls/renderparm/cloudscale.decl | 1 + .../decls/renderparm/cloudscale1.decl | 1 + .../generated/decls/renderparm/color.decl | 1 + .../decls/renderparm/contentflags.decl | 1 + .../renderparm/contents_aasclusterportal.decl | 1 + .../decls/renderparm/contents_aasfly.decl | 1 + .../renderparm/contents_aasobstacle.decl | 1 + .../decls/renderparm/contents_aassolid.decl | 1 + .../renderparm/contents_aaswalkablewall.decl | 1 + .../decls/renderparm/contents_ai.decl | 1 + .../decls/renderparm/contents_aiaware.decl | 1 + .../decls/renderparm/contents_breakable.decl | 1 + .../contents_contextualcover_clip.decl | 1 + .../decls/renderparm/contents_corpse.decl | 1 + .../decls/renderparm/contents_ikclip.decl | 1 + .../renderparm/contents_monsterclip.decl | 1 + .../renderparm/contents_monstercoverclip.decl | 1 + .../renderparm/contents_moveableclip.decl | 1 + .../decls/renderparm/contents_nocover.decl | 1 + .../decls/renderparm/contents_nonsolid.decl | 1 + .../decls/renderparm/contents_obstacle.decl | 1 + .../decls/renderparm/contents_opaque.decl | 1 + .../decls/renderparm/contents_player.decl | 1 + .../decls/renderparm/contents_playerclip.decl | 1 + .../renderparm/contents_playercoverclip.decl | 1 + .../renderparm/contents_playerfocus.decl | 1 + .../decls/renderparm/contents_projectile.decl | 1 + .../decls/renderparm/contents_shotclip.decl | 1 + .../decls/renderparm/contents_solid.decl | 1 + .../decls/renderparm/contents_tickclip.decl | 1 + .../decls/renderparm/contents_trigger.decl | 1 + .../decls/renderparm/contents_water.decl | 1 + .../generated/decls/renderparm/coverage.decl | 1 + .../generated/decls/renderparm/covermap.decl | 1 + .../generated/decls/renderparm/cpumap.decl | 1 + .../decls/renderparm/deathfadeopacity.decl | 1 + .../generated/decls/renderparm/decalpos.decl | 1 + .../renderparm/decalpostolocalboxspacew.decl | 1 + .../renderparm/decalpostolocalboxspacex.decl | 1 + .../renderparm/decalpostolocalboxspacey.decl | 1 + .../renderparm/decalpostolocalboxspacez.decl | 1 + .../decls/renderparm/decalprojtype.decl | 1 + .../renderparm/depthbasedcolorgrading.decl | 1 + .../renderparm/depthfillfadeprogram.decl | 1 + .../decls/renderparm/depthfillprogram.decl | 1 + .../decls/renderparm/depthoffield.decl | 1 + .../decls/renderparm/depthoffield2.decl | 1 + .../decls/renderparm/diffusemap.decl | 1 + .../decls/renderparm/dimshadowclipplane.decl | 1 + .../decls/renderparm/dimshadowdepthmap.decl | 1 + .../decls/renderparm/dimshadowextrude.decl | 1 + .../decls/renderparm/dimshadowfade.decl | 1 + .../generated/decls/renderparm/discrete.decl | 1 + .../decls/renderparm/distortionfade.decl | 1 + .../renderparm/distortionlastframemap.decl | 1 + .../decls/renderparm/distortionmap.decl | 1 + .../decls/renderparm/distortionscale.decl | 1 + .../decls/renderparm/dither256map.decl | 1 + .../generated/decls/renderparm/diversity.decl | 1 + .../decls/renderparm/doublevision.decl | 1 + .../decls/renderparm/dynamicenvmap.decl | 1 + .../decls/renderparm/editoralpha.decl | 1 + .../decls/renderparm/editorcolor.decl | 1 + .../decls/renderparm/editordraw.decl | 1 + .../generated/decls/renderparm/editormap.decl | 1 + .../decls/renderparm/envblendmip.decl | 1 + .../decls/renderparm/envblendtime.decl | 1 + .../decls/renderparm/envgrazingscale.decl | 1 + .../generated/decls/renderparm/envmap.decl | 1 + .../decls/renderparm/envmaprotation.decl | 1 + .../decls/renderparm/envrmatrix.decl | 1 + .../generated/decls/renderparm/envscale.decl | 1 + .../decls/renderparm/envsmatrix.decl | 1 + .../decls/renderparm/envtmatrix.decl | 1 + .../generated/decls/renderparm/exposure.decl | 1 + .../renderparm/eyehighlightpowlevel.decl | 1 + .../generated/decls/renderparm/fademap.decl | 1 + .../decls/renderparm/fadeperturbprogram.decl | 1 + .../decls/renderparm/feedbackcolormap.decl | 1 + .../decls/renderparm/flareoriginndc.decl | 1 + .../generated/decls/renderparm/fogcolor.decl | 1 + .../generated/decls/renderparm/fogend.decl | 1 + .../generated/decls/renderparm/fogscale.decl | 1 + .../generated/decls/renderparm/fogstart.decl | 1 + .../decls/renderparm/forceopaque.decl | 1 + .../decls/renderparm/framenumber.decl | 1 + .../generated/decls/renderparm/glaremap.decl | 1 + .../generated/decls/renderparm/glaremax.decl | 1 + .../decls/renderparm/glareprescale.decl | 1 + .../decls/renderparm/glarescale.decl | 1 + .../generated/decls/renderparm/glarestep.decl | 1 + .../decls/renderparm/globalblur.decl | 1 + .../decls/renderparm/globallightorigin.decl | 1 + .../decls/renderparm/globalshadows.decl | 1 + .../decls/renderparm/globalviewfwd.decl | 1 + .../decls/renderparm/globalviewleft.decl | 1 + .../decls/renderparm/globalvieworigin.decl | 1 + .../decls/renderparm/globalviewup.decl | 1 + .../decls/renderparm/godraycolor.decl | 1 + .../decls/renderparm/godrayquadscalebias.decl | 1 + .../renderparm/godraysourcescalebias.decl | 1 + .../renderparm/godrayssourcetexture.decl | 1 + .../decls/renderparm/grainamount.decl | 1 + .../generated/decls/renderparm/grainhz.decl | 1 + .../decls/renderparm/grainlevelsmax.decl | 1 + .../decls/renderparm/grainlevelsmin.decl | 1 + .../generated/decls/renderparm/grainmap.decl | 1 + .../decls/renderparm/grazingdiffusecolor.decl | 1 + .../renderparm/grazingspecularcolor.decl | 1 + .../decls/renderparm/gunmuzzleflash.decl | 1 + .../decls/renderparm/gunmuzzleflashcolor.decl | 1 + .../decls/renderparm/highlightcolor.decl | 1 + .../decls/renderparm/hqspecularnormal.decl | 1 + bin/base/generated/decls/renderparm/if.decl | 1 + .../decls/renderparm/interactionprogram.decl | 1 + .../decls/renderparm/inversemodelmatrixw.decl | 1 + .../decls/renderparm/inversemodelmatrixx.decl | 1 + .../decls/renderparm/inversemodelmatrixy.decl | 1 + .../decls/renderparm/inversemodelmatrixz.decl | 1 + .../decls/renderparm/inversemvpmatrixw.decl | 1 + .../decls/renderparm/inversemvpmatrixx.decl | 1 + .../decls/renderparm/inversemvpmatrixy.decl | 1 + .../decls/renderparm/inversemvpmatrixz.decl | 1 + .../renderparm/inverseprojectionmatrixw.decl | 1 + .../renderparm/inverseprojectionmatrixx.decl | 1 + .../renderparm/inverseprojectionmatrixy.decl | 1 + .../renderparm/inverseprojectionmatrixz.decl | 1 + .../decls/renderparm/inverseviewmatrixw.decl | 1 + .../decls/renderparm/inverseviewmatrixx.decl | 1 + .../decls/renderparm/inverseviewmatrixy.decl | 1 + .../decls/renderparm/inverseviewmatrixz.decl | 1 + .../decls/renderparm/landdefinitionfile.decl | 1 + .../decls/renderparm/landdiffuseonly.decl | 1 + .../decls/renderparm/landdimensions.decl | 1 + .../decls/renderparm/landgenmodel.decl | 1 + .../decls/renderparm/landindexcolor.decl | 1 + .../decls/renderparm/landlayoutversion.decl | 1 + .../decls/renderparm/landmappingmodel.decl | 1 + .../decls/renderparm/landmodelfile.decl | 1 + .../decls/renderparm/landpagefile.decl | 1 + .../decls/renderparm/landshadowmodel.decl | 1 + .../decls/renderparm/landstampblendmode.decl | 1 + .../renderparm/landstampblendmodenone.decl | 1 + .../decls/renderparm/layoutdownscale.decl | 1 + .../decls/renderparm/lightcolor.decl | 1 + .../renderparm/lightdepthcomparemap.decl | 1 + .../decls/renderparm/lightdepthmap.decl | 1 + .../generated/decls/renderparm/lightfade.decl | 1 + .../decls/renderparm/lightfalloffmap.decl | 1 + .../decls/renderparm/lightingmodel.decl | 1 + .../decls/renderparm/lightoscillationamp.decl | 1 + .../renderparm/lightoscillationfreq.decl | 1 + .../renderparm/lightoscillationphase.decl | 1 + .../decls/renderparm/lightprojectionq.decl | 1 + .../decls/renderparm/lightprojectionr.decl | 1 + .../decls/renderparm/lightprojections.decl | 1 + .../decls/renderparm/lightprojectiont.decl | 1 + .../decls/renderparm/lightprojectmap.decl | 1 + .../decls/renderparm/lightrotation.decl | 1 + .../decls/renderparm/lightscale.decl | 1 + .../decls/renderparm/lighttranslation.decl | 1 + .../decls/renderparm/loadingicon.decl | 1 + .../decls/renderparm/localtolightq.decl | 1 + .../decls/renderparm/localtolightr.decl | 1 + .../decls/renderparm/localtolights.decl | 1 + .../decls/renderparm/localtolightt.decl | 1 + .../decls/renderparm/localviewleft.decl | 1 + .../decls/renderparm/localvieworigin.decl | 1 + .../decls/renderparm/localviewup.decl | 1 + .../decls/renderparm/luminositymap.decl | 1 + .../decls/renderparm/luminositymapalt.decl | 1 + .../decls/renderparm/materialcoverage.decl | 1 + .../decls/renderparm/megatextureaddmap.decl | 1 + .../decls/renderparm/megatexturemorph.decl | 1 + .../decls/renderparm/modelangles.decl | 1 + .../generated/decls/renderparm/modelfade.decl | 1 + .../decls/renderparm/modelfadeextrude.decl | 1 + .../decls/renderparm/modelmatrixw.decl | 1 + .../decls/renderparm/modelmatrixx.decl | 1 + .../decls/renderparm/modelmatrixy.decl | 1 + .../decls/renderparm/modelmatrixz.decl | 1 + .../decls/renderparm/muzzleflashoffset.decl | 1 + .../decls/renderparm/mvpmatrixw.decl | 1 + .../decls/renderparm/mvpmatrixx.decl | 1 + .../decls/renderparm/mvpmatrixy.decl | 1 + .../decls/renderparm/mvpmatrixz.decl | 1 + .../decls/renderparm/newambientscale.decl | 1 + .../decls/renderparm/newdiffusescale.decl | 1 + .../decls/renderparm/newpowerscale.decl | 1 + .../decls/renderparm/newspecularscale.decl | 1 + .../decls/renderparm/nofragment.decl | 1 + .../decls/renderparm/noselfshadow.decl | 1 + .../generated/decls/renderparm/noshadows.decl | 1 + .../decls/renderparm/overlayopacity.decl | 1 + .../decls/renderparm/pagetablemap.decl | 1 + .../renderparm/parallellightslicescale.decl | 1 + .../decls/renderparm/particlefade.decl | 1 + .../decls/renderparm/particlelod.decl | 1 + .../decls/renderparm/particlescale.decl | 1 + .../decls/renderparm/particlestscalebias.decl | 1 + .../decls/renderparm/particlevel.decl | 1 + ...physicaluniquediffuseonly2filterparms.decl | 1 + .../physicaluniquediffuseonlyfilterparms.decl | 1 + ...physicaluniquediffuseonlymappingsmap0.decl | 1 + .../physicaluniquediffuseonlypagesmap1.decl | 1 + .../renderparm/physicaluniquefilterparms.decl | 1 + .../physicaluniquemappingsmap0.decl | 1 + .../renderparm/physicaluniquepagesmap0.decl | 1 + .../renderparm/physicaluniquepagesmap1.decl | 1 + .../renderparm/physicaluniquepagesmap2.decl | 1 + .../renderparm/physicalvmtrfilterparms.decl | 1 + .../renderparm/physicalvmtrmappingsmap0.decl | 1 + .../renderparm/physicalvmtrpagesmap0.decl | 1 + .../renderparm/physicalvmtrpagesmap1.decl | 1 + .../renderparm/physicalvmtrpagesmap2.decl | 1 + .../decls/renderparm/polygonoffset.decl | 1 + .../decls/renderparm/positiontofeedback.decl | 1 + .../renderparm/positiontoviewtexture.decl | 1 + .../decls/renderparm/postdistortionmap.decl | 1 + .../decls/renderparm/postgrainparms.decl | 1 + .../decls/renderparm/postgrainscalebias.decl | 1 + .../generated/decls/renderparm/powermap.decl | 1 + .../generated/decls/renderparm/powermip.decl | 1 + .../decls/renderparm/primelightcolor.decl | 1 + .../decls/renderparm/primelightdir.decl | 1 + .../decls/renderparm/primelightmin.decl | 1 + .../decls/renderparm/projectionmatrixw.decl | 1 + .../decls/renderparm/projectionmatrixx.decl | 1 + .../decls/renderparm/projectionmatrixy.decl | 1 + .../decls/renderparm/projectionmatrixz.decl | 1 + .../decls/renderparm/qer_editorimage.decl | 1 + .../generated/decls/renderparm/qmatrix.decl | 1 + .../decls/renderparm/radialblurcenter.decl | 1 + .../decls/renderparm/radialblurenable.decl | 1 + .../decls/renderparm/radialblurmaxscale.decl | 1 + .../decls/renderparm/radialblurscale.decl | 1 + .../decls/renderparm/radiositypreviewmap.decl | 1 + .../decls/renderparm/radiosityprevieww.decl | 1 + .../decls/renderparm/radiositypreviewx.decl | 1 + .../decls/renderparm/radiositypreviewy.decl | 1 + .../decls/renderparm/radiositypreviewz.decl | 1 + .../decls/renderparm/renderbump.decl | 1 + .../renderpositiontoviewtexture.decl | 1 + .../generated/decls/renderparm/rmatrix.decl | 1 + .../decls/renderparm/screenoverlay.decl | 1 + .../decls/renderparm/screenscale.decl | 1 + .../decls/renderparm/screensizeratio.decl | 1 + .../generated/decls/renderparm/select.decl | 1 + .../renderparm/shadowbufferresolution.decl | 1 + .../decls/renderparm/shadowfade.decl | 1 + .../decls/renderparm/shadowprogram.decl | 1 + .../decls/renderparm/shadowprojectionq.decl | 1 + .../decls/renderparm/shadowprojectionr.decl | 1 + .../decls/renderparm/shadowprojections.decl | 1 + .../decls/renderparm/shadowprojectiont.decl | 1 + .../decls/renderparm/sharpbakedambient.decl | 1 + .../decls/renderparm/showdepthoffield.decl | 1 + .../decls/renderparm/showgrainlevels.decl | 1 + .../decls/renderparm/showoverlay.decl | 1 + .../decls/renderparm/skipsurfaceinfo.decl | 1 + .../decls/renderparm/skyfogcutoffheight.decl | 1 + .../decls/renderparm/skyglareprescale.decl | 1 + .../generated/decls/renderparm/smatrix.decl | 1 + .../generated/decls/renderparm/smatrix1.decl | 1 + .../decls/renderparm/sobelopacity.decl | 1 + .../decls/renderparm/sobelthreshold.decl | 1 + .../decls/renderparm/sortbackground.decl | 1 + .../decls/renderparm/sortcoverage.decl | 1 + .../generated/decls/renderparm/sortdecal.decl | 1 + .../generated/decls/renderparm/sortemit.decl | 1 + .../decls/renderparm/sortemitonly.decl | 1 + .../generated/decls/renderparm/sortlight.decl | 1 + .../decls/renderparm/sortperturber.decl | 1 + .../decls/renderparm/sortskybox.decl | 1 + .../generated/decls/renderparm/sorttrans.decl | 1 + .../decls/renderparm/sorttranssort.decl | 1 + .../generated/decls/renderparm/sortwater.decl | 1 + .../generated/decls/renderparm/spare1map.decl | 1 + .../generated/decls/renderparm/spare2map.decl | 1 + .../decls/renderparm/sparebumpmap.decl | 1 + .../decls/renderparm/sparebumpmap1.decl | 1 + .../decls/renderparm/sparebumpmap2.decl | 1 + .../decls/renderparm/sparediffusemap.decl | 1 + .../decls/renderparm/sparediffusemap2.decl | 1 + .../decls/renderparm/sparespecularmap.decl | 1 + .../decls/renderparm/sparespecularmap2.decl | 1 + .../decls/renderparm/specularmap.decl | 1 + .../decls/renderparm/stageprogram.decl | 1 + .../generated/decls/renderparm/stagesort.decl | 1 + .../decls/renderparm/stampcovers.decl | 1 + .../decls/renderparm/stampscales.decl | 1 + .../renderparm/staticreflectionstrength.decl | 1 + .../staticreflectiontransmission.decl | 1 + .../decls/renderparm/staticspecularscale.decl | 1 + .../renderparm/staticspecularvector.decl | 1 + .../decls/renderparm/surf_collision.decl | 1 + .../decls/renderparm/surf_ladder.decl | 1 + .../decls/renderparm/surf_ladder_top.decl | 1 + .../decls/renderparm/surf_noareas.decl | 1 + .../decls/renderparm/surf_nodamage.decl | 1 + .../decls/renderparm/surf_noimpact.decl | 1 + .../decls/renderparm/surf_noshoot.decl | 1 + .../decls/renderparm/surf_nosteps.decl | 1 + .../decls/renderparm/surf_nullnormal.decl | 1 + .../decls/renderparm/surf_occlusiontest.decl | 1 + .../decls/renderparm/surf_shadowcaster.decl | 1 + .../decls/renderparm/surf_slick.decl | 1 + .../decls/renderparm/surf_stairs.decl | 1 + .../decls/renderparm/surfaceflags.decl | 1 + .../renderparm/surfaceradiosityscale.decl | 1 + .../decls/renderparm/surfacetype.decl | 1 + .../decls/renderparm/surftype_armor.decl | 1 + .../decls/renderparm/surftype_ash.decl | 1 + .../decls/renderparm/surftype_asphalt.decl | 1 + .../decls/renderparm/surftype_bloodpool.decl | 1 + .../decls/renderparm/surftype_cardboard.decl | 1 + .../decls/renderparm/surftype_concrete.decl | 1 + .../decls/renderparm/surftype_dirt.decl | 1 + .../decls/renderparm/surftype_fabric.decl | 1 + .../decls/renderparm/surftype_flesh.decl | 1 + .../renderparm/surftype_fleshdarkangel.decl | 1 + .../renderparm/surftype_fleshmutant.decl | 1 + .../renderparm/surftype_fleshplayer.decl | 1 + .../decls/renderparm/surftype_foliage.decl | 1 + .../decls/renderparm/surftype_glass.decl | 1 + .../renderparm/surftype_hollowmetal.decl | 1 + .../decls/renderparm/surftype_impnest.decl | 1 + .../decls/renderparm/surftype_linoleum.decl | 1 + .../decls/renderparm/surftype_liquid.decl | 1 + .../decls/renderparm/surftype_metal.decl | 1 + .../decls/renderparm/surftype_none.decl | 1 + .../decls/renderparm/surftype_plastic.decl | 1 + .../renderparm/surftype_playerapcmetal.decl | 1 + .../renderparm/surftype_ricketymetal.decl | 1 + .../renderparm/surftype_ricketywood.decl | 1 + .../decls/renderparm/surftype_rock.decl | 1 + .../decls/renderparm/surftype_rubber.decl | 1 + .../decls/renderparm/surftype_sheetmetal.decl | 1 + .../decls/renderparm/surftype_sludge.decl | 1 + .../decls/renderparm/surftype_steampipe.decl | 1 + .../decls/renderparm/surftype_stone.decl | 1 + .../renderparm/surftype_thickpadding.decl | 1 + .../decls/renderparm/surftype_waterpipe.decl | 1 + .../decls/renderparm/surftype_wood.decl | 1 + .../generated/decls/renderparm/temp1.decl | 1 + .../generated/decls/renderparm/temp10.decl | 1 + .../generated/decls/renderparm/temp11.decl | 1 + .../generated/decls/renderparm/temp12.decl | 1 + .../generated/decls/renderparm/temp13.decl | 1 + .../generated/decls/renderparm/temp14.decl | 1 + .../generated/decls/renderparm/temp15.decl | 1 + .../generated/decls/renderparm/temp16.decl | 1 + .../generated/decls/renderparm/temp17.decl | 1 + .../generated/decls/renderparm/temp18.decl | 1 + .../generated/decls/renderparm/temp19.decl | 1 + .../generated/decls/renderparm/temp2.decl | 1 + .../generated/decls/renderparm/temp20.decl | 1 + .../generated/decls/renderparm/temp21.decl | 1 + .../generated/decls/renderparm/temp22.decl | 1 + .../generated/decls/renderparm/temp23.decl | 1 + .../generated/decls/renderparm/temp24.decl | 1 + .../generated/decls/renderparm/temp25.decl | 1 + .../generated/decls/renderparm/temp26.decl | 1 + .../generated/decls/renderparm/temp27.decl | 1 + .../generated/decls/renderparm/temp28.decl | 1 + .../generated/decls/renderparm/temp29.decl | 1 + .../generated/decls/renderparm/temp3.decl | 1 + .../generated/decls/renderparm/temp30.decl | 1 + .../generated/decls/renderparm/temp31.decl | 1 + .../generated/decls/renderparm/temp32.decl | 1 + .../generated/decls/renderparm/temp4.decl | 1 + .../generated/decls/renderparm/temp5.decl | 1 + .../generated/decls/renderparm/temp6.decl | 1 + .../generated/decls/renderparm/temp7.decl | 1 + .../generated/decls/renderparm/temp8.decl | 1 + .../generated/decls/renderparm/temp9.decl | 1 + .../decls/renderparm/testenvlod.decl | 1 + .../decls/renderparm/testimagealpha.decl | 1 + .../decls/renderparm/testimageflip.decl | 1 + .../decls/renderparm/testimagelod.decl | 1 + .../decls/renderparm/texturemap.decl | 1 + .../renderparm/texturemapmultisample.decl | 1 + .../decls/renderparm/texturemapshadow.decl | 1 + bin/base/generated/decls/renderparm/time.decl | 1 + .../decls/renderparm/timeoffset.decl | 1 + .../generated/decls/renderparm/timescale.decl | 1 + .../generated/decls/renderparm/timestop.decl | 1 + .../generated/decls/renderparm/tmatrix.decl | 1 + .../generated/decls/renderparm/tmatrix1.decl | 1 + .../renderparm/toolsflag_manifoldhint.decl | 1 + .../decls/renderparm/toolsflag_nocsg.decl | 1 + .../decls/renderparm/toolsflag_pvsclip.decl | 1 + .../decls/renderparm/toolsflag_soundclip.decl | 1 + .../renderparm/toolsflag_soundcliptrans.decl | 1 + .../decls/renderparm/toolsflag_sounddoor.decl | 1 + .../renderparm/toolsflag_soundportal.decl | 1 + .../decls/renderparm/toolsflags.decl | 1 + .../decls/renderparm/transatlasmap.decl | 1 + .../decls/renderparm/transatlasscalebias.decl | 1 + .../renderparm/transatlasscalebiasinv.decl | 1 + .../generated/decls/renderparm/transmap.decl | 1 + .../generated/decls/renderparm/transmap1.decl | 1 + .../generated/decls/renderparm/transmap2.decl | 1 + .../decls/renderparm/transsortatlasdim.decl | 1 + .../decls/renderparm/transsortmap.decl | 1 + .../decls/renderparm/useclipspheres.decl | 1 + .../decls/renderparm/userenvmap.decl | 1 + .../decls/renderparm/useskinblending.decl | 1 + .../decls/renderparm/usevirtualmapping.decl | 1 + .../decls/renderparm/vertexmorphscale.decl | 1 + .../decls/renderparm/vertexstscalebias.decl | 1 + .../decls/renderparm/vertexxyzbias.decl | 1 + .../decls/renderparm/vertexxyzscale.decl | 1 + .../renderparm/viewcolorlastframemap.decl | 1 + .../decls/renderparm/viewcolormap.decl | 1 + .../decls/renderparm/viewdepthmap.decl | 1 + .../decls/renderparm/viewdepthstencilmap.decl | 1 + .../decls/renderparm/viewdiffusemap.decl | 1 + .../generated/decls/renderparm/viewgraze.decl | 1 + .../decls/renderparm/viewmatrixw.decl | 1 + .../decls/renderparm/viewmatrixx.decl | 1 + .../decls/renderparm/viewmatrixy.decl | 1 + .../decls/renderparm/viewmatrixz.decl | 1 + .../decls/renderparm/viewnormalmap.decl | 1 + .../decls/renderparm/viewrandom.decl | 1 + .../decls/renderparm/virtualmapping.decl | 1 + .../decls/renderparm/virtualpageprogram.decl | 1 + .../virtualtexturefeedbackfloat.decl | 1 + .../decls/renderparm/virtualtransmap.decl | 1 + .../decls/renderparm/vmtrpagetablemap.decl | 1 + .../decls/renderparm/waterheight.decl | 1 + bin/base/generated/decls/renderparm/wind.decl | 1 + .../renderparm/windowpostodimshadowblurq.decl | 1 + .../renderparm/windowpostodimshadowblurr.decl | 1 + .../renderparm/windowpostodimshadowblurs.decl | 1 + .../renderparm/windowpostodimshadowblurt.decl | 1 + .../decls/renderparm/windowpostoglobalw.decl | 1 + .../decls/renderparm/windowpostoglobalx.decl | 1 + .../decls/renderparm/windowpostoglobaly.decl | 1 + .../decls/renderparm/windowpostoglobalz.decl | 1 + .../windowpostoprojectedshadowq.decl | 1 + .../windowpostoprojectedshadowr.decl | 1 + .../windowpostoprojectedshadows.decl | 1 + .../windowpostoprojectedshadowt.decl | 1 + .../renderparm/windowpostoprojectedtexq.decl | 1 + .../renderparm/windowpostoprojectedtexr.decl | 1 + .../renderparm/windowpostoprojectedtexs.decl | 1 + .../renderparm/windowpostoprojectedtext.decl | 1 + .../decls/renderparm/wound1dirx.decl | 1 + .../decls/renderparm/wound1diry.decl | 1 + .../decls/renderparm/wound1dirz.decl | 1 + .../generated/decls/renderparm/wound1pos.decl | 1 + .../decls/renderparm/wound1size.decl | 1 + .../decls/renderparm/wound3posa.decl | 1 + .../decls/renderparm/wound3posb.decl | 1 + .../decls/renderparm/wound3posc.decl | 1 + .../decls/renderparm/wound3posd.decl | 1 + .../decls/renderparm/wound3pose.decl | 1 + .../decls/renderparm/wound3posf.decl | 1 + .../decls/renderparm/wound3posg.decl | 1 + .../decls/renderparm/wound3posh.decl | 1 + .../decls/renderparm/wound3posi.decl | 1 + .../decls/renderparm/wound3posj.decl | 1 + .../decls/renderparm/woundellipsoidx.decl | 1 + .../decls/renderparm/woundellipsoidy.decl | 1 + .../decls/renderparm/woundellipsoidz.decl | 1 + .../decls/renderparm/woundtextile.decl | 1 + .../decls/renderparm/woundtexture.decl | 1 + .../decls/renderparm/wrinklefactor0.decl | 1 + .../decls/renderparm/wrinklefactor1.decl | 1 + .../decls/renderparm/wrinklefactor2.decl | 1 + .../decls/renderparm/wrinklefactor3.decl | 1 + .../decls/renderparm/wrinklescale.decl | 1 + .../renderprog/adaptiveglaregauss15.decl | 49 + .../renderprog/autosprite1coloronly.decl | 35 + .../renderprog/autosprite2coloronly.decl | 35 + .../generated/decls/renderprog/basicadd.decl | 10 + .../decls/renderprog/basicadddepthtest.decl | 11 + .../decls/renderprog/basicblend.decl | 29 + .../decls/renderprog/basicfilter.decl | 10 + .../decls/renderprog/basicfiltertwoside.decl | 11 + .../decls/renderprog/basicmorphadd.decl | 28 + .../renderprog/basicsoftadditiveblend.decl | 11 + .../decls/renderprog/basicsoftblend.decl | 47 + .../renderprog/basicsoftinvertfilter.decl | 53 + .../generated/decls/renderprog/binkyuv.decl | 32 + .../decls/renderprog/blendlight.decl | 24 + .../decls/renderprog/blendlightadd.decl | 25 + .../decls/renderprog/blendlightdebugdraw.decl | 20 + .../decls/renderprog/blendlightinvfilter.decl | 25 + .../renderprog/blendlightspotshadow.decl | 34 + .../decls/renderprog/blendnodraw.decl | 6 + .../decls/renderprog/bloomthreshold.decl | 38 + .../decls/renderprog/brokenwindshield.decl | 77 + .../renderprog/brokenwindshieldspecular.decl | 127 + .../decls/renderprog/buildgodrays.decl | 66 + .../decls/renderprog/characterdecalvmtr.decl | 114 + .../decls/renderprog/charactervmtr.decl | 66 + .../generated/decls/renderprog/clothvmtr.decl | 53 + .../generated/decls/renderprog/coloronly.decl | 22 + .../decls/renderprog/colorparmonly.decl | 19 + .../decls/renderprog/cubeimageonly.decl | 19 + .../decls/renderprog/cutdepthonly.decl | 39 + .../renderprog/cutterflareadditiveblend.decl | 9 + .../decls/renderprog/cutterflareblend.decl | 25 + .../decls/renderprog/cutuniquebumptrans.decl | 7 + .../decls/renderprog/decalblend.decl | 84 + .../decls/renderprog/decalblood.decl | 26 + .../decls/renderprog/decalfilter.decl | 24 + .../decls/renderprog/decalquadadd.decl | 20 + .../decls/renderprog/decalquadblend.decl | 45 + .../decls/renderprog/decalreplace.decl | 24 + .../renderprog/deferredparallellight.decl | 54 + .../decls/renderprog/deferredpointlight.decl | 47 + .../decls/renderprog/deferredspotlight.decl | 47 + .../generated/decls/renderprog/depthonly.decl | 21 + .../generated/decls/renderprog/detail.decl | 57 + .../decls/renderprog/dimshadowcreate.decl | 16 + .../renderprog/dimshadowcreatealpha.decl | 29 + .../renderprog/dimshadowcreatewound.decl | 27 + .../decls/renderprog/dimshadowdebugdraw.decl | 23 + .../decls/renderprog/dimshadowdraw.decl | 77 + .../renderprog/dimshadowdrawhighquality.decl | 112 + .../decls/renderprog/dimshadowstencil.decl | 27 + .../decls/renderprog/drawgodray.decl | 23 + .../decls/renderprog/editordraw.decl | 18 + .../decls/renderprog/editorfeedbackvmtr.decl | 36 + .../generated/decls/renderprog/empty.decl | 10 + .../decls/renderprog/environment.decl | 99 + .../decls/renderprog/environmentadd.decl | 8 + .../decls/renderprog/environmentblend.decl | 26 + .../renderprog/environmentmodulateadd.decl | 9 + .../environmentsinglemodulateadd.decl | 89 + .../decls/renderprog/eyehighquality.decl | 50 + .../renderprog/eyehighqualitydiffuse.decl | 64 + .../renderprog/eyehighqualityspecular.decl | 68 + .../decls/renderprog/eyelowquality.decl | 55 + .../renderprog/fadingdecaladdtwosidedexp.decl | 33 + .../decls/renderprog/feedbackdownsample.decl | 16 + .../decls/renderprog/feedbackresolve.decl | 25 + .../decls/renderprog/flarenodraw.decl | 15 + .../decls/renderprog/flatshadereal.decl | 28 + .../decls/renderprog/fontbiasandgamma.decl | 37 + .../generated/decls/renderprog/gauss15.decl | 49 + .../decls/renderprog/glarescale.decl | 35 + .../generated/decls/renderprog/globalfog.decl | 38 + .../generated/decls/renderprog/guiblend.decl | 28 + .../guiblend_coacgy_premulalpha.decl | 46 + .../generated/decls/renderprog/guicopy.decl | 29 + .../decls/renderprog/guistencildecr.decl | 22 + .../decls/renderprog/guistencilincr.decl | 22 + .../decls/renderprog/interbasic.decl | 26 + .../decls/renderprog/interbasic_parallel.decl | 28 + .../decls/renderprog/interbasic_point.decl | 27 + .../decls/renderprog/interbasic_spot.decl | 27 + .../decls/renderprog/interbasicnovmtr.decl | 30 + .../renderprog/interbasicnovmtr_parallel.decl | 31 + .../renderprog/interbasicnovmtr_point.decl | 30 + .../renderprog/interbasicnovmtr_spot.decl | 30 + .../generated/decls/renderprog/intereye.decl | 26 + .../decls/renderprog/intereye_parallel.decl | 28 + .../decls/renderprog/intereye_point.decl | 27 + .../decls/renderprog/intereye_spot.decl | 27 + .../decls/renderprog/intergrazing.decl | 26 + .../renderprog/intergrazing_parallel.decl | 28 + .../decls/renderprog/intergrazing_point.decl | 27 + .../decls/renderprog/intergrazing_spot.decl | 27 + .../generated/decls/renderprog/interskin.decl | 30 + .../decls/renderprog/interskin_parallel.decl | 38 + .../decls/renderprog/interskin_point.decl | 38 + .../decls/renderprog/interskin_spot.decl | 38 + .../decls/renderprog/interskinwrinkle.decl | 11 + .../renderprog/interskinwrinkle_parallel.decl | 21 + .../renderprog/interskinwrinkle_point.decl | 20 + .../renderprog/interskinwrinkle_spot.decl | 21 + .../decls/renderprog/intertwoside.decl | 10 + .../renderprog/intertwoside_parallel.decl | 9 + .../decls/renderprog/intertwoside_point.decl | 9 + .../decls/renderprog/intertwoside_spot.decl | 9 + .../decls/renderprog/landunique.decl | 35 + .../decls/renderprog/landuniquebump.decl | 65 + .../decls/renderprog/landuniquebumptrans.decl | 23 + .../renderprog/landuniquediffuseonly.decl | 35 + .../landuniqueshowglobalshadows.decl | 61 + .../generated/decls/renderprog/laserbeam.decl | 34 + .../decls/renderprog/laserbeamfade.decl | 29 + .../renderprog/lasercutterbatteryadd.decl | 14 + .../decls/renderprog/lasercutterincision.decl | 52 + .../renderprog/lensflareadditiveblend.decl | 12 + .../decls/renderprog/lensflareblend.decl | 24 + .../decls/renderprog/luminosity.decl | 40 + .../decls/renderprog/modelfadeperturb.decl | 45 + .../decls/renderprog/occludercloth.decl | 37 + .../renderprog/occludercuttransunique.decl | 34 + .../occludercuttransuniquemodelfade.decl | 45 + .../decls/renderprog/occluderdepthonly.decl | 15 + .../decls/renderprog/occluderqueryonly.decl | 17 + .../renderprog/occluderqueryonlyflare.decl | 17 + .../renderprog/occludershadowtransvmtr.decl | 39 + .../decls/renderprog/occludershadowvmtr.decl | 16 + .../decls/renderprog/occludertransunique.decl | 33 + .../decls/renderprog/occludertransvmtr.decl | 39 + .../decls/renderprog/occluderunique.decl | 17 + .../decls/renderprog/occludervmtr.decl | 17 + .../generated/decls/renderprog/outside.decl | 62 + .../decls/renderprog/outsidenovmtr.decl | 156 + .../decls/renderprog/outsidetrans.decl | 53 + .../decls/renderprog/outsidetwosided.decl | 54 + .../renderprog/overlappeddownsample.decl | 30 + .../decls/renderprog/particleadd.decl | 21 + .../decls/renderprog/particleaddalt.decl | 12 + .../renderprog/particleaddaltemissive.decl | 22 + .../decls/renderprog/particleaddemissive.decl | 12 + .../particleaddfirstpersonlaserbeam.decl | 27 + .../decls/renderprog/particleaddtwosided.decl | 11 + .../decls/renderprog/particleblend.decl | 24 + .../particleblendnoalphaexposure.decl | 8 + .../decls/renderprog/particleblendnofog.decl | 7 + .../renderprog/particleblendtwosided.decl | 11 + .../decls/renderprog/particledistortion.decl | 82 + .../decls/renderprog/particleenvadd.decl | 84 + .../decls/renderprog/particleliquidblend.decl | 36 + .../decls/renderprog/particlereplace.decl | 20 + .../decls/renderprog/postprocess.decl | 227 + .../decls/renderprog/postprocesshq.decl | 220 + .../decls/renderprog/radiositypreview.decl | 72 + .../decls/renderprog/ribbondistort.decl | 52 + .../decls/renderprog/shadedcolorparmonly.decl | 24 + .../decls/renderprog/showcracks.decl | 117 + .../generated/decls/renderprog/showdepth.decl | 33 + .../decls/renderprog/showguioverdraw.decl | 21 + .../decls/renderprog/showintensity.decl | 24 + .../decls/renderprog/showtangentspace.decl | 26 + .../decls/renderprog/showtexturespace.decl | 19 + .../decls/renderprog/simpleshade.decl | 26 + .../renderprog/simpleshade_parallel.decl | 28 + .../decls/renderprog/simpleshade_point.decl | 27 + .../decls/renderprog/simpleshade_spot.decl | 27 + .../generated/decls/renderprog/skinvmtr.decl | 90 + .../decls/renderprog/skinvmtrwrinkle.decl | 95 + .../decls/renderprog/skydrawandscroll.decl | 84 + .../decls/renderprog/skydrawandscrolladd.decl | 54 + .../decls/renderprog/sobelfilter.decl | 39 + .../renderprog/softparticleaddemissive.decl | 7 + .../renderprog/softparticleadditiveblend.decl | 26 + .../decls/renderprog/softparticleblend.decl | 25 + .../softparticleblendnoalphaexposure.decl | 9 + ...oftparticleblendnoalphaexposurealpha4.decl | 9 + .../generated/decls/renderprog/testimage.decl | 41 + .../renderprog/testimagemultisample.decl | 30 + .../decls/renderprog/testimageshadow.decl | 23 + .../decls/renderprog/textureonly.decl | 22 + .../decls/renderprog/transsortblend.decl | 86 + .../decls/renderprog/transsortglare.decl | 88 + .../decls/renderprog/varianceshadowmap.decl | 46 + .../decls/renderprog/vehiclevmtr.decl | 56 + .../decls/renderprog/viewcoloridentity.decl | 23 + .../vieweffectdamageoverlayfilter.decl | 32 + .../vieweffectdamageoverlayinvfilter.decl | 32 + .../vieweffectdamageoverlayscreen.decl | 33 + .../decls/renderprog/virtualguiblend.decl | 74 + .../decls/renderprog/weaponvmtr.decl | 68 + .../generated/decls/renderprog/wireframe.decl | 7 + bin/base/script/debug_drawtext.script | 25 + bin/base/script/script_defs.script | 51 + bin/base/script/script_events.script | 6306 +++++++++++++++++ bin/base/script/script_main.script | 26 + bin/base/script/script_util.script | 282 + 734 files changed, 19587 insertions(+) create mode 100644 bin/base/decls/renderprogs/blendlight_fragment.inc create mode 100644 bin/base/decls/renderprogs/decalmerged_fragment.inc create mode 100644 bin/base/decls/renderprogs/decalquadmerged_fragment.inc create mode 100644 bin/base/decls/renderprogs/global.inc create mode 100644 bin/base/decls/renderprogs/includes/autosprite.inc create mode 100644 bin/base/decls/renderprogs/includes/deferredlighting.inc create mode 100644 bin/base/decls/renderprogs/includes/gore.inc create mode 100644 bin/base/decls/renderprogs/includes/interaction.inc create mode 100644 bin/base/decls/renderprogs/includes/luminance.inc create mode 100644 bin/base/decls/renderprogs/includes/shadow.inc create mode 100644 bin/base/decls/renderprogs/includes/unique.inc create mode 100644 bin/base/decls/renderprogs/includes/vertex.inc create mode 100644 bin/base/decls/renderprogs/includes/vmtr.inc create mode 100644 bin/base/decls/renderprogs/includes/wrinklemap.inc create mode 100644 bin/base/decls/renderprogs/particle_fp.inc create mode 100644 bin/base/decls/renderprogs/particle_vp.inc create mode 100644 bin/base/decls/renderprogs/skinning.inc create mode 100644 bin/base/decls/renderprogs/skinning_normals.inc create mode 100644 bin/base/decls/renderprogs/softparticle_fp.inc create mode 100644 bin/base/decls/renderprogs/softparticle_vp.inc create mode 100644 bin/base/generated/decls/renderparm/adaptiveglareblurmap.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveglareblurstep.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveglarecolor.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveglaremap.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveglaremapalt.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveglareparms.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveglarethreshold.decl create mode 100644 bin/base/generated/decls/renderparm/adaptiveluminance.decl create mode 100644 bin/base/generated/decls/renderparm/addprogram.decl create mode 100644 bin/base/generated/decls/renderparm/allowblendedpassmerge.decl create mode 100644 bin/base/generated/decls/renderparm/allowoverlays.decl create mode 100644 bin/base/generated/decls/renderparm/alphascale.decl create mode 100644 bin/base/generated/decls/renderparm/altbumpcontribution.decl create mode 100644 bin/base/generated/decls/renderparm/altdiffusecontribution.decl create mode 100644 bin/base/generated/decls/renderparm/altmaterial.decl create mode 100644 bin/base/generated/decls/renderparm/altscale.decl create mode 100644 bin/base/generated/decls/renderparm/ambientenvmap.decl create mode 100644 bin/base/generated/decls/renderparm/ambientlightcolor.decl create mode 100644 bin/base/generated/decls/renderparm/ambientprogram.decl create mode 100644 bin/base/generated/decls/renderparm/arealight.decl create mode 100644 bin/base/generated/decls/renderparm/autospritetype.decl create mode 100644 bin/base/generated/decls/renderparm/bakedvieworigin.decl create mode 100644 bin/base/generated/decls/renderparm/binkcb.decl create mode 100644 bin/base/generated/decls/renderparm/binkcr.decl create mode 100644 bin/base/generated/decls/renderparm/binky.decl create mode 100644 bin/base/generated/decls/renderparm/blendprogram.decl create mode 100644 bin/base/generated/decls/renderparm/brightnessscale.decl create mode 100644 bin/base/generated/decls/renderparm/buildareaoriginindex.decl create mode 100644 bin/base/generated/decls/renderparm/bumpmap.decl create mode 100644 bin/base/generated/decls/renderparm/cbblacklevel.decl create mode 100644 bin/base/generated/decls/renderparm/cbbrightness.decl create mode 100644 bin/base/generated/decls/renderparm/cbcolorburn.decl create mode 100644 bin/base/generated/decls/renderparm/cbcolordodge.decl create mode 100644 bin/base/generated/decls/renderparm/cbcolormultiply.decl create mode 100644 bin/base/generated/decls/renderparm/cbcolorscreen.decl create mode 100644 bin/base/generated/decls/renderparm/cbconversionlut.decl create mode 100644 bin/base/generated/decls/renderparm/cbdesaturate.decl create mode 100644 bin/base/generated/decls/renderparm/cbhighlight.decl create mode 100644 bin/base/generated/decls/renderparm/cbmidtone.decl create mode 100644 bin/base/generated/decls/renderparm/cbshadow.decl create mode 100644 bin/base/generated/decls/renderparm/channellight0.decl create mode 100644 bin/base/generated/decls/renderparm/channellight1.decl create mode 100644 bin/base/generated/decls/renderparm/channellight2.decl create mode 100644 bin/base/generated/decls/renderparm/channellight3.decl create mode 100644 bin/base/generated/decls/renderparm/channellight4.decl create mode 100644 bin/base/generated/decls/renderparm/channellight5.decl create mode 100644 bin/base/generated/decls/renderparm/cloudscale.decl create mode 100644 bin/base/generated/decls/renderparm/cloudscale1.decl create mode 100644 bin/base/generated/decls/renderparm/color.decl create mode 100644 bin/base/generated/decls/renderparm/contentflags.decl create mode 100644 bin/base/generated/decls/renderparm/contents_aasclusterportal.decl create mode 100644 bin/base/generated/decls/renderparm/contents_aasfly.decl create mode 100644 bin/base/generated/decls/renderparm/contents_aasobstacle.decl create mode 100644 bin/base/generated/decls/renderparm/contents_aassolid.decl create mode 100644 bin/base/generated/decls/renderparm/contents_aaswalkablewall.decl create mode 100644 bin/base/generated/decls/renderparm/contents_ai.decl create mode 100644 bin/base/generated/decls/renderparm/contents_aiaware.decl create mode 100644 bin/base/generated/decls/renderparm/contents_breakable.decl create mode 100644 bin/base/generated/decls/renderparm/contents_contextualcover_clip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_corpse.decl create mode 100644 bin/base/generated/decls/renderparm/contents_ikclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_monsterclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_monstercoverclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_moveableclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_nocover.decl create mode 100644 bin/base/generated/decls/renderparm/contents_nonsolid.decl create mode 100644 bin/base/generated/decls/renderparm/contents_obstacle.decl create mode 100644 bin/base/generated/decls/renderparm/contents_opaque.decl create mode 100644 bin/base/generated/decls/renderparm/contents_player.decl create mode 100644 bin/base/generated/decls/renderparm/contents_playerclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_playercoverclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_playerfocus.decl create mode 100644 bin/base/generated/decls/renderparm/contents_projectile.decl create mode 100644 bin/base/generated/decls/renderparm/contents_shotclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_solid.decl create mode 100644 bin/base/generated/decls/renderparm/contents_tickclip.decl create mode 100644 bin/base/generated/decls/renderparm/contents_trigger.decl create mode 100644 bin/base/generated/decls/renderparm/contents_water.decl create mode 100644 bin/base/generated/decls/renderparm/coverage.decl create mode 100644 bin/base/generated/decls/renderparm/covermap.decl create mode 100644 bin/base/generated/decls/renderparm/cpumap.decl create mode 100644 bin/base/generated/decls/renderparm/deathfadeopacity.decl create mode 100644 bin/base/generated/decls/renderparm/decalpos.decl create mode 100644 bin/base/generated/decls/renderparm/decalpostolocalboxspacew.decl create mode 100644 bin/base/generated/decls/renderparm/decalpostolocalboxspacex.decl create mode 100644 bin/base/generated/decls/renderparm/decalpostolocalboxspacey.decl create mode 100644 bin/base/generated/decls/renderparm/decalpostolocalboxspacez.decl create mode 100644 bin/base/generated/decls/renderparm/decalprojtype.decl create mode 100644 bin/base/generated/decls/renderparm/depthbasedcolorgrading.decl create mode 100644 bin/base/generated/decls/renderparm/depthfillfadeprogram.decl create mode 100644 bin/base/generated/decls/renderparm/depthfillprogram.decl create mode 100644 bin/base/generated/decls/renderparm/depthoffield.decl create mode 100644 bin/base/generated/decls/renderparm/depthoffield2.decl create mode 100644 bin/base/generated/decls/renderparm/diffusemap.decl create mode 100644 bin/base/generated/decls/renderparm/dimshadowclipplane.decl create mode 100644 bin/base/generated/decls/renderparm/dimshadowdepthmap.decl create mode 100644 bin/base/generated/decls/renderparm/dimshadowextrude.decl create mode 100644 bin/base/generated/decls/renderparm/dimshadowfade.decl create mode 100644 bin/base/generated/decls/renderparm/discrete.decl create mode 100644 bin/base/generated/decls/renderparm/distortionfade.decl create mode 100644 bin/base/generated/decls/renderparm/distortionlastframemap.decl create mode 100644 bin/base/generated/decls/renderparm/distortionmap.decl create mode 100644 bin/base/generated/decls/renderparm/distortionscale.decl create mode 100644 bin/base/generated/decls/renderparm/dither256map.decl create mode 100644 bin/base/generated/decls/renderparm/diversity.decl create mode 100644 bin/base/generated/decls/renderparm/doublevision.decl create mode 100644 bin/base/generated/decls/renderparm/dynamicenvmap.decl create mode 100644 bin/base/generated/decls/renderparm/editoralpha.decl create mode 100644 bin/base/generated/decls/renderparm/editorcolor.decl create mode 100644 bin/base/generated/decls/renderparm/editordraw.decl create mode 100644 bin/base/generated/decls/renderparm/editormap.decl create mode 100644 bin/base/generated/decls/renderparm/envblendmip.decl create mode 100644 bin/base/generated/decls/renderparm/envblendtime.decl create mode 100644 bin/base/generated/decls/renderparm/envgrazingscale.decl create mode 100644 bin/base/generated/decls/renderparm/envmap.decl create mode 100644 bin/base/generated/decls/renderparm/envmaprotation.decl create mode 100644 bin/base/generated/decls/renderparm/envrmatrix.decl create mode 100644 bin/base/generated/decls/renderparm/envscale.decl create mode 100644 bin/base/generated/decls/renderparm/envsmatrix.decl create mode 100644 bin/base/generated/decls/renderparm/envtmatrix.decl create mode 100644 bin/base/generated/decls/renderparm/exposure.decl create mode 100644 bin/base/generated/decls/renderparm/eyehighlightpowlevel.decl create mode 100644 bin/base/generated/decls/renderparm/fademap.decl create mode 100644 bin/base/generated/decls/renderparm/fadeperturbprogram.decl create mode 100644 bin/base/generated/decls/renderparm/feedbackcolormap.decl create mode 100644 bin/base/generated/decls/renderparm/flareoriginndc.decl create mode 100644 bin/base/generated/decls/renderparm/fogcolor.decl create mode 100644 bin/base/generated/decls/renderparm/fogend.decl create mode 100644 bin/base/generated/decls/renderparm/fogscale.decl create mode 100644 bin/base/generated/decls/renderparm/fogstart.decl create mode 100644 bin/base/generated/decls/renderparm/forceopaque.decl create mode 100644 bin/base/generated/decls/renderparm/framenumber.decl create mode 100644 bin/base/generated/decls/renderparm/glaremap.decl create mode 100644 bin/base/generated/decls/renderparm/glaremax.decl create mode 100644 bin/base/generated/decls/renderparm/glareprescale.decl create mode 100644 bin/base/generated/decls/renderparm/glarescale.decl create mode 100644 bin/base/generated/decls/renderparm/glarestep.decl create mode 100644 bin/base/generated/decls/renderparm/globalblur.decl create mode 100644 bin/base/generated/decls/renderparm/globallightorigin.decl create mode 100644 bin/base/generated/decls/renderparm/globalshadows.decl create mode 100644 bin/base/generated/decls/renderparm/globalviewfwd.decl create mode 100644 bin/base/generated/decls/renderparm/globalviewleft.decl create mode 100644 bin/base/generated/decls/renderparm/globalvieworigin.decl create mode 100644 bin/base/generated/decls/renderparm/globalviewup.decl create mode 100644 bin/base/generated/decls/renderparm/godraycolor.decl create mode 100644 bin/base/generated/decls/renderparm/godrayquadscalebias.decl create mode 100644 bin/base/generated/decls/renderparm/godraysourcescalebias.decl create mode 100644 bin/base/generated/decls/renderparm/godrayssourcetexture.decl create mode 100644 bin/base/generated/decls/renderparm/grainamount.decl create mode 100644 bin/base/generated/decls/renderparm/grainhz.decl create mode 100644 bin/base/generated/decls/renderparm/grainlevelsmax.decl create mode 100644 bin/base/generated/decls/renderparm/grainlevelsmin.decl create mode 100644 bin/base/generated/decls/renderparm/grainmap.decl create mode 100644 bin/base/generated/decls/renderparm/grazingdiffusecolor.decl create mode 100644 bin/base/generated/decls/renderparm/grazingspecularcolor.decl create mode 100644 bin/base/generated/decls/renderparm/gunmuzzleflash.decl create mode 100644 bin/base/generated/decls/renderparm/gunmuzzleflashcolor.decl create mode 100644 bin/base/generated/decls/renderparm/highlightcolor.decl create mode 100644 bin/base/generated/decls/renderparm/hqspecularnormal.decl create mode 100644 bin/base/generated/decls/renderparm/if.decl create mode 100644 bin/base/generated/decls/renderparm/interactionprogram.decl create mode 100644 bin/base/generated/decls/renderparm/inversemodelmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/inversemodelmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/inversemodelmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/inversemodelmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/inversemvpmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/inversemvpmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/inversemvpmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/inversemvpmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/inverseprojectionmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/inverseprojectionmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/inverseprojectionmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/inverseprojectionmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/inverseviewmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/inverseviewmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/inverseviewmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/inverseviewmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/landdefinitionfile.decl create mode 100644 bin/base/generated/decls/renderparm/landdiffuseonly.decl create mode 100644 bin/base/generated/decls/renderparm/landdimensions.decl create mode 100644 bin/base/generated/decls/renderparm/landgenmodel.decl create mode 100644 bin/base/generated/decls/renderparm/landindexcolor.decl create mode 100644 bin/base/generated/decls/renderparm/landlayoutversion.decl create mode 100644 bin/base/generated/decls/renderparm/landmappingmodel.decl create mode 100644 bin/base/generated/decls/renderparm/landmodelfile.decl create mode 100644 bin/base/generated/decls/renderparm/landpagefile.decl create mode 100644 bin/base/generated/decls/renderparm/landshadowmodel.decl create mode 100644 bin/base/generated/decls/renderparm/landstampblendmode.decl create mode 100644 bin/base/generated/decls/renderparm/landstampblendmodenone.decl create mode 100644 bin/base/generated/decls/renderparm/layoutdownscale.decl create mode 100644 bin/base/generated/decls/renderparm/lightcolor.decl create mode 100644 bin/base/generated/decls/renderparm/lightdepthcomparemap.decl create mode 100644 bin/base/generated/decls/renderparm/lightdepthmap.decl create mode 100644 bin/base/generated/decls/renderparm/lightfade.decl create mode 100644 bin/base/generated/decls/renderparm/lightfalloffmap.decl create mode 100644 bin/base/generated/decls/renderparm/lightingmodel.decl create mode 100644 bin/base/generated/decls/renderparm/lightoscillationamp.decl create mode 100644 bin/base/generated/decls/renderparm/lightoscillationfreq.decl create mode 100644 bin/base/generated/decls/renderparm/lightoscillationphase.decl create mode 100644 bin/base/generated/decls/renderparm/lightprojectionq.decl create mode 100644 bin/base/generated/decls/renderparm/lightprojectionr.decl create mode 100644 bin/base/generated/decls/renderparm/lightprojections.decl create mode 100644 bin/base/generated/decls/renderparm/lightprojectiont.decl create mode 100644 bin/base/generated/decls/renderparm/lightprojectmap.decl create mode 100644 bin/base/generated/decls/renderparm/lightrotation.decl create mode 100644 bin/base/generated/decls/renderparm/lightscale.decl create mode 100644 bin/base/generated/decls/renderparm/lighttranslation.decl create mode 100644 bin/base/generated/decls/renderparm/loadingicon.decl create mode 100644 bin/base/generated/decls/renderparm/localtolightq.decl create mode 100644 bin/base/generated/decls/renderparm/localtolightr.decl create mode 100644 bin/base/generated/decls/renderparm/localtolights.decl create mode 100644 bin/base/generated/decls/renderparm/localtolightt.decl create mode 100644 bin/base/generated/decls/renderparm/localviewleft.decl create mode 100644 bin/base/generated/decls/renderparm/localvieworigin.decl create mode 100644 bin/base/generated/decls/renderparm/localviewup.decl create mode 100644 bin/base/generated/decls/renderparm/luminositymap.decl create mode 100644 bin/base/generated/decls/renderparm/luminositymapalt.decl create mode 100644 bin/base/generated/decls/renderparm/materialcoverage.decl create mode 100644 bin/base/generated/decls/renderparm/megatextureaddmap.decl create mode 100644 bin/base/generated/decls/renderparm/megatexturemorph.decl create mode 100644 bin/base/generated/decls/renderparm/modelangles.decl create mode 100644 bin/base/generated/decls/renderparm/modelfade.decl create mode 100644 bin/base/generated/decls/renderparm/modelfadeextrude.decl create mode 100644 bin/base/generated/decls/renderparm/modelmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/modelmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/modelmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/modelmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/muzzleflashoffset.decl create mode 100644 bin/base/generated/decls/renderparm/mvpmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/mvpmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/mvpmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/mvpmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/newambientscale.decl create mode 100644 bin/base/generated/decls/renderparm/newdiffusescale.decl create mode 100644 bin/base/generated/decls/renderparm/newpowerscale.decl create mode 100644 bin/base/generated/decls/renderparm/newspecularscale.decl create mode 100644 bin/base/generated/decls/renderparm/nofragment.decl create mode 100644 bin/base/generated/decls/renderparm/noselfshadow.decl create mode 100644 bin/base/generated/decls/renderparm/noshadows.decl create mode 100644 bin/base/generated/decls/renderparm/overlayopacity.decl create mode 100644 bin/base/generated/decls/renderparm/pagetablemap.decl create mode 100644 bin/base/generated/decls/renderparm/parallellightslicescale.decl create mode 100644 bin/base/generated/decls/renderparm/particlefade.decl create mode 100644 bin/base/generated/decls/renderparm/particlelod.decl create mode 100644 bin/base/generated/decls/renderparm/particlescale.decl create mode 100644 bin/base/generated/decls/renderparm/particlestscalebias.decl create mode 100644 bin/base/generated/decls/renderparm/particlevel.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquediffuseonly2filterparms.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquediffuseonlyfilterparms.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquediffuseonlymappingsmap0.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquediffuseonlypagesmap1.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquefilterparms.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquemappingsmap0.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquepagesmap0.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquepagesmap1.decl create mode 100644 bin/base/generated/decls/renderparm/physicaluniquepagesmap2.decl create mode 100644 bin/base/generated/decls/renderparm/physicalvmtrfilterparms.decl create mode 100644 bin/base/generated/decls/renderparm/physicalvmtrmappingsmap0.decl create mode 100644 bin/base/generated/decls/renderparm/physicalvmtrpagesmap0.decl create mode 100644 bin/base/generated/decls/renderparm/physicalvmtrpagesmap1.decl create mode 100644 bin/base/generated/decls/renderparm/physicalvmtrpagesmap2.decl create mode 100644 bin/base/generated/decls/renderparm/polygonoffset.decl create mode 100644 bin/base/generated/decls/renderparm/positiontofeedback.decl create mode 100644 bin/base/generated/decls/renderparm/positiontoviewtexture.decl create mode 100644 bin/base/generated/decls/renderparm/postdistortionmap.decl create mode 100644 bin/base/generated/decls/renderparm/postgrainparms.decl create mode 100644 bin/base/generated/decls/renderparm/postgrainscalebias.decl create mode 100644 bin/base/generated/decls/renderparm/powermap.decl create mode 100644 bin/base/generated/decls/renderparm/powermip.decl create mode 100644 bin/base/generated/decls/renderparm/primelightcolor.decl create mode 100644 bin/base/generated/decls/renderparm/primelightdir.decl create mode 100644 bin/base/generated/decls/renderparm/primelightmin.decl create mode 100644 bin/base/generated/decls/renderparm/projectionmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/projectionmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/projectionmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/projectionmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/qer_editorimage.decl create mode 100644 bin/base/generated/decls/renderparm/qmatrix.decl create mode 100644 bin/base/generated/decls/renderparm/radialblurcenter.decl create mode 100644 bin/base/generated/decls/renderparm/radialblurenable.decl create mode 100644 bin/base/generated/decls/renderparm/radialblurmaxscale.decl create mode 100644 bin/base/generated/decls/renderparm/radialblurscale.decl create mode 100644 bin/base/generated/decls/renderparm/radiositypreviewmap.decl create mode 100644 bin/base/generated/decls/renderparm/radiosityprevieww.decl create mode 100644 bin/base/generated/decls/renderparm/radiositypreviewx.decl create mode 100644 bin/base/generated/decls/renderparm/radiositypreviewy.decl create mode 100644 bin/base/generated/decls/renderparm/radiositypreviewz.decl create mode 100644 bin/base/generated/decls/renderparm/renderbump.decl create mode 100644 bin/base/generated/decls/renderparm/renderpositiontoviewtexture.decl create mode 100644 bin/base/generated/decls/renderparm/rmatrix.decl create mode 100644 bin/base/generated/decls/renderparm/screenoverlay.decl create mode 100644 bin/base/generated/decls/renderparm/screenscale.decl create mode 100644 bin/base/generated/decls/renderparm/screensizeratio.decl create mode 100644 bin/base/generated/decls/renderparm/select.decl create mode 100644 bin/base/generated/decls/renderparm/shadowbufferresolution.decl create mode 100644 bin/base/generated/decls/renderparm/shadowfade.decl create mode 100644 bin/base/generated/decls/renderparm/shadowprogram.decl create mode 100644 bin/base/generated/decls/renderparm/shadowprojectionq.decl create mode 100644 bin/base/generated/decls/renderparm/shadowprojectionr.decl create mode 100644 bin/base/generated/decls/renderparm/shadowprojections.decl create mode 100644 bin/base/generated/decls/renderparm/shadowprojectiont.decl create mode 100644 bin/base/generated/decls/renderparm/sharpbakedambient.decl create mode 100644 bin/base/generated/decls/renderparm/showdepthoffield.decl create mode 100644 bin/base/generated/decls/renderparm/showgrainlevels.decl create mode 100644 bin/base/generated/decls/renderparm/showoverlay.decl create mode 100644 bin/base/generated/decls/renderparm/skipsurfaceinfo.decl create mode 100644 bin/base/generated/decls/renderparm/skyfogcutoffheight.decl create mode 100644 bin/base/generated/decls/renderparm/skyglareprescale.decl create mode 100644 bin/base/generated/decls/renderparm/smatrix.decl create mode 100644 bin/base/generated/decls/renderparm/smatrix1.decl create mode 100644 bin/base/generated/decls/renderparm/sobelopacity.decl create mode 100644 bin/base/generated/decls/renderparm/sobelthreshold.decl create mode 100644 bin/base/generated/decls/renderparm/sortbackground.decl create mode 100644 bin/base/generated/decls/renderparm/sortcoverage.decl create mode 100644 bin/base/generated/decls/renderparm/sortdecal.decl create mode 100644 bin/base/generated/decls/renderparm/sortemit.decl create mode 100644 bin/base/generated/decls/renderparm/sortemitonly.decl create mode 100644 bin/base/generated/decls/renderparm/sortlight.decl create mode 100644 bin/base/generated/decls/renderparm/sortperturber.decl create mode 100644 bin/base/generated/decls/renderparm/sortskybox.decl create mode 100644 bin/base/generated/decls/renderparm/sorttrans.decl create mode 100644 bin/base/generated/decls/renderparm/sorttranssort.decl create mode 100644 bin/base/generated/decls/renderparm/sortwater.decl create mode 100644 bin/base/generated/decls/renderparm/spare1map.decl create mode 100644 bin/base/generated/decls/renderparm/spare2map.decl create mode 100644 bin/base/generated/decls/renderparm/sparebumpmap.decl create mode 100644 bin/base/generated/decls/renderparm/sparebumpmap1.decl create mode 100644 bin/base/generated/decls/renderparm/sparebumpmap2.decl create mode 100644 bin/base/generated/decls/renderparm/sparediffusemap.decl create mode 100644 bin/base/generated/decls/renderparm/sparediffusemap2.decl create mode 100644 bin/base/generated/decls/renderparm/sparespecularmap.decl create mode 100644 bin/base/generated/decls/renderparm/sparespecularmap2.decl create mode 100644 bin/base/generated/decls/renderparm/specularmap.decl create mode 100644 bin/base/generated/decls/renderparm/stageprogram.decl create mode 100644 bin/base/generated/decls/renderparm/stagesort.decl create mode 100644 bin/base/generated/decls/renderparm/stampcovers.decl create mode 100644 bin/base/generated/decls/renderparm/stampscales.decl create mode 100644 bin/base/generated/decls/renderparm/staticreflectionstrength.decl create mode 100644 bin/base/generated/decls/renderparm/staticreflectiontransmission.decl create mode 100644 bin/base/generated/decls/renderparm/staticspecularscale.decl create mode 100644 bin/base/generated/decls/renderparm/staticspecularvector.decl create mode 100644 bin/base/generated/decls/renderparm/surf_collision.decl create mode 100644 bin/base/generated/decls/renderparm/surf_ladder.decl create mode 100644 bin/base/generated/decls/renderparm/surf_ladder_top.decl create mode 100644 bin/base/generated/decls/renderparm/surf_noareas.decl create mode 100644 bin/base/generated/decls/renderparm/surf_nodamage.decl create mode 100644 bin/base/generated/decls/renderparm/surf_noimpact.decl create mode 100644 bin/base/generated/decls/renderparm/surf_noshoot.decl create mode 100644 bin/base/generated/decls/renderparm/surf_nosteps.decl create mode 100644 bin/base/generated/decls/renderparm/surf_nullnormal.decl create mode 100644 bin/base/generated/decls/renderparm/surf_occlusiontest.decl create mode 100644 bin/base/generated/decls/renderparm/surf_shadowcaster.decl create mode 100644 bin/base/generated/decls/renderparm/surf_slick.decl create mode 100644 bin/base/generated/decls/renderparm/surf_stairs.decl create mode 100644 bin/base/generated/decls/renderparm/surfaceflags.decl create mode 100644 bin/base/generated/decls/renderparm/surfaceradiosityscale.decl create mode 100644 bin/base/generated/decls/renderparm/surfacetype.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_armor.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_ash.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_asphalt.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_bloodpool.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_cardboard.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_concrete.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_dirt.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_fabric.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_flesh.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_fleshdarkangel.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_fleshmutant.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_fleshplayer.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_foliage.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_glass.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_hollowmetal.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_impnest.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_linoleum.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_liquid.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_metal.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_none.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_plastic.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_playerapcmetal.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_ricketymetal.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_ricketywood.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_rock.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_rubber.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_sheetmetal.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_sludge.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_steampipe.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_stone.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_thickpadding.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_waterpipe.decl create mode 100644 bin/base/generated/decls/renderparm/surftype_wood.decl create mode 100644 bin/base/generated/decls/renderparm/temp1.decl create mode 100644 bin/base/generated/decls/renderparm/temp10.decl create mode 100644 bin/base/generated/decls/renderparm/temp11.decl create mode 100644 bin/base/generated/decls/renderparm/temp12.decl create mode 100644 bin/base/generated/decls/renderparm/temp13.decl create mode 100644 bin/base/generated/decls/renderparm/temp14.decl create mode 100644 bin/base/generated/decls/renderparm/temp15.decl create mode 100644 bin/base/generated/decls/renderparm/temp16.decl create mode 100644 bin/base/generated/decls/renderparm/temp17.decl create mode 100644 bin/base/generated/decls/renderparm/temp18.decl create mode 100644 bin/base/generated/decls/renderparm/temp19.decl create mode 100644 bin/base/generated/decls/renderparm/temp2.decl create mode 100644 bin/base/generated/decls/renderparm/temp20.decl create mode 100644 bin/base/generated/decls/renderparm/temp21.decl create mode 100644 bin/base/generated/decls/renderparm/temp22.decl create mode 100644 bin/base/generated/decls/renderparm/temp23.decl create mode 100644 bin/base/generated/decls/renderparm/temp24.decl create mode 100644 bin/base/generated/decls/renderparm/temp25.decl create mode 100644 bin/base/generated/decls/renderparm/temp26.decl create mode 100644 bin/base/generated/decls/renderparm/temp27.decl create mode 100644 bin/base/generated/decls/renderparm/temp28.decl create mode 100644 bin/base/generated/decls/renderparm/temp29.decl create mode 100644 bin/base/generated/decls/renderparm/temp3.decl create mode 100644 bin/base/generated/decls/renderparm/temp30.decl create mode 100644 bin/base/generated/decls/renderparm/temp31.decl create mode 100644 bin/base/generated/decls/renderparm/temp32.decl create mode 100644 bin/base/generated/decls/renderparm/temp4.decl create mode 100644 bin/base/generated/decls/renderparm/temp5.decl create mode 100644 bin/base/generated/decls/renderparm/temp6.decl create mode 100644 bin/base/generated/decls/renderparm/temp7.decl create mode 100644 bin/base/generated/decls/renderparm/temp8.decl create mode 100644 bin/base/generated/decls/renderparm/temp9.decl create mode 100644 bin/base/generated/decls/renderparm/testenvlod.decl create mode 100644 bin/base/generated/decls/renderparm/testimagealpha.decl create mode 100644 bin/base/generated/decls/renderparm/testimageflip.decl create mode 100644 bin/base/generated/decls/renderparm/testimagelod.decl create mode 100644 bin/base/generated/decls/renderparm/texturemap.decl create mode 100644 bin/base/generated/decls/renderparm/texturemapmultisample.decl create mode 100644 bin/base/generated/decls/renderparm/texturemapshadow.decl create mode 100644 bin/base/generated/decls/renderparm/time.decl create mode 100644 bin/base/generated/decls/renderparm/timeoffset.decl create mode 100644 bin/base/generated/decls/renderparm/timescale.decl create mode 100644 bin/base/generated/decls/renderparm/timestop.decl create mode 100644 bin/base/generated/decls/renderparm/tmatrix.decl create mode 100644 bin/base/generated/decls/renderparm/tmatrix1.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_manifoldhint.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_nocsg.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_pvsclip.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_soundclip.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_soundcliptrans.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_sounddoor.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflag_soundportal.decl create mode 100644 bin/base/generated/decls/renderparm/toolsflags.decl create mode 100644 bin/base/generated/decls/renderparm/transatlasmap.decl create mode 100644 bin/base/generated/decls/renderparm/transatlasscalebias.decl create mode 100644 bin/base/generated/decls/renderparm/transatlasscalebiasinv.decl create mode 100644 bin/base/generated/decls/renderparm/transmap.decl create mode 100644 bin/base/generated/decls/renderparm/transmap1.decl create mode 100644 bin/base/generated/decls/renderparm/transmap2.decl create mode 100644 bin/base/generated/decls/renderparm/transsortatlasdim.decl create mode 100644 bin/base/generated/decls/renderparm/transsortmap.decl create mode 100644 bin/base/generated/decls/renderparm/useclipspheres.decl create mode 100644 bin/base/generated/decls/renderparm/userenvmap.decl create mode 100644 bin/base/generated/decls/renderparm/useskinblending.decl create mode 100644 bin/base/generated/decls/renderparm/usevirtualmapping.decl create mode 100644 bin/base/generated/decls/renderparm/vertexmorphscale.decl create mode 100644 bin/base/generated/decls/renderparm/vertexstscalebias.decl create mode 100644 bin/base/generated/decls/renderparm/vertexxyzbias.decl create mode 100644 bin/base/generated/decls/renderparm/vertexxyzscale.decl create mode 100644 bin/base/generated/decls/renderparm/viewcolorlastframemap.decl create mode 100644 bin/base/generated/decls/renderparm/viewcolormap.decl create mode 100644 bin/base/generated/decls/renderparm/viewdepthmap.decl create mode 100644 bin/base/generated/decls/renderparm/viewdepthstencilmap.decl create mode 100644 bin/base/generated/decls/renderparm/viewdiffusemap.decl create mode 100644 bin/base/generated/decls/renderparm/viewgraze.decl create mode 100644 bin/base/generated/decls/renderparm/viewmatrixw.decl create mode 100644 bin/base/generated/decls/renderparm/viewmatrixx.decl create mode 100644 bin/base/generated/decls/renderparm/viewmatrixy.decl create mode 100644 bin/base/generated/decls/renderparm/viewmatrixz.decl create mode 100644 bin/base/generated/decls/renderparm/viewnormalmap.decl create mode 100644 bin/base/generated/decls/renderparm/viewrandom.decl create mode 100644 bin/base/generated/decls/renderparm/virtualmapping.decl create mode 100644 bin/base/generated/decls/renderparm/virtualpageprogram.decl create mode 100644 bin/base/generated/decls/renderparm/virtualtexturefeedbackfloat.decl create mode 100644 bin/base/generated/decls/renderparm/virtualtransmap.decl create mode 100644 bin/base/generated/decls/renderparm/vmtrpagetablemap.decl create mode 100644 bin/base/generated/decls/renderparm/waterheight.decl create mode 100644 bin/base/generated/decls/renderparm/wind.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostodimshadowblurq.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostodimshadowblurr.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostodimshadowblurs.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostodimshadowblurt.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoglobalw.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoglobalx.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoglobaly.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoglobalz.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedshadowq.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedshadowr.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedshadows.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedshadowt.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedtexq.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedtexr.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedtexs.decl create mode 100644 bin/base/generated/decls/renderparm/windowpostoprojectedtext.decl create mode 100644 bin/base/generated/decls/renderparm/wound1dirx.decl create mode 100644 bin/base/generated/decls/renderparm/wound1diry.decl create mode 100644 bin/base/generated/decls/renderparm/wound1dirz.decl create mode 100644 bin/base/generated/decls/renderparm/wound1pos.decl create mode 100644 bin/base/generated/decls/renderparm/wound1size.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posa.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posb.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posc.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posd.decl create mode 100644 bin/base/generated/decls/renderparm/wound3pose.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posf.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posg.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posh.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posi.decl create mode 100644 bin/base/generated/decls/renderparm/wound3posj.decl create mode 100644 bin/base/generated/decls/renderparm/woundellipsoidx.decl create mode 100644 bin/base/generated/decls/renderparm/woundellipsoidy.decl create mode 100644 bin/base/generated/decls/renderparm/woundellipsoidz.decl create mode 100644 bin/base/generated/decls/renderparm/woundtextile.decl create mode 100644 bin/base/generated/decls/renderparm/woundtexture.decl create mode 100644 bin/base/generated/decls/renderparm/wrinklefactor0.decl create mode 100644 bin/base/generated/decls/renderparm/wrinklefactor1.decl create mode 100644 bin/base/generated/decls/renderparm/wrinklefactor2.decl create mode 100644 bin/base/generated/decls/renderparm/wrinklefactor3.decl create mode 100644 bin/base/generated/decls/renderparm/wrinklescale.decl create mode 100644 bin/base/generated/decls/renderprog/adaptiveglaregauss15.decl create mode 100644 bin/base/generated/decls/renderprog/autosprite1coloronly.decl create mode 100644 bin/base/generated/decls/renderprog/autosprite2coloronly.decl create mode 100644 bin/base/generated/decls/renderprog/basicadd.decl create mode 100644 bin/base/generated/decls/renderprog/basicadddepthtest.decl create mode 100644 bin/base/generated/decls/renderprog/basicblend.decl create mode 100644 bin/base/generated/decls/renderprog/basicfilter.decl create mode 100644 bin/base/generated/decls/renderprog/basicfiltertwoside.decl create mode 100644 bin/base/generated/decls/renderprog/basicmorphadd.decl create mode 100644 bin/base/generated/decls/renderprog/basicsoftadditiveblend.decl create mode 100644 bin/base/generated/decls/renderprog/basicsoftblend.decl create mode 100644 bin/base/generated/decls/renderprog/basicsoftinvertfilter.decl create mode 100644 bin/base/generated/decls/renderprog/binkyuv.decl create mode 100644 bin/base/generated/decls/renderprog/blendlight.decl create mode 100644 bin/base/generated/decls/renderprog/blendlightadd.decl create mode 100644 bin/base/generated/decls/renderprog/blendlightdebugdraw.decl create mode 100644 bin/base/generated/decls/renderprog/blendlightinvfilter.decl create mode 100644 bin/base/generated/decls/renderprog/blendlightspotshadow.decl create mode 100644 bin/base/generated/decls/renderprog/blendnodraw.decl create mode 100644 bin/base/generated/decls/renderprog/bloomthreshold.decl create mode 100644 bin/base/generated/decls/renderprog/brokenwindshield.decl create mode 100644 bin/base/generated/decls/renderprog/brokenwindshieldspecular.decl create mode 100644 bin/base/generated/decls/renderprog/buildgodrays.decl create mode 100644 bin/base/generated/decls/renderprog/characterdecalvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/charactervmtr.decl create mode 100644 bin/base/generated/decls/renderprog/clothvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/coloronly.decl create mode 100644 bin/base/generated/decls/renderprog/colorparmonly.decl create mode 100644 bin/base/generated/decls/renderprog/cubeimageonly.decl create mode 100644 bin/base/generated/decls/renderprog/cutdepthonly.decl create mode 100644 bin/base/generated/decls/renderprog/cutterflareadditiveblend.decl create mode 100644 bin/base/generated/decls/renderprog/cutterflareblend.decl create mode 100644 bin/base/generated/decls/renderprog/cutuniquebumptrans.decl create mode 100644 bin/base/generated/decls/renderprog/decalblend.decl create mode 100644 bin/base/generated/decls/renderprog/decalblood.decl create mode 100644 bin/base/generated/decls/renderprog/decalfilter.decl create mode 100644 bin/base/generated/decls/renderprog/decalquadadd.decl create mode 100644 bin/base/generated/decls/renderprog/decalquadblend.decl create mode 100644 bin/base/generated/decls/renderprog/decalreplace.decl create mode 100644 bin/base/generated/decls/renderprog/deferredparallellight.decl create mode 100644 bin/base/generated/decls/renderprog/deferredpointlight.decl create mode 100644 bin/base/generated/decls/renderprog/deferredspotlight.decl create mode 100644 bin/base/generated/decls/renderprog/depthonly.decl create mode 100644 bin/base/generated/decls/renderprog/detail.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowcreate.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowcreatealpha.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowcreatewound.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowdebugdraw.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowdraw.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowdrawhighquality.decl create mode 100644 bin/base/generated/decls/renderprog/dimshadowstencil.decl create mode 100644 bin/base/generated/decls/renderprog/drawgodray.decl create mode 100644 bin/base/generated/decls/renderprog/editordraw.decl create mode 100644 bin/base/generated/decls/renderprog/editorfeedbackvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/empty.decl create mode 100644 bin/base/generated/decls/renderprog/environment.decl create mode 100644 bin/base/generated/decls/renderprog/environmentadd.decl create mode 100644 bin/base/generated/decls/renderprog/environmentblend.decl create mode 100644 bin/base/generated/decls/renderprog/environmentmodulateadd.decl create mode 100644 bin/base/generated/decls/renderprog/environmentsinglemodulateadd.decl create mode 100644 bin/base/generated/decls/renderprog/eyehighquality.decl create mode 100644 bin/base/generated/decls/renderprog/eyehighqualitydiffuse.decl create mode 100644 bin/base/generated/decls/renderprog/eyehighqualityspecular.decl create mode 100644 bin/base/generated/decls/renderprog/eyelowquality.decl create mode 100644 bin/base/generated/decls/renderprog/fadingdecaladdtwosidedexp.decl create mode 100644 bin/base/generated/decls/renderprog/feedbackdownsample.decl create mode 100644 bin/base/generated/decls/renderprog/feedbackresolve.decl create mode 100644 bin/base/generated/decls/renderprog/flarenodraw.decl create mode 100644 bin/base/generated/decls/renderprog/flatshadereal.decl create mode 100644 bin/base/generated/decls/renderprog/fontbiasandgamma.decl create mode 100644 bin/base/generated/decls/renderprog/gauss15.decl create mode 100644 bin/base/generated/decls/renderprog/glarescale.decl create mode 100644 bin/base/generated/decls/renderprog/globalfog.decl create mode 100644 bin/base/generated/decls/renderprog/guiblend.decl create mode 100644 bin/base/generated/decls/renderprog/guiblend_coacgy_premulalpha.decl create mode 100644 bin/base/generated/decls/renderprog/guicopy.decl create mode 100644 bin/base/generated/decls/renderprog/guistencildecr.decl create mode 100644 bin/base/generated/decls/renderprog/guistencilincr.decl create mode 100644 bin/base/generated/decls/renderprog/interbasic.decl create mode 100644 bin/base/generated/decls/renderprog/interbasic_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/interbasic_point.decl create mode 100644 bin/base/generated/decls/renderprog/interbasic_spot.decl create mode 100644 bin/base/generated/decls/renderprog/interbasicnovmtr.decl create mode 100644 bin/base/generated/decls/renderprog/interbasicnovmtr_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/interbasicnovmtr_point.decl create mode 100644 bin/base/generated/decls/renderprog/interbasicnovmtr_spot.decl create mode 100644 bin/base/generated/decls/renderprog/intereye.decl create mode 100644 bin/base/generated/decls/renderprog/intereye_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/intereye_point.decl create mode 100644 bin/base/generated/decls/renderprog/intereye_spot.decl create mode 100644 bin/base/generated/decls/renderprog/intergrazing.decl create mode 100644 bin/base/generated/decls/renderprog/intergrazing_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/intergrazing_point.decl create mode 100644 bin/base/generated/decls/renderprog/intergrazing_spot.decl create mode 100644 bin/base/generated/decls/renderprog/interskin.decl create mode 100644 bin/base/generated/decls/renderprog/interskin_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/interskin_point.decl create mode 100644 bin/base/generated/decls/renderprog/interskin_spot.decl create mode 100644 bin/base/generated/decls/renderprog/interskinwrinkle.decl create mode 100644 bin/base/generated/decls/renderprog/interskinwrinkle_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/interskinwrinkle_point.decl create mode 100644 bin/base/generated/decls/renderprog/interskinwrinkle_spot.decl create mode 100644 bin/base/generated/decls/renderprog/intertwoside.decl create mode 100644 bin/base/generated/decls/renderprog/intertwoside_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/intertwoside_point.decl create mode 100644 bin/base/generated/decls/renderprog/intertwoside_spot.decl create mode 100644 bin/base/generated/decls/renderprog/landunique.decl create mode 100644 bin/base/generated/decls/renderprog/landuniquebump.decl create mode 100644 bin/base/generated/decls/renderprog/landuniquebumptrans.decl create mode 100644 bin/base/generated/decls/renderprog/landuniquediffuseonly.decl create mode 100644 bin/base/generated/decls/renderprog/landuniqueshowglobalshadows.decl create mode 100644 bin/base/generated/decls/renderprog/laserbeam.decl create mode 100644 bin/base/generated/decls/renderprog/laserbeamfade.decl create mode 100644 bin/base/generated/decls/renderprog/lasercutterbatteryadd.decl create mode 100644 bin/base/generated/decls/renderprog/lasercutterincision.decl create mode 100644 bin/base/generated/decls/renderprog/lensflareadditiveblend.decl create mode 100644 bin/base/generated/decls/renderprog/lensflareblend.decl create mode 100644 bin/base/generated/decls/renderprog/luminosity.decl create mode 100644 bin/base/generated/decls/renderprog/modelfadeperturb.decl create mode 100644 bin/base/generated/decls/renderprog/occludercloth.decl create mode 100644 bin/base/generated/decls/renderprog/occludercuttransunique.decl create mode 100644 bin/base/generated/decls/renderprog/occludercuttransuniquemodelfade.decl create mode 100644 bin/base/generated/decls/renderprog/occluderdepthonly.decl create mode 100644 bin/base/generated/decls/renderprog/occluderqueryonly.decl create mode 100644 bin/base/generated/decls/renderprog/occluderqueryonlyflare.decl create mode 100644 bin/base/generated/decls/renderprog/occludershadowtransvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/occludershadowvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/occludertransunique.decl create mode 100644 bin/base/generated/decls/renderprog/occludertransvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/occluderunique.decl create mode 100644 bin/base/generated/decls/renderprog/occludervmtr.decl create mode 100644 bin/base/generated/decls/renderprog/outside.decl create mode 100644 bin/base/generated/decls/renderprog/outsidenovmtr.decl create mode 100644 bin/base/generated/decls/renderprog/outsidetrans.decl create mode 100644 bin/base/generated/decls/renderprog/outsidetwosided.decl create mode 100644 bin/base/generated/decls/renderprog/overlappeddownsample.decl create mode 100644 bin/base/generated/decls/renderprog/particleadd.decl create mode 100644 bin/base/generated/decls/renderprog/particleaddalt.decl create mode 100644 bin/base/generated/decls/renderprog/particleaddaltemissive.decl create mode 100644 bin/base/generated/decls/renderprog/particleaddemissive.decl create mode 100644 bin/base/generated/decls/renderprog/particleaddfirstpersonlaserbeam.decl create mode 100644 bin/base/generated/decls/renderprog/particleaddtwosided.decl create mode 100644 bin/base/generated/decls/renderprog/particleblend.decl create mode 100644 bin/base/generated/decls/renderprog/particleblendnoalphaexposure.decl create mode 100644 bin/base/generated/decls/renderprog/particleblendnofog.decl create mode 100644 bin/base/generated/decls/renderprog/particleblendtwosided.decl create mode 100644 bin/base/generated/decls/renderprog/particledistortion.decl create mode 100644 bin/base/generated/decls/renderprog/particleenvadd.decl create mode 100644 bin/base/generated/decls/renderprog/particleliquidblend.decl create mode 100644 bin/base/generated/decls/renderprog/particlereplace.decl create mode 100644 bin/base/generated/decls/renderprog/postprocess.decl create mode 100644 bin/base/generated/decls/renderprog/postprocesshq.decl create mode 100644 bin/base/generated/decls/renderprog/radiositypreview.decl create mode 100644 bin/base/generated/decls/renderprog/ribbondistort.decl create mode 100644 bin/base/generated/decls/renderprog/shadedcolorparmonly.decl create mode 100644 bin/base/generated/decls/renderprog/showcracks.decl create mode 100644 bin/base/generated/decls/renderprog/showdepth.decl create mode 100644 bin/base/generated/decls/renderprog/showguioverdraw.decl create mode 100644 bin/base/generated/decls/renderprog/showintensity.decl create mode 100644 bin/base/generated/decls/renderprog/showtangentspace.decl create mode 100644 bin/base/generated/decls/renderprog/showtexturespace.decl create mode 100644 bin/base/generated/decls/renderprog/simpleshade.decl create mode 100644 bin/base/generated/decls/renderprog/simpleshade_parallel.decl create mode 100644 bin/base/generated/decls/renderprog/simpleshade_point.decl create mode 100644 bin/base/generated/decls/renderprog/simpleshade_spot.decl create mode 100644 bin/base/generated/decls/renderprog/skinvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/skinvmtrwrinkle.decl create mode 100644 bin/base/generated/decls/renderprog/skydrawandscroll.decl create mode 100644 bin/base/generated/decls/renderprog/skydrawandscrolladd.decl create mode 100644 bin/base/generated/decls/renderprog/sobelfilter.decl create mode 100644 bin/base/generated/decls/renderprog/softparticleaddemissive.decl create mode 100644 bin/base/generated/decls/renderprog/softparticleadditiveblend.decl create mode 100644 bin/base/generated/decls/renderprog/softparticleblend.decl create mode 100644 bin/base/generated/decls/renderprog/softparticleblendnoalphaexposure.decl create mode 100644 bin/base/generated/decls/renderprog/softparticleblendnoalphaexposurealpha4.decl create mode 100644 bin/base/generated/decls/renderprog/testimage.decl create mode 100644 bin/base/generated/decls/renderprog/testimagemultisample.decl create mode 100644 bin/base/generated/decls/renderprog/testimageshadow.decl create mode 100644 bin/base/generated/decls/renderprog/textureonly.decl create mode 100644 bin/base/generated/decls/renderprog/transsortblend.decl create mode 100644 bin/base/generated/decls/renderprog/transsortglare.decl create mode 100644 bin/base/generated/decls/renderprog/varianceshadowmap.decl create mode 100644 bin/base/generated/decls/renderprog/vehiclevmtr.decl create mode 100644 bin/base/generated/decls/renderprog/viewcoloridentity.decl create mode 100644 bin/base/generated/decls/renderprog/vieweffectdamageoverlayfilter.decl create mode 100644 bin/base/generated/decls/renderprog/vieweffectdamageoverlayinvfilter.decl create mode 100644 bin/base/generated/decls/renderprog/vieweffectdamageoverlayscreen.decl create mode 100644 bin/base/generated/decls/renderprog/virtualguiblend.decl create mode 100644 bin/base/generated/decls/renderprog/weaponvmtr.decl create mode 100644 bin/base/generated/decls/renderprog/wireframe.decl create mode 100644 bin/base/script/debug_drawtext.script create mode 100644 bin/base/script/script_defs.script create mode 100644 bin/base/script/script_events.script create mode 100644 bin/base/script/script_main.script create mode 100644 bin/base/script/script_util.script diff --git a/bin/base/decls/renderprogs/blendlight_fragment.inc b/bin/base/decls/renderprogs/blendlight_fragment.inc new file mode 100644 index 0000000..aa3bb46 --- /dev/null +++ b/bin/base/decls/renderprogs/blendlight_fragment.inc @@ -0,0 +1,20 @@ + + // this is normalized window space, not strict openGL window space that uses integer viewport values. + float4 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + window.z = tex2Ddepth( $viewDepthMap, window.xy ); + window.w = 1.0; + + float4 texcoord; + texcoord.x = dot4( window, $windowPosToProjectedTexS ); + texcoord.y = dot4( window, $windowPosToProjectedTexT ); + texcoord.z = dot4( window, $windowPosToProjectedTexR ); + texcoord.w = dot4( window, $windowPosToProjectedTexQ ); + + texcoord.xyz /= texcoord.w; + + half4 lpm = h4tex2D( $lightProjectMap, texcoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( texcoord.z, 0.5 ) ); + + half4 color = lpm * lfm * $lightColor; + color.xyz *= $lightFade.x; diff --git a/bin/base/decls/renderprogs/decalmerged_fragment.inc b/bin/base/decls/renderprogs/decalmerged_fragment.inc new file mode 100644 index 0000000..316718c --- /dev/null +++ b/bin/base/decls/renderprogs/decalmerged_fragment.inc @@ -0,0 +1,105 @@ + + // Use the screen pos and the depth buffer value at this location to compute the local + // position within the decal box + + float3 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // fetch the window space depth value +//#ifndef PS3 + window.z = tex2Ddepth( $viewDepthMap, window.xy ); +//#else +// // This depth reconstruct fixes the decal artifacts on the ps3 +// +// half4 dt = h4tex2D( $viewDepthMap, window.xy ); +// float4 d4; +// d4.w = floor( dt.w * half( 255.0 + 1.0 / 256.0 ) + 0.1 ) / 256; +// d4.x = floor( dt.x * half( 255.0 + 1.0 / 256.0 ) + 0.1 ) / 256 / 256; +// d4.y = floor( dt.y * half( 255.0 + 1.0 / 256.0 ) + 0.1 ) / 256 / 256 / 256; +// const float depth = ( d4.w + d4.x + d4.y ); +// window.z = depth; +//#endif + + float4 wclip = float4( window.xyz, 1.0 ); + + // transform to global space + float4 worldPos; + worldPos.x = dot( wclip, $decalPosToLocalBoxSpaceX ); + worldPos.y = dot( wclip, $decalPosToLocalBoxSpaceY ); + worldPos.z = dot( wclip, $decalPosToLocalBoxSpaceZ ); + worldPos.w = dot( wclip, $decalPosToLocalBoxSpaceW ); + worldPos /= worldPos.w; + + // transform to local space of box + + float3 center = fragment.texcoord4.xyz; + + // translate to origin of box + worldPos.xyz -= center; + + // rotate + float3 tangent = normalize( fragment.texcoord1.xyz ); + float3 bitangent = normalize( fragment.texcoord2.xyz ); + float3 normal = normalize( fragment.texcoord3.xyz ); + + float3 localPos = worldPos.xyz; + localPos.x = dot3( worldPos, tangent ); + localPos.y = dot3( worldPos, bitangent ); + localPos.z = dot3( worldPos, normal ); + + // scale back down to [-1,1] + float3 sizes = fragment.color.xyz; + localPos.xyz *= sizes; + + // Use the local space pos to construct the texture coordinates for lookup into the decal texture + float3 tc = saturate( ( localPos * 0.5 ) + 0.5 ); + tc.x = 1.0 - tc.x; + + // To prevent edge filtering bleed-through, apply an 8-texel inset to the texcoords (for 3 mip levels) + float4 inset; + inset.xy = 8.0 / float2( fragment.texcoord0.y * $transSortAtlasDim.x, fragment.texcoord0.w * $transSortAtlasDim.y ); + inset.zw = _float2( 0.0 ); + + clip( min( tc.xyzx - inset, _float4( 1.0 ) - ( tc.xyzx + inset ) ) ); + + // GK: Test performing the divide by w after clip + //clip( min( extrudePos.w + extrudePos.xyzx, extrudePos.w - extrudePos.xyzx ) ); + + float edgefade = 1.0; +#if 1 //ndef PC + // spherical edge fade test + float dist = dot( localPos, localPos ); + dist = pow( dist, 4.0 ); + edgefade = 1.0 - dist; +// result.color = edgefade; +// result.color.w = 1; +// return; +#else + // TODO: Test on consoles + // Fade out decals so they don't draw on perpendicular surfaces + float3 surfNormal = normal; + float3 texelNormal = normalize( cross( ddx( worldPos.xyz ), ddy( worldPos.xyz ) ) ); + float angleDot = dot3( surfNormal, texelNormal ); + clip( angleDot - 0.7 ); +#endif + +//#if 1 + // texcoord0 has the scale/bias into the image atlas + float2 texcoord; + texcoord.x = tc.x * fragment.texcoord0.y + fragment.texcoord0.x; + texcoord.y = tc.y * fragment.texcoord0.w + fragment.texcoord0.z; + + //half fog = saturate( exp2( fragment.texcoord4.w ) ); + half fog = fragment.texcoord4.w; + + // Just want the texcoords, the rest of the shader will determin what to do with them + +// half4 final = tex2D( $transMap, texcoord ); +// final.w *= fragment.color.w; // fade based on time +// final.w *= edgefade; // apply edge fade +//#else +// half4 final; +// final.xy = tc.xy; +// final.z = 0.0; +// final.w = 1.0; +//#endif \ No newline at end of file diff --git a/bin/base/decls/renderprogs/decalquadmerged_fragment.inc b/bin/base/decls/renderprogs/decalquadmerged_fragment.inc new file mode 100644 index 0000000..6d74795 --- /dev/null +++ b/bin/base/decls/renderprogs/decalquadmerged_fragment.inc @@ -0,0 +1,18 @@ + + float2 tc = fragment.texcoord1.xy; + + // To prevent edge filtering bleed-through, apply an 8-texel inset to the texcoords (for 3 mip levels) + float2 inset; + inset.xy = 8.0 / float2( fragment.texcoord0.y * $transSortAtlasDim.x, fragment.texcoord0.w * $transSortAtlasDim.y ); + + clip( min( tc - inset, _float2( 1.0 ) - ( tc + inset ) ) ); + + // texcoord0 has the scale/bias into the image atlas + float2 texcoord; + texcoord.x = tc.x * fragment.texcoord0.y + fragment.texcoord0.x; + texcoord.y = tc.y * fragment.texcoord0.w + fragment.texcoord0.z; + + half fog = saturate( exp2( fragment.texcoord1.w ) ); + + half4 final = tex2D( $transMap, texcoord ); + final.w *= fragment.color.w; diff --git a/bin/base/decls/renderprogs/global.inc b/bin/base/decls/renderprogs/global.inc new file mode 100644 index 0000000..03a6d6c --- /dev/null +++ b/bin/base/decls/renderprogs/global.inc @@ -0,0 +1,571 @@ +/* + +Do not use render parms in this file directly or they will be included in every single +vertex and fragment program which may come at a significant performance penalty. +For convenience render parms may be used in a #define declared in this file and such +a define may then be used in the actual vertex or fragment program that needs it. + +*/ + +#if defined( XBOX ) +#define BRANCH [branch] +#define IFANY [ifAny] +#elif defined( PS3 ) +#define BRANCH [branch] +#define IFANY +#else +#define BRANCH +#define IFANY +#endif + +static float dot2( float2 a, float2 b ) { return dot( a, b ); } +static float dot3( float3 a, float3 b ) { return dot( a, b ); } +static float dot3( float3 a, float4 b ) { return dot( a, b.xyz ); } +static float dot3( float4 a, float3 b ) { return dot( a.xyz, b ); } +static float dot3( float4 a, float4 b ) { return dot( a.xyz, b.xyz ); } +static float dot4( float4 a, float4 b ) { return dot( a, b ); } +static float dot4( float2 a, float4 b ) { return dot( float4( a, 0, 1 ), b ); } + +#ifdef PC_D3D + #define sampler2D Texture2D + #define samplerCUBE TextureCube + #define samplerRECT Texture2D // FIXME: Rect support +#endif + +#ifdef GLSL + #define anyEqual( x, y ) any( equal( x, y ) ) + #define anyNotEqual( x, y ) any( notEqual( x, y ) ) + #define anyNotEqualZero( x ) max( sign( x ), 0.0 ) + #define fmod( x, y ) mod( x, y ) + #define SineCosine( x, s, c ) s = sin( x ); c = cos( x ); +#else + #define anyEqual( x, y ) any( (x) == (y) ) + #define anyNotEqual( x, y ) any( (x) != (y) ) + #define anyNotEqualZero( x ) any( (x) ) + #define greaterThanEqual( x, y ) ( (x) >= (y) ) + #define SineCosine( x, s, c ) sincos( x, s, c ); + + static half dot2( half2 a, half2 b ) { return dot( a, b ); } + static half dot3( half3 a, half3 b ) { return dot( a, b ); } + static half dot3( half3 a, half4 b ) { return dot( a, b.xyz ); } + static half dot3( half4 a, half3 b ) { return dot( a.xyz, b ); } + static half dot3( half4 a, half4 b ) { return dot( a.xyz, b.xyz ); } + static half dot4( half4 a, half4 b ) { return dot( a, b ); } + static half dot4( half2 a, half4 b ) { return dot( half4( a, 0, 1 ), b ); } + + #define sampler2DShadow sampler2D + #define samplerCUBEShadow samplerCUBE + #define samplerRECTShadow samplerRECT +#endif + +static half PAGE_SIZE = 128; +static half PAGE_BORDER = 4; +static half PAGE_SIZE_LOG2 = 7; +static half PAYLOAD_SIZE = PAGE_SIZE - 2 * PAGE_BORDER; +static half PAYLOAD_SIZE_LOG2 = 6.907; + +#ifdef XBOX + // these are here because HLSL does not implement vector constructors with a single scalar parameter + half2 _half2( float x ) { return half2( x, x ); } + half3 _half3( float x ) { return half3( x, x, x ); } + half4 _half4( float x ) { return half4( x, x, x, x ); } + float2 _float2( float x ) { return float2( x, x ); } + float3 _float3( float x ) { return float3( x, x, x ); } + float4 _float4( float x ) { return float4( x, x, x, x ); } + + static float4 h4tex2D( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 h4tex2Dproj( sampler2D image, float3 texcoord ) { return tex2Dproj( image, float4( texcoord.xy, 0, texcoord.z ) ); } + static float4 texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2D( image, texcoord, dx, dy ); } + static float4 h4texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 h4texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2D( image, texcoord, dx, dy ); } + // return the depth value at texcoord.xy + static float tex2Ddepth( sampler2D image, float2 texcoord ) { return 1.0 - tex2D( image, texcoord ).x; } + static float tex2Ddepth_fast( sampler2D image, float2 texcoord ) { return 1.0 - tex2D( image, texcoord ).x; } + // compare texcoord.z with the depth value at texcoord.xy and return 1 if less and 0 if larger equal + static float shadow2Ddepth( sampler2DShadow image, float3 texcoord ) { return float( ( 1.0 - tex2D( image, texcoord.xy ).x ) >= texcoord.z ); } + static float4 swizzleColor( float4 color ) { return color.abgr; } + static float2 screenPosToTexcoord( float2 pos, float4 bias_scale ) { return ( pos * bias_scale.zw + bias_scale.xy ); } + bool bHardwareSkinning : register(b1); + bool bHardwareMorphing : register(b2); +#endif + +#ifdef PS3 + #define _half2( x ) half2( x ) + #define _half3( x ) half3( x ) + #define _half4( x ) half4( x ) + #define _float2( x ) float2( x ) + #define _float3( x ) float3( x ) + #define _float4( x ) float4( x ) + + static float4 texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2D( image, texcoord, dx, dy ); } + static half4 h4texPhys( sampler2D image, float2 texcoord ) { return h4tex2D( image, texcoord ); } + static half4 h4texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return h4tex2D( image, texcoord, dx, dy ); } + // return the depth value at texcoord.xy + static float tex2Ddepth( sampler2D image, float2 texcoord ) { return texDepth2D_precise( image, texcoord ); } + static float tex2Ddepth_fast( sampler2D image, float2 texcoord ) { + // Perform most accurate integer reconstruction using a half precision multiply. + // Make sure the assember code looks like this: + // + // TEXR H0, R1, TEX0; + // MULH H0, H0, {0x437f0000(255), 0x00000000(0), 0x00000000(0), 0x00000000(0)}.x; + // DP3R R1.z, H0, {0x3b800000(0.00390625), 0x37800000(1.52588e-005), 0x33800000(5.96046e-008), 0x00000000(0)}; + // + half4 dt = h4tex2D( image, texcoord ) * half( 255.0 ); + return dot( dt, float4( 1.0 / 256, 1.0 / 256 / 256, 1.0 / 256 / 256 / 256, 0.0 ) ); + } + // compare the depth value at texcoord.xy with texcoord.z and return 0 if less and 1 if larger equal + static float shadow2Ddepth( sampler2DShadow image, float3 texcoord ) { return tex2D( image, texcoord ).x; } + static float4 swizzleColor( float4 color ) { return color; } + static float2 screenPosToTexcoord( float2 pos, float4 bias_scale ) { return ( pos * bias_scale.zw + bias_scale.xy ); } + bool hardwareSkinning : b1; + bool hardwareMorphing : b2; +#endif + +#if defined( PC_D3D ) + + // these are here because HLSL does not implement vector constructors with a single scalar parameter + half2 _half2( float x ) { return half2( x, x ); } + half3 _half3( float x ) { return half3( x, x, x ); } + half4 _half4( float x ) { return half4( x, x, x, x ); } + float2 _float2( float x ) { return float2( x, x ); } + float3 _float3( float x ) { return float3( x, x, x ); } + float4 _float4( float x ) { return float4( x, x, x, x ); } + + SamplerState samplerGeneric : register( s0 ); // FIXME + static float4 tex2D( sampler2D image, float2 texcoord ) { return image.Sample( samplerGeneric, texcoord ); } + static float4 tex2Dproj( sampler2D image, float3 texcoord ) { return image.Sample( samplerGeneric, texcoord ); } + static float4 tex2DGrad( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return image.SampleGrad( samplerGeneric, texcoord, dx, dy ); } + static float4 tex2Dlod( sampler2D image, float4 texcoord ) { return image.SampleLevel( samplerGeneric, texcoord.xy, texcoord.w, 0 ); } + static float4 tex2Dbias( sampler2D image, float4 texcoord ) { return image.SampleBias( samplerGeneric, texcoord.xy, texcoord.w ); } + static float4 texCUBE( samplerCUBE image, float3 texcoord ) { return image.Sample( samplerGeneric, texcoord ); } + static float4 texCUBElod( samplerCUBE image, float4 texcoord ) { return image.SampleLevel( samplerGeneric, texcoord.xyz, texcoord.w ); } + + static float4 h4tex2D( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 h4tex2Dproj( sampler2D image, float3 texcoord ) { return tex2Dproj( image, float4( texcoord.xy, 0, texcoord.z ) ); } + static float4 texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2DGrad( image, texcoord, dx, dy ); } + static float4 h4texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 h4texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2DGrad( image, texcoord, dx, dy ); } + // return the depth value at texcoord.xy + static float tex2Ddepth( sampler2D image, float2 texcoord ) { return 1.0 - tex2D( image, texcoord ).x; } + static float tex2Ddepth_fast( sampler2D image, float2 texcoord ) { return 1.0 - tex2D( image, texcoord ).x; } + // compare texcoord.z with the depth value at texcoord.xy and return 1 if less and 0 if larger equal + static float shadow2Ddepth( sampler2DShadow image, float3 texcoord ) { return float( ( 1.0 - tex2D( image, texcoord.xy ).x ) >= texcoord.z ); } + static float4 swizzleColor( float4 color ) { return color.rgba; } + static float2 screenPosToTexcoord( float2 pos, float4 bias_scale ) { return ( pos * bias_scale.zw + bias_scale.xy ); } + bool bHardwareSkinning : register(b1); + bool bHardwareMorphing : register(b2); +#elif defined( PC ) + + #define _half2( x ) half2( x ) + #define _half3( x ) half3( x ) + #define _half4( x ) half4( x ) + #define _float2( x ) float2( x ) + #define _float3( x ) float3( x ) + #define _float4( x ) float4( x ) + + static float4 h4tex2D( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 h4tex2Dproj( sampler2D image, float3 texcoord ) { return tex2Dproj( image, texcoord ); } + static float4 texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2D( image, texcoord, dx, dy ); } + static float4 h4texPhys( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ); } + static float4 h4texPhys( sampler2D image, float2 texcoord, float2 dx, float2 dy ) { return tex2D( image, texcoord, dx, dy ); } + // return the depth value at texcoord.xy + static float tex2Ddepth( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ).x; } + static float tex2Ddepth_fast( sampler2D image, float2 texcoord ) { return tex2D( image, texcoord ).x; } + // compare the depth value at texcoord.xy with texcoord.z and return 0 if less and 1 if larger equal + static float shadow2Ddepth( sampler2DShadow image, float3 texcoord ) { return tex2D( image, texcoord ).x; } + static float4 swizzleColor( float4 color ) { return color; } + static float2 screenPosToTexcoord( float2 pos, float4 bias_scale ) { return ( pos * bias_scale.zw + bias_scale.xy ); } +#endif + +static const half4 matrixRGB1toCoCg1YX = half4( 0.50, 0.0, -0.50, 0.50196078 ); // Co +static const half4 matrixRGB1toCoCg1YY = half4( -0.25, 0.5, -0.25, 0.50196078 ); // Cg +static const half4 matrixRGB1toCoCg1YZ = half4( 0.0, 0.0, 0.0, 1.0 ); // 1.0 +static const half4 matrixRGB1toCoCg1YW = half4( 0.25, 0.5, 0.25, 0.0 ); // Y + +static const half4 matrixCoCg1YtoRGB1X = half4( 1.0, -1.0, 0.0, 1.0 ); +static const half4 matrixCoCg1YtoRGB1Y = half4( 0.0, 1.0, -0.50196078, 1.0 ); // -0.5 * 256.0 / 255.0 +static const half4 matrixCoCg1YtoRGB1Z = half4( -1.0, -1.0, 1.00392156, 1.0 ); // +1.0 * 256.0 / 255.0 + +// uses texel space coordinates, not normalized coordinates +static float ComputeLOD( float2 virtCoords ) { + float2 dx = ddx( virtCoords.xy ); + float2 dy = ddy( virtCoords.xy ); + + float px = dot2( dx, dx ); + float py = dot2( dy, dy ); + + float maxLod = 0.5 * log2( max( px, py ) ); // log2(sqrt()) = 0.5*log2() + return maxLod; +} + +// uses texel space coordinates, not normalized coordinates +static float ComputeAnisoLOD( float2 virtCoords, float maxAnisoLog2 ) { + float2 dx = ddx( virtCoords.xy ); + float2 dy = ddy( virtCoords.xy ); + + float px = dot2( dx, dx ); + float py = dot2( dy, dy ); + + float maxLod = 0.5 * log2( max( px, py ) ); // log2(sqrt()) = 0.5*log2() + float minLod = 0.5 * log2( min( px, py ) ); + + return maxLod - min( maxAnisoLog2, maxLod - minLod ); +} + +static float4 ComputeVirtualLOD( float4 filterParms, float4 feedbackFloat, float4 virtMapping, float2 virtCoords ) { + // Used for the land generation tool path. + float drawBias = filterParms.x; + float maxAnisoLog2 = filterParms.z; + float widthInPages = feedbackFloat.y; + + // take just the fractional part of the original texture coordinate to give texture wrapping + // scale and bias it by the source to virtual texture mapping + float4 virtualTexCoord; + virtualTexCoord.zw = _float2( 0.0 ); + virtualTexCoord.xy = frac( virtCoords ); + virtualTexCoord.xy = virtualTexCoord.xy * virtMapping.xy + virtMapping.zw; + + // look up the proper LOD in the dedicated LOD texture, based on the original, non-wrapped, + // non-paged texture coordinates to avoid discontinuities. Still need to multiply by virtualMapping.xy + // to account for the dimensions of the original texture. + virtualTexCoord.w = ComputeAnisoLOD( virtCoords * virtMapping.xy * widthInPages * PAYLOAD_SIZE, maxAnisoLog2 ); + + // adjust for the LOD bias already applied in the virtToPhysPage sampler (log2TexelSizeRatio) + virtualTexCoord.w -= PAYLOAD_SIZE_LOG2 + drawBias; + + return virtualTexCoord; +} + +#if defined( XBOX ) || ( defined( ATI ) && !defined( ATI_CLAMPED_ANISO ) ) +// use the virtual texture coordinate instead of the physical texture coordinate for the anisotropic texture lookup +#define USE_VIRTUAL_ANISO_FOOTPRINT +#endif + +// bias the page table lookup anticipating an anisotropic texture lookup +// this is expensive but may be a nice quality improvement for high end PCs +//#define USE_ANISO_PAGE_TABLE_LOOKUP + +static float4 PageTableBiasForAniso( float2 virtCoords ) { + const float minAnisoBias = -2; // -log2( maxAniso ) + + // calculate a bias for the page table lookup based on the size of the anisotropic footprint + float2 dx = ddx( virtCoords.xy ); + float2 dy = ddy( virtCoords.xy ); + + float px = dot2( dx, dx ); + float py = dot2( dy, dy ); + + float maxLod = 0.5 * log2( max( px, py ) ); // log2(sqrt()) = 0.5*log2() + float minLod = 0.5 * log2( min( px, py ) ); + + float anisoBias = max( minLod - maxLod, minAnisoBias ); + + return float4( virtCoords.x, virtCoords.y, 0, anisoBias ); +} + +#ifdef USE_ANISO_PAGE_TABLE_LOOKUP +#define tex2DPageTable( sampler, coords ) tex2Dbias( sampler, PageTableBiasForAniso( coords ) ) +#else +#define tex2DPageTable( sampler, coords ) tex2D( sampler, coords ) +#endif + +//#define PAGE_TABLE_ONLY_8888 +#if defined( PS3 ) || defined( XBOX ) +#define PAGE_TABLE_ONLY_565 +#endif +//#define MAPPING_IMAGE_3X_FLOAT32 +//#define MAPPING_IMAGE_2X_FIXED16 + +#if defined( PAGE_TABLE_ONLY_8888 ) + +// using only the page table in 8-bit per component RGBA format +#define UniqueVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 32 ) +#define UniqueDiffuseOnlyVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 32 ) +#define UniqueDiffuseOnly2VirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 32 ) +#define VmtrVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 16 ) +#define VmtrVirtualLODToPhysical( virtMapping, coords ) VirtualToPhysical2( $vmtrPageTableMap, coords, 16 ).xy + +static float3 VirtualToPhysical2( sampler2D virtToPhysPage, float2 virtCoords, float physPagesWide ) { + // constants + const float pageWidth = 128; + const float pageBorder = 4; + //const float physPagesWide = 32; + + #if defined( PS3 ) || defined( XBOX ) + const float floatToByte = 255.0 + 1.0 / 256; + #else + const float floatToByte = 255.0; + #endif + + // derived constants + const float pageFracScale = ( pageWidth - 2 * pageBorder ) / pageWidth / physPagesWide; + const float borderOffset = pageBorder / pageWidth / physPagesWide; + const float4 texScale = { + floatToByte / physPagesWide, + floatToByte / physPagesWide, + floatToByte * 1.0 / 16.0, + floatToByte * 256.0 / 16.0 + }; + const float4 texBias = { borderOffset, borderOffset, 0, 0 }; + + // translation + float4 physPage = tex2DPageTable( virtToPhysPage, virtCoords ) * texScale + texBias; + float2 pageFrac = frac( virtCoords * ( physPage.z + physPage.w ) ); + float3 physCoord; + physCoord.xy = pageFrac * pageFracScale + physPage.xy; + physCoord.z = ( physPage.z + physPage.w ) * pageFracScale; + return physCoord; +} + +#elif defined( PAGE_TABLE_ONLY_565 ) + +// using only the page table in 565 RGB format +#define UniqueVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 32 ) +#define UniqueDiffuseOnlyVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 32 ) +#define UniqueDiffuseOnly2VirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 32 ) +#define VmtrVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, coords, 16 ) +#define VmtrVirtualLODToPhysical( virtMapping, coords ) VirtualToPhysical2( $vmtrPageTableMap, coords, 16 ).xy + +static float3 VirtualToPhysical2( sampler2D virtToPhysPage, float2 virtCoords, float physPagesWide ) { + // constants + const float pageWidth = 128; + const float pageBorder = 4; + //const float physPagesWide = 32; + + #if defined( PS3 ) + const float floatToPagesWide = ( 255.0 + 1.0 / 256 ) / 256.0 * physPagesWide; + const float floatToMip = ( 255.0 + 1.0 / 256 ) / 256.0 * 64.0; + #elif defined( XBOX ) + const float floatToPagesWide = ( 31.0 + 1.0 / 33.0 ) / 32.0 * physPagesWide; + const float floatToMip = ( 63.0 + 1.0 / 65.0 ); + #else + const float floatToPagesWide = 255.0 / 256.0 * physPagesWide; + const float floatToMip = 255.0 / 256.0 * 64.0; + #endif + + // derived constants + const float pageFracScale = ( pageWidth - 2 * pageBorder ) / pageWidth / physPagesWide; + const float borderOffset = pageBorder / pageWidth / physPagesWide; + const float4 texScale = { + floatToPagesWide, + floatToMip, + floatToPagesWide, + 0 + }; + float4 texBias = { 0, 1.0 / 4096.0, 0, 0 }; + + // translation + half4 physPage = tex2DPageTable( virtToPhysPage, virtCoords ) * texScale + texBias; // NOTE: must be half4 for PS3 ? + physPage.y = exp2( physPage.y ); + physPage = floor( physPage ); + float2 pageFrac = frac( virtCoords * physPage.y ); + float3 physCoord; + physCoord.xy = pageFrac * pageFracScale + physPage.xz / physPagesWide + borderOffset; + physCoord.z = physPage.y * pageFracScale; + return physCoord; +} + +#elif defined( MAPPING_IMAGE_2X_FIXED16 ) + +// using two unsigned fixed point 16-bit mapping textures, one with a single channel and one with two channels +#define UniqueVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueMappingsMap0, $physicalUniqueMappingsMap1, coords ) +#define UniqueDiffuseOnlyVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueDiffuseOnlyMappingsMap0, $physicalUniqueDiffuseOnlyMappingsMap1, coords ) +#define UniqueDiffuseOnly2VirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueDiffuseOnly2MappingsMap0, $physicalUniqueDiffuseOnly2MappingsMap1, coords ) +#define VmtrVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalVmtrMappingsMap0, $physicalVmtrMappingsMap1, coords ) +#define VmtrVirtualLODToPhysical( virtMapping, coords ) VirtualToPhysical2( $vmtrPageTableMap, $physicalVmtrMappingsMap0, $physicalVmtrMappingsMap1, coords ).xy + +static float3 VirtualToPhysical2( sampler2D virtToPhysPage, sampler2D physPageToXform0, sampler2D physPageToXform1, float2 virtCoords ) { + half2 physPage = tex2DPageTable( virtToPhysPage, virtCoords ).xy; + float4 xform0 = tex2D( physPageToXform0, physPage ) * 32.0; + float4 xform1 = tex2D( physPageToXform1, physPage ) * 32.0; + float3 physCoord; + physCoord.xy = virtCoords * xform0.y + xform1.xw - 30.0; + physCoord.z = 0.0f; + return physCoord; +} + +#elif defined( MAPPING_IMAGE_3X_FLOAT32 ) + +// using three single channel float 32 mapping textures, one for each component +#define UniqueVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueMappingsMap0, $physicalUniqueMappingsMap1, $physicalUniqueMappingsMap2, coords ) +#define UniqueDiffuseOnlyVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueDiffuseOnlyMappingsMap0, $physicalUniqueDiffuseOnlyMappingsMap1, $physicalUniqueDiffuseOnlyMappingsMap2, coords ) +#define UniqueDiffuseOnly2VirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueDiffuseOnly2MappingsMap0, $physicalUniqueDiffuseOnly2MappingsMap1, $physicalUniqueDiffuseOnly2MappingsMap2, coords ) +#define VmtrVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalVmtrMappingsMap0, $physicalVmtrMappingsMap1, $physicalVmtrMappingsMap2, coords ) +#define VmtrVirtualLODToPhysical( virtMapping, coords ) VirtualToPhysical2( $vmtrPageTableMap, $physicalVmtrMappingsMap0, $physicalVmtrMappingsMap1, $physicalVmtrMappingsMap2, coords ).xy + +static float3 VirtualToPhysical2( sampler2D virtToPhysPage, sampler2D physPageToXform0, sampler2D physPageToXform1, sampler2D physPageToXform2, float2 virtCoords ) { + half2 physPage = tex2DPageTable( virtToPhysPage, virtCoords ).xy; + float xform0 = tex2D( physPageToXform0, physPage ).x; + float xform1 = tex2D( physPageToXform1, physPage ).x; + float xform2 = tex2D( physPageToXform2, physPage ).x; + float3 physCoord; + physCoord.xy = virtCoords * xform0 + float2( xform1, xform2 ); + physCoord.z = 0.0f; + return physCoord; +} + +#else + +// using a single 4 channel float 32 mapping texture +#define UniqueVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueMappingsMap0, coords ) +#define UniqueDiffuseOnlyVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueDiffuseOnlyMappingsMap0, coords ) +#define UniqueDiffuseOnly2VirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalUniqueDiffuseOnly2MappingsMap0, coords ) +#define VmtrVirtualToPhysical( coords ) VirtualToPhysical2( $pageTableMap, $physicalVmtrMappingsMap0, coords ) +#define VmtrVirtualLODToPhysical( virtMapping, coords ) VirtualLODToPhysical2( $vmtrPageTableMap, $physicalVmtrMappingsMap0, ComputeVirtualLOD( $physicalVmtrFilterParms, $virtualTextureFeedbackFloat, virtMapping, coords ) ) + +static float3 VirtualToPhysical2( sampler2D virtToPhysPage, sampler2D physPageToXform0, float2 virtCoords ) { + half2 physPage = tex2DPageTable( virtToPhysPage, virtCoords ).xy; + float4 xform = tex2D( physPageToXform0, physPage ); + float3 physCoord; + physCoord.xy = virtCoords * xform.x + xform.zw; + physCoord.z = xform.y; + return physCoord; +} + +static float2 VirtualLODToPhysical2( sampler2D virtToPhysPage, sampler2D physPageToXform0, float4 virtCoords ) { + half2 physPage = tex2Dlod( virtToPhysPage, virtCoords ).xy; + float4 xform = tex2D( physPageToXform0, physPage ); + return virtCoords.xy * xform.x + xform.zw; +} + +#endif + +static float ComputeSoftParticleScale( sampler2D image, float2 tc, float interpolatedZOverW, float softness ) { + // This instruction handles the 1.0 - depth calc automatically when using an inverted depth buffer + float depth = tex2Ddepth( image, tc ); + + // Approximate a linear depth difference + float r1 = 1.0 / ( 1.0 - depth ); + float r2 = 1.0 / ( 1.0 - interpolatedZOverW ); + return saturate( ( r1 - r2 ) * softness ); +} + +static half4 ComputeAnimCrossFadeColor( sampler2D image, float2 tc0, float2 tc1, float frameFrac ) { + // For strip animations, we need to cross-fade + half4 result0 = tex2D( image, tc0 ) * ( 1.0 - frameFrac ); + half4 result1 = tex2D( image, tc1 ) * ( frameFrac ); // when frameFrac is 0, no contribution + return ( result0 + result1 ); +} + +// the 'distortVec' is in the range [-1.0, 1.0] for each component where 1.0 is the +// full screen width or height respectively +// the 'blur' value is in the range [0.0, 1.0] where 1.0 offsets the mip level by 8 +static float4 ComputeDistortion( float2 distortVec, float blur ) { + // The distortion vector is usually very small so store a close to normalized vector + // in 'xy' and store a scale value in 'z'. + // The blur value is moved in the range [0.5, 1.0] which allows multiple distortions + // to be blended with GL_ONE_MINUS_DST_ALPHA GL_DST_ALPHA. The 'blur' (alpha channel) in + // the distortion map is initialized to zero such that the first distortion fully contributes + // and then consecutive distortions will blend in with a value in the range [0.0, 0.5]. + // Blending based on the blur value is of course wrong but it works if no blurring is applied. + // Also, as the blur value goes up, additional distortions contribute less which is + // fine because the distortions won't be noticeable when there is a lot of blurring. + // A linear blend of the two vectors with separate scale values does not result in the + // same vector as a linear blend of the original vectors. However, the resulting vector + // is still nicely bounded between the original vectors and representative of accumulated + // distortions. + // To decode the distortion vector and blur value in the post process we use: + // half4 distortion = h4tex2D( $postDistortionMap, texcoord.xy ) - ( 127.0 / 255.0 ); + // perturb += distortion.xy * distortion.z; + // blur += saturate( distortion.w ) * 16; + float4 final; + final.z = 0.125 + sqrt( dot( distortVec, distortVec ) ); + final.xy = distortVec / final.z; + final.w = blur * 0.5; + return final + ( 127.0 / 255.0 ); +} + +static half2 ComputeTransAtlasCoord( half2 tc, half4 scaleBias ) { + // Figure out half texel, pick fraction from texture coordinates and clamp it inside [ 0+halfTexel, 1-halfTexel ] + half2 halfScale = scaleBias.xy * _half2( 0.5 ); + half2 result = max( min( frac( tc ), _half2( 1.0 ) - halfScale ), halfScale ); + + // Scale and bias clamped texture coordinates + return result * scaleBias.xy + scaleBias.zw; +} + +static float4 ComputeDistortionMV( float2 distortVec, float blur ) { + float4 final; + final.xy = saturate( distortVec * 0.5 + 0.5 ); + final.z = blur * 0.5 + 0.5; + final.w = 1.0; + return final; +} + +static float3 CoCgScYToRGB( float4 CoCgScY ) { + float3 rgb; + CoCgScY.z = ( CoCgScY.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + CoCgScY.z = 1.0 / CoCgScY.z; + CoCgScY.xy *= CoCgScY.z; + rgb.x = dot4( CoCgScY, matrixCoCg1YtoRGB1X ); + rgb.y = dot4( CoCgScY, matrixCoCg1YtoRGB1Y ); + rgb.z = dot4( CoCgScY, matrixCoCg1YtoRGB1Z ); + return rgb; +} + +static float4 CoCgScYToRGB1( float4 CoCgScY ) { + float4 rgba; + rgba.xyz = CoCgScYToRGB( CoCgScY ); + rgba.w = 1; + return rgba; +} + +static float3 ScaleSpecular( float3 unscaled, float factor ) { + return ( unscaled * 8.0 ) / ( factor * 255.0 + 8.0 ); +} + +//#define FEEDBACK_FORMAT_FLOAT32 + +static float4 CalculateFeedback( float2 texCoords, float4 feedbackParms, float4 filterParms ) { + float4 feedback; + + float bias = filterParms.y; + float maxAnisoLog2 = filterParms.z; + float widthInPages = feedbackParms.y; + + // xy is the integral page coordinates + feedback.xy = texCoords * widthInPages; + + // compute the desired LOD for anisotropic filtering + float desiredLod = ComputeAnisoLOD( feedback.xy * PAYLOAD_SIZE, maxAnisoLog2 ) + bias; + + // z is the lod level, never adjust below 0 + feedback.z = max( 0.0, desiredLod ); + + // w holds the virtual texture index + feedback.w = feedbackParms.x; + + return feedback; +} + +/* + pageX = ( data[0] & 0xFF ) + ( data[2] & 0x0F ) << 8 ); + pageY = ( data[1] & 0xFF ) + ( data[2] & 0xF0 ) << 4 ); + pageLOD = ( data[3] & 0x0F ); + pageSource = ( data[3] & 0xF0 ) >> 4; +*/ +static float4 PackFeedback( float4 feedback ) { +#ifdef FEEDBACK_FORMAT_FLOAT32 + return feedback; +#else + feedback = floor( feedback ) / 256.0; + float2 xy_low = frac( feedback.xy + 0.5 / 256.0 ); + float2 xy_high = floor( feedback.xy ) / 256.0; + + float4 color; + color.xy = xy_low; + color.z = xy_high.y * 16.0 + xy_high.x; + color.w = feedback.w * 16.0 + feedback.z; +#if defined( XBOX ) + return color.zyxw; // stored as B-G-R-A +#elif defined( PS3 ) + return color.yzwx; // stored as A-R-G-B +#else + return color; +#endif +#endif +} diff --git a/bin/base/decls/renderprogs/includes/autosprite.inc b/bin/base/decls/renderprogs/includes/autosprite.inc new file mode 100644 index 0000000..02c4549 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/autosprite.inc @@ -0,0 +1,39 @@ + +/* +================================================================================== +CALC_POSITION_AUTOSPRITE1 +================================================================================== +*/ +#template CALC_POSITION_AUTOSPRITE1( resultPosition, midpoint, viewLeft, viewUp, tangent ) +{ + // Normals and tangents are stored as unsigned bytes - need to expand back to [-1,1] range + float3 parms = tangent; + parms.yz = parms.yz * 2.0 - 1.0; + + float radius = parms.x * 255.0; + float signLeft = parms.y; + float signUp = parms.z; + + float3 scaledLeft = normalize( viewLeft ) * radius; + float3 scaledUp = normalize( viewUp ) * radius; + resultPosition = ( midpoint + ( signLeft * scaledLeft ) + ( signUp * scaledUp ) ); +} +#endtemplate + +/* +================================================================================== +CALC_POSITION_AUTOSPRITE1 +================================================================================== +*/ +#template CALC_POSITION_AUTOSPRITE2( resultPosition, viewOrg, midpoint, majorAxis, sign, edgeLen ) +{ + // Normals and tangents are stored as unsigned bytes - need to expand back to [-1,1] range + float s = sign * 2.0 - 1.0; + float3 axis = majorAxis * 2.0 - 1.0; + + float len = edgeLen * 255.0 * s; + float3 dir = normalize( midpoint - viewOrg ); + float3 minor = cross( axis, dir ); + resultPosition = ( midpoint + len * minor ); +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/deferredlighting.inc b/bin/base/decls/renderprogs/includes/deferredlighting.inc new file mode 100644 index 0000000..4879d38 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/deferredlighting.inc @@ -0,0 +1,77 @@ + +/* +================================================================================== +DEFERRED_LIGHTING + +inout float3 color; +in float4 fragmentPosition; +in float4 windowPosition; +in float shadow; +================================================================================== +*/ +#template DEFERRED_LIGHTING( color, fragmentPosition, windowPosition, shadow ) +{ +#if defined( PC ) && !defined( PC_D3D ) + half4 viewDiffuse = texelFetch( $viewDiffuseMap, ivec2( fragmentPosition.xy ), 0 ); + half4 viewNormal = texelFetch( $viewNormalMap, ivec2( fragmentPosition.xy ), 0 ) * 2.0 - 1.0; +#else + half4 viewDiffuse = tex2D( $viewDiffuseMap, windowPosition.xy ); + half4 viewNormal = tex2D( $viewNormalMap, windowPosition.xy ) * 2.0 - 1.0; +#endif + half viewSpecular = viewDiffuse.w; + half viewPower = viewNormal.w; + + half4 globalPosition; + globalPosition.x = dot4( windowPosition, $windowPosToGlobalX ); + globalPosition.y = dot4( windowPosition, $windowPosToGlobalY ); + globalPosition.z = dot4( windowPosition, $windowPosToGlobalZ ); + globalPosition.w = dot4( windowPosition, $windowPosToGlobalW ); + + globalPosition.xyz /= globalPosition.w; + + half3 light; + { + float4 lightTexCoord; + lightTexCoord.x = dot4( windowPosition, $windowPosToProjectedTexS ); + lightTexCoord.y = dot4( windowPosition, $windowPosToProjectedTexT ); + lightTexCoord.z = dot4( windowPosition, $windowPosToProjectedTexR ); + lightTexCoord.w = dot4( windowPosition, $windowPosToProjectedTexQ ); + + lightTexCoord.xyz /= lightTexCoord.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( lightTexCoord.z, 0.5 ) ); + + half3 toLight = normalize( $globalLightOrigin.xyz - globalPosition.xyz ); + + light = $lightColor.xyz * lpm.xyz * lfm.xyz; + light *= _float3( dot3( toLight, viewNormal.xyz ) ); + light *= shadow; + } + + half3 diffuse; + { + diffuse = viewDiffuse.xyz * $newDiffuseScale.xyz * 2.0; + } + + half3 specular; + { + half3 toViewer = normalize( $globalViewOrigin.xyz - globalPosition.xyz ); + + // The reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * viewNormal.xyz * dot3( viewNormal.xyz, toViewer ) ) - toViewer; + + // Power factor is stored as 0.0 - 1.0 while we want a 0 | 1 | 2 | 3 mip value. + // The artists really prefer white to be shiny instead of dull, so invert it here. + // We could probably skip the floor, but I am wary of hardware / api rounding. + reflection.w = floor( ( 1.0 - viewPower ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * viewSpecular * $newSpecularScale.xyz; + } + + color.xyz = light * ( diffuse + specular ); +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/gore.inc b/bin/base/decls/renderprogs/includes/gore.inc new file mode 100644 index 0000000..ac8f48d --- /dev/null +++ b/bin/base/decls/renderprogs/includes/gore.inc @@ -0,0 +1,179 @@ + +/* +================================================================================== +CALC_GORE_VERTEX +================================================================================== +*/ +#template CALC_GORE_VERTEX( woundPos1, woundPos2 ) +{ + // Convert back from 16 bit vertex elements. + float4 vertexPos = vertex.position * $vertexXYZScale + $vertexXYZBias; + + float3 wound1LocalPos = $wound1Pos.xyz - vertexPos.xyz; + float3 wound1LocalSpace; + + wound1LocalSpace.x = dot( $wound1dirX.xyz, wound1LocalPos.xyz ); + wound1LocalSpace.y = dot( $wound1dirY.xyz, wound1LocalPos.xyz ); + wound1LocalSpace.z = dot( $wound1dirZ.xyz, wound1LocalPos.xyz ); + float3 wound1Local = wound1LocalSpace / $wound1Size.xyz; + woundPos1.xy = wound1Local.xy + _float2( 0.5 ); + woundPos1.z = 1.0 - abs( wound1Local.z ); + woundPos1.w = 0.0; + + float wound3A = ( length( ( $wound3PosA.xyz - vertexPos.xyz ) * $wound3PosA.w ) - 1.0f ); + float wound3B = ( length( ( $wound3PosB.xyz - vertexPos.xyz ) * $wound3PosB.w ) - 1.0f ); + float wound3C = ( length( ( $wound3PosC.xyz - vertexPos.xyz ) * $wound3PosC.w ) - 1.0f ); + float wound3D = ( length( ( $wound3PosD.xyz - vertexPos.xyz ) * $wound3PosD.w ) - 1.0f ); + float wound3E = ( length( ( $wound3PosE.xyz - vertexPos.xyz ) * $wound3PosE.w ) - 1.0f ); + + woundPos2.w = min( wound3A, wound3B ); + woundPos2.w = min( woundPos2.w, wound3C ); + woundPos2.w = min( woundPos2.w, wound3D ); + woundPos2.w = min( woundPos2.w, wound3E ); + + float maskInfo = saturate( 1.0f - ( woundPos2.w * 0.2 ) ); + maskInfo *= maskInfo * maskInfo; +} +#endtemplate + +/* +================================================================================== +OCCLUDER_GORE_CLIP +================================================================================== +*/ +#template OCCLUDER_GORE_CLIP( woundPos1, woundPos2 ) +{ + // gore wound 1 + half4 woundMap1 = tex2D( $woundTexture, saturate( woundPos1.xy ) ); + woundMap1 *= $wound1RGBA; + woundMap1 = woundMap1.xxxx + woundMap1.yyyy + woundMap1.zzzz + woundMap1.wwww; + woundMap1 = 1.0 - ( 1.0 - woundMap1 ) * ( saturate( woundPos1.z * half4( 1.0, 1.0 ,1.0 , 5.0 ) ) ) * $wound1Size.w; + woundMap1.x = saturate( ( woundMap1.x - 0.25 ) * 1.33 ); + + // gore wound 2 + half4 woundMap2 = tex2D( $woundTexture, saturate( woundPos2.xy ) ); + woundMap2 *= $wound2RGBA; + woundMap2 = woundMap2.xxxx + woundMap2.yyyy + woundMap2.zzzz + woundMap2.wwww; + woundMap2 = 1.0 - ( 1.0 - woundMap2 ) * ( saturate( woundPos2.z * half4( 1.0 , 1.0 ,1.0 ,5.0 ) ) ) * $wound2Size.w; // Photoshop screen blend + woundMap2.x = saturate( ( woundMap2.x - 0.25 ) * 1.33 ); + + // gore decal texture +// half4 woundMap3 = tex2D( $woundTexture, fragment.htexcoord0.xy * 2.0 ).wwww; +// woundMap3.xyz = woundMap3.xyz + _half3( 1.0 - woundPos1.w ) - _half3( woundPos1.w ); +// woundMap3.w = saturate( ( 1.0 - ( 1.0 - woundMap3.w ) * 0.2 ) - woundPos1.w ); +// float woundMask = min( min ( woundMap1.w, woundMap2.w ), woundMap3.w ); + + float woundMask = min( woundMap1.w, woundMap2.w ); + woundMask = 1.0 -( ( 1.0 - woundMask ) * $woundClip.x ); + + clip( woundMask - 0.2 ); +} +#endtemplate + +/* +================================================================================== +APPLY_GORE_WOUNDS +================================================================================== +*/ +#template APPLY_GORE_WOUNDS( diffuse, woundPos1, woundPos2, specularScale, skinMap ) +{ + // gore wound 1 + half4 woundMap1 = tex2D( $woundClipTexture, saturate( woundPos1.xy ) ); + woundMap1 *= $wound1RGBA; + woundMap1 = woundMap1.xxxx + woundMap1.yyyy + woundMap1.zzzz + woundMap1.wwww; + woundMap1 = 1.0f - ( 1.0f - woundMap1 ) * ( saturate( woundPos1.z * half4( 1.0f, 1.0f, 1.0f, 5.0f ) ) ) * $wound1Size.w; + woundMap1.x = saturate( ( woundMap1.x - 0.25 ) * 1.33 ); + + // gore decal texture + half4 woundMap3 = tex2D( $woundClipTexture, fragment.htexcoord7.xy ).wwww; + woundMap3.xyz = woundMap3.xyz + _half3( 1.0 - woundPos2.w ) - _half3( woundPos2.w ); + woundMap3.w = woundPos2.w + ( woundMap3.w - 0.5f ) * 0.1f; + float woundMask = min ( woundMap1.w, woundMap3.w ); + woundMask = 1.0f - ( ( 1.0f - woundMask ) * $woundClip.x ); + + clip( woundMask - 0.2f ); + + half3 woundComp = woundMap3.xyz; + woundComp = min( woundComp, woundMap1.xxx ); + woundComp = saturate( woundComp ); + + // now just color the grayscale image by our chosen blood color - right now hardcoded to ( 0.3, 0.2, 0.1 ); + woundComp = _float3( 1.0 ) - ( ( _float3( 1.0 ) - woundComp ) * ( _float3( 1.0 ) - float3( 0.3, 0.15, 0.1 ) ) ); + woundComp *= woundComp * woundComp; + + // now apply to diffuse - done! + diffuse.xyz *= woundComp.xyz; +} +#endtemplate + +/* +================================================================================== +APPLY_GORE_COLOR +================================================================================== +*/ +#template APPLY_GORE_COLOR( inColor ) +{ + diffuse.xyz *= _half3( 1.0 ) - ( _half3( inColor ) * half3( 0.7f, 0.85f, 0.9f ) ); +} +#endtemplate + +/* +================================================================================== +CALC_GORE_CLIP_SPHERES +================================================================================== +*/ +#template CALC_GORE_CLIP_SPHERES( clipInfo ) +{ + float3 vertexPos = vertex.position.xyz; + clipInfo = _half4( 0 ); + float wound3A = ( length( ( $wound3PosA.xyz - vertexPos.xyz ) * $wound3PosA.w ) - 1.0f ); + float wound3B = ( length( ( $wound3PosB.xyz - vertexPos.xyz ) * $wound3PosB.w ) - 1.0f ); + float wound3C = ( length( ( $wound3PosC.xyz - vertexPos.xyz ) * $wound3PosC.w ) - 1.0f ); + float wound3D = ( length( ( $wound3PosD.xyz - vertexPos.xyz ) * $wound3PosD.w ) - 1.0f ); + float wound3E = ( length( ( $wound3PosE.xyz - vertexPos.xyz ) * $wound3PosE.w ) - 1.0f ); + float wound3F = ( length( ( $wound3PosF.xyz - vertexPos.xyz ) * $wound3PosF.w ) - 1.0f ); + float wound3G = ( length( ( $wound3PosG.xyz - vertexPos.xyz ) * $wound3PosG.w ) - 1.0f ); + float wound3H = ( length( ( $wound3PosH.xyz - vertexPos.xyz ) * $wound3PosH.w ) - 1.0f ); + float wound3I = ( length( ( $wound3PosI.xyz - vertexPos.xyz ) * $wound3PosI.w ) - 1.0f ); + float wound3J = ( length( ( $wound3PosJ.xyz - vertexPos.xyz ) * $wound3PosJ.w ) - 1.0f ); + + float3 ellipsoid; + float3 localPos = vertexPos.xyz - float3( $woundEllipsoidX.w, $woundEllipsoidY.w, $woundEllipsoidZ.w ); + ellipsoid.x = dot( $woundEllipsoidX.xyz, localPos.xyz ); + ellipsoid.y = dot( $woundEllipsoidY.xyz, localPos.xyz ); + ellipsoid.z = dot( $woundEllipsoidZ.xyz, localPos.xyz ); + float distToEllipsoid = length( ellipsoid ) - 1.0f; + + clipInfo.w = min( wound3A, wound3B ); + clipInfo.w = min( clipInfo.w, wound3C ); + clipInfo.w = min( clipInfo.w, wound3D ); + clipInfo.w = min( clipInfo.w, wound3E ); + clipInfo.w = min( clipInfo.w, wound3F ); + clipInfo.w = min( clipInfo.w, wound3G ); + clipInfo.w = min( clipInfo.w, wound3H ); + clipInfo.w = min( clipInfo.w, distToEllipsoid ); + + clipInfo.z = min( min( wound3I, wound3J ), clipInfo.w ); +} +#endtemplate + +/* +================================================================================== +APPLY_GORE_CLIP_SPHERES +================================================================================== +*/ +#template APPLY_GORE_CLIP_SPHERES( woundClip, woundMap ) +{ + float clipValue = woundClip + ( woundMap.w - 0.5 ) * 0.1; + + //-- dissolve effect + //if ( $modelFade.x < 1.0f ) { + // float4 mask = tex2D( $impDissolveTexture, fragment.texcoord7.xy ); + // float dissolve = 1.0f - $modelFade.x; + // float dMask = mask.x - 0.01 - ( dissolve ); + // clipValue = min( clipValue, dMask ); + //} + //-- dissolve effect + clip( clipValue ); +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/interaction.inc b/bin/base/decls/renderprogs/includes/interaction.inc new file mode 100644 index 0000000..066f1dd --- /dev/null +++ b/bin/base/decls/renderprogs/includes/interaction.inc @@ -0,0 +1,1225 @@ + +/* +================================================================================== +INTERACTION_VERTEX + +output: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyz is the normal transform 3 + texcoord 6.xyzw is the shadow buffer coordinates +================================================================================== +*/ +#template INTERACTION_VERTEX() +{ + // texture 0 has four texgens for light projection and falloff + result.texcoord0.x = dot4( position, $lightProjectionS ); + result.texcoord0.y = dot4( position, $lightProjectionT ); + result.texcoord0.z = dot4( position, $lightProjectionR ); + result.texcoord0.w = dot4( position, $lightProjectionQ ); + + // Convert back from 16 bit vertex elements. + float4 texcoord0 = ( vertex.texcoord0.xyxy * $vertexStScaleBias.xyxy + $vertexStScaleBias.zwzw ) + skinOffsets.xyzw; + + // texture 1 takes the base texture coordinates + result.texcoord1 = texcoord0; + + float4 worldPosition; + worldPosition.x = dot4( position, $modelMatrixX ); + worldPosition.y = dot4( position, $modelMatrixY ); + worldPosition.z = dot4( position, $modelMatrixZ ); + worldPosition.w = dot4( position, $modelMatrixW ); + + // texture 2 takes the global position + result.texcoord2.x = worldPosition.x; + result.texcoord2.y = worldPosition.y; + result.texcoord2.z = worldPosition.z; + result.texcoord2.w = - dot4( worldPosition, $viewMatrixZ ); + + //transform the local space vectors to world space + result.texcoord3.x = dot3( tangent, $modelMatrixX ); + result.texcoord3.y = dot3( bitangent, $modelMatrixX ); + result.texcoord3.z = dot3( normal, $modelMatrixX ); + result.texcoord3.w = 1.0; + + result.texcoord4.x = dot3( tangent, $modelMatrixY ); + result.texcoord4.y = dot3( bitangent, $modelMatrixY ); + result.texcoord4.z = dot3( normal, $modelMatrixY ); + result.texcoord4.w = 1.0; + + result.texcoord6.x = dot3( tangent, $modelMatrixZ ); + result.texcoord6.y = dot3( bitangent, $modelMatrixZ ); + result.texcoord6.z = dot3( normal, $modelMatrixZ ); + result.texcoord6.w = 1.0; + +#ifndef NOSHADOW + // texcoord 5 has the shadow buffer texcoords + // transform local space xyz into light space + result.texcoord5.x = dot4( position, $localToLightS ); + result.texcoord5.y = dot4( position, $localToLightT ); + result.texcoord5.z = dot4( position, $localToLightR ); + result.texcoord5.w = dot4( position, $localToLightQ ); +#endif + + // position + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); +} +#endtemplate + +/* +================================================================================== +INTERACTION_FRAGMENT_BASIC + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_BASIC( shadow ) +{ + //-------- non-wrapping virtual texture lookup ------------ + float2 texcoord = fragment.texcoord1.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + + //--------------------------------------------------------------- + // load the virtual textures + //--------------------------------------------------------------- +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + specularPage.xyz = ScaleSpecular( specularPage.xyz, bumpPage.z ); + bumpPage.z = 0; + + //--------------------------------------------------------------- + // derive localNormal, then transform to a global normal + //--------------------------------------------------------------- + + float3 localNormal = float3( ( bumpPage.wy * 2.0 ) - 1.0, 0.0 ); + + // derive the localNormal.z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + float3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalNormal = normalize( globalNormal ); + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + float3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + float3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter, the dor with the surface + // normal, and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + + half3 light; + { + float3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( lightTexCoord.z, 0.5 ) ); + + light = _float3( dot3( toLight, globalNormal ) ); + + // modulate by the light projection and falloff + light *= lpm.xyz * lfm.xyz; + + // modulate by the light color + light *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + light *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + half3 specular; + { +#if 0 + //--------------------------------------------------------------- + // calculate the static specular at this point + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half3 reflection; + reflection = ( 2.0 * globalNormal * dot3( globalNormal, toLight ) ) - toLight; + + // Use the absolute value of the dot, so we get static + // highlights on both sides of objects. Oh, the horror! :-) + float specularD = abs( dot3( reflection, $staticSpecularVector ) ); + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 to 64 scale + float power = bumpPage.x * 64; + + float specularStrength = $staticSpecularScale.x * pow( specularD, power ); + + specular = specularStrength; +#else + //--------------------------------------------------------------- + // sample envColor from the environment map + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - bumpPage.x ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * specularPage.xyz * $newSpecularScale.xyz; +#endif + } + + //--------------------------------------------------------------- + // covert the diffuse from YCoCg + //--------------------------------------------------------------- + half4 diffuse; + { + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + diffuse.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + diffuse.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + diffuse.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + diffuse.w = 1.0; + diffuse.xyz *= $newDiffuseScale.xyz * 2.0; + } + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + half3 color = light * ( specular + diffuse.xyz ); + + result.color.rgb = color; + result.color.a = 1; +} +#endtemplate + +/* +================================================================================== +INTERACTION_FRAGMENT_GRAZING + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_GRAZING( shadow ) +{ + //-------- non-wrapping virtual texture lookup ------------ + float2 texcoord = fragment.texcoord1.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + + //--------------------------------------------------------------- + // load the virtual textures + //--------------------------------------------------------------- +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + specularPage.xyz = ScaleSpecular( specularPage.xyz, bumpPage.z ); + bumpPage.z = 0; + + //--------------------------------------------------------------- + // derive localNormal, then transform to a global normal + //--------------------------------------------------------------- + + float3 localNormal = float3( ( bumpPage.wy * 2.0 ) - 1.0, 0.0 ); + + // derive the localNormal.z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + float3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalNormal = normalize( globalNormal ); + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + float3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + float3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter, the dor with the surface + // normal, and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + + half3 light; + { + float3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( lightTexCoord.z, 0.5 ) ); + + light = _float3( dot3( toLight, globalNormal ) ); + + // modulate by the light projection and falloff + light *= lpm.xyz * lfm.xyz; + + // modulate by the light color + light *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + light *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + half3 specular; + { +#if 0 + //--------------------------------------------------------------- + // calculate the static specular + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half3 reflection; + reflection = ( 2.0 * globalNormal * dot3( globalNormal, toLight ) ) - toLight; + + // Use the absolute value of the dot, so we get static + // highlights on both sides of objects. Oh, the horror! :-) + float specularD = abs( dot3( reflection, $staticSpecularVector ) ); + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 to 64 scale + float power = bumpPage.x * 64; + + float specularStrength = $staticSpecularScale.x * pow( specularD, power ); + + specular = specularStrength; +#else + //--------------------------------------------------------------- + // sample envColor from the environment map + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - bumpPage.x ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * $newSpecularScale.xyz; +#endif + } + + //--------------------------------------------------------------- + // covert the diffuse from YCoCg + //--------------------------------------------------------------- + half4 diffuse; + { + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + diffuse.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + diffuse.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + diffuse.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + diffuse.w = 1.0; + } + + //--------------------------------------------------------------- + // Calculate the light grazing fraction + //--------------------------------------------------------------- + + float graze = dot3( toViewer, globalNormal ); + graze = saturate( ( $viewGraze.x - graze ) / ( $viewGraze.x + 0.0001 ) ); + + // The diffuse color will be a lerp between the diffuseMap and grazingDiffuseColor + // and a modulate by the constant diffuse factor ( automatically scale newDiffuseScale + // by 2.0 to match the baked-in behavior ) + half3 grazingDiffuse = lerp( diffuse.xyz, $grazingDiffuseColor.xyz, graze ); + half3 grazingSpecular = lerp( specularPage.xyz, $grazingSpecularColor.xyz, graze ); + + half3 color = light * ( specular * grazingSpecular + grazingDiffuse * $newDiffuseScale.xyz * 2.0 ); + + result.color.rgb = color; + result.color.a = 1; +} +#endtemplate + +/* +================================================================================== +INTERACTION_FRAGMENT_SIMPLE + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_SIMPLE( shadow ) +{ + //-------- non-wrapping virtual texture lookup ------------ + float2 texcoord = fragment.texcoord1.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + + //--------------------------------------------------------------- + // load the virtual textures + //--------------------------------------------------------------- +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + specularPage.xyz = ScaleSpecular( specularPage.xyz, bumpPage.z ); + bumpPage.z = 0; + + //--------------------------------------------------------------- + // derive localNormal, then transform to a global normal + //--------------------------------------------------------------- + + float3 localNormal = float3( ( bumpPage.wy * 2.0 ) - 1.0, 0.0 ); + + // derive the localNormal.z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + float3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalNormal = normalize( globalNormal ); + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + float3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + float3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter, the dor with the surface + // normal, and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + + half3 light; + { + float3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( lightTexCoord.z, 0.5 ) ); + + light = _float3( dot3( toLight, globalNormal ) ); + + // modulate by the light projection and falloff + light *= lpm.xyz * lfm.xyz; + + // modulate by the light color + light *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + light *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + //--------------------------------------------------------------- + // sample envColor from the environment map + //--------------------------------------------------------------- + + half3 specular; + { + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shinny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - bumpPage.x ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * specularPage.xyz * $newSpecularScale.xyz; + } + + half3 diffuse = _float3( 1.0f ); + + half3 color = light * ( specular + diffuse ); + + result.color.xyz = color; + result.color.w = 1.0f; +} +#endtemplate + +/* +================================================================================== +INTERACTION_FRAGMENT_EYE + +For the cornea sclera we scale the diffuse towards black using the alpha so that +the hole into the iris doesn't give off any diffuse color. +We do keep the specular as is since we want the rounded glass shape the eye over +the actual iris rendered underneath. + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_EYE( shadow ) +{ + half power = 1.0; + + half4 sampleDiffuse = tex2D( $spareDiffuseMap, fragment.texcoord1.xy ); + half4 sampleSpecular = tex2D( $spareSpecularMap, fragment.texcoord1.xy ); + half4 sampleBump = tex2D( $spareBumpMap, fragment.texcoord1.xy ); + + //--------------------------------------------------------------- + // derive localNormal, then transform to a global normal + //--------------------------------------------------------------- + + half3 localNormal = half3( ( sampleBump.wy * 2.0 ) - 1.0, 0.0 ); + + // derive the localNormal.z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + half3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalNormal = normalize( globalNormal ); + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + half3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + half3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter, the dor with the surface + // normal, and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + + half3 light; + { + half3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, half2( lightTexCoord.z, 0.5 ) ); + + light = _half3( saturate( dot3( toLight, globalNormal ) + 0.1 ) ); + + // modulate by the light projection and falloff + light *= lpm.xyz * lfm.xyz; + + // modulate by the light color + light *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + light *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + half3 specular; + { + //--------------------------------------------------------------- + // sample envColor from the environment map + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + + // power factor is stored in ________ as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - power ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * sampleSpecular.xyz * $newSpecularScale.xyz; + } + + { + half3 toCameraLight = normalize( toViewer + half3( 0.0, 0.0, 6.5 ) ); + half coss = saturate( dot3( globalNormal, toCameraLight ) ); + specular += _half3( saturate( pow( coss, $eyeHighlightPowLevel.x ) * $eyeHighlightPowLevel.y ) ); + } + + half3 diffuse = sampleDiffuse.xyz; + + // Scale diffuse so that we get black where the iris is supposed to be. + diffuse *= _half3( saturate( ceil( sampleDiffuse.w - 0.5 ) ) ); + + half3 color = light * ( diffuse + specular ); + + result.color.xyz = color; + result.color.w = 1; +} +#endtemplate + + +/* +================================================================================== +INTERACTION_FRAGMENT_SKIN + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse-bump / diffuse / specular / ambient-occlusion texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_SKIN( shadow ) +{ + //-------- non-wrapping virtual texture lookup ------------ + half2 texcoord = fragment.texcoord1.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + half3 physCoord = VmtrVirtualToPhysical( texcoord ); + + //--------------------------------------------------------------- + // load the virtual textures + //--------------------------------------------------------------- +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + half2 dx = ddx( texcoord.xy ) * physCoord.z; + half2 dy = ddy( texcoord.xy ) * physCoord.z; + + half4 sampleSpecular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + half4 sampleYCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + half4 sampleSpecularNormal = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + half4 sampleSpecular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + half4 sampleYCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + half4 sampleSpecularNormal = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + //--------------------------------------------------------------- + // load the diffuse normal and ambient occlusion + //--------------------------------------------------------------- + half4 sampleDiffuseNormal = tex2D( $spareBumpMap, fragment.texcoord1.xy ); + half4 sampleAmbientOcclusion = tex2D( $transMap, fragment.texcoord1.xy ); + + float occlusionRes; + half4 bumpRes; +#ifdef INTERWRINKLE + SAMPLE_WRINKLEMAPS( occlusionRes, bumpRes, sampleAmbientOcclusion, sampleDiffuseNormal, fragment.texcoord1 ); +#else //INTERWRINKLE + occlusionRes = sampleAmbientOcclusion.g; + bumpRes = sampleDiffuseNormal; +#endif //INTERWRINKLE + + //--------------------------------------------------------------- + // convert the diffuse from YCoCg + //--------------------------------------------------------------- + half4 surfaceDiffuse; + { + sampleYCoCg.z = ( sampleYCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + sampleYCoCg.z = 1.0 / sampleYCoCg.z; + sampleYCoCg.xy *= sampleYCoCg.z; + surfaceDiffuse.x = dot4( sampleYCoCg, matrixCoCg1YtoRGB1X ); + surfaceDiffuse.y = dot4( sampleYCoCg, matrixCoCg1YtoRGB1Y ); + surfaceDiffuse.z = dot4( sampleYCoCg, matrixCoCg1YtoRGB1Z ); + surfaceDiffuse.w = 1.0; + } + + //--------------------------------------------------------------- + // scale specular + //--------------------------------------------------------------- + half3 surfaceSpecular; + { + surfaceSpecular.xyz = ScaleSpecular( sampleSpecular.xyz, sampleSpecularNormal.z ); + sampleSpecularNormal.z = 0; + } + + //--------------------------------------------------------------- + // calculate global diffuse normal + //--------------------------------------------------------------- + half3 globalDiffuseNormal; + { + half3 localNormal = half3( ( bumpRes.wy * 2.0 ) - 1.0, 0.0 ); + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + globalDiffuseNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalDiffuseNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalDiffuseNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalDiffuseNormal = normalize( globalDiffuseNormal ); + } + + //--------------------------------------------------------------- + // calculate global specular normal + //--------------------------------------------------------------- + half3 globalSpecularNormal; + { + half3 localNormal = half3( ( sampleSpecularNormal.wy * 2.0 ) - 1.0, 0.0 ); + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + globalSpecularNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalSpecularNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalSpecularNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalSpecularNormal = normalize( globalSpecularNormal ); + } + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + half3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + half3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // calculate and apply the diffuse light grazing + //--------------------------------------------------------------- + { + half grazeDiffuse = dot3( toViewer, globalDiffuseNormal ); + grazeDiffuse = saturate( ( $viewGraze.x - max( grazeDiffuse, -grazeDiffuse ) ) / max( $viewGraze.x, 0.0001 ) ); + surfaceDiffuse.xyz = lerp( surfaceDiffuse.xyz, $grazingDiffuseColor.xyz, grazeDiffuse ); + } + + //--------------------------------------------------------------- + // calculate and apply the specular light grazing + //--------------------------------------------------------------- + { + half grazeSpecular = dot3( toViewer, globalSpecularNormal ); + grazeSpecular = saturate( ( $viewGraze.x - max( grazeSpecular, -grazeSpecular ) ) / max( $viewGraze.x, 0.0001 ) ); + surfaceSpecular.xyz = lerp( surfaceSpecular.xyz, $grazingSpecularColor.xyz, grazeSpecular ); + } + + //--------------------------------------------------------------- + // apply specular reflection + //--------------------------------------------------------------- + { + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalSpecularNormal * dot3( globalSpecularNormal, toViewer ) ) - toViewer; + + // power factor is stored in sampleSpecularNormal.x as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - sampleSpecularNormal.x ) * 4.0 + $newPowerScale.x ); + + // sample envColor from the environment map + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + // apply + surfaceSpecular *= envColor; + } + + //--------------------------------------------------------------- + // diffuse light is the dot between the diffuse surface normal and the light, + // this is then used to lookup a warp value in a texture + //--------------------------------------------------------------- + half3 diffuseLight; + { + // pw-note: I get super weird artifacts on edges if I don't clamp them down, probably texture filtering? :( + // it's weird I don't get them in the skinVmtr programs though (?) + half cosd = max( min( dot3( toLight, globalDiffuseNormal ) * 0.5 + 0.5, 0.99 ), 0.01 ); + half3 diffuseWarp = tex2D( $textureMap, half2( cosd, 0.0 ) ).xyz; + + diffuseLight = diffuseWarp; + } + + //--------------------------------------------------------------- + // specular light is the dot between the specular surface normal and the light + //--------------------------------------------------------------- + half3 specularLight; + { + half coss = saturate( dot3( toLight, globalSpecularNormal ) ); + specularLight = _half3( coss ); + } + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + half3 lightColor; + { + half3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, half2( lightTexCoord.z, 0.5 ) ); + + // Modulate with ambient occlusion (this is not really correct) + lightColor = _float3( occlusionRes ); + + // modulate by the light projection and falloff + lightColor *= lpm.xyz * lfm.xyz; + + // modulate by the light color + lightColor *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + lightColor *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + //--------------------------------------------------------------- + // apply light scale on diffuse and specular + //--------------------------------------------------------------- + { + diffuseLight *= lightColor; + specularLight *= lightColor; + } + + //--------------------------------------------------------------- + // apply diffuse and specular scales + //--------------------------------------------------------------- + { + surfaceDiffuse.xyz *= $newDiffuseScale.xyz * 2.0; + surfaceSpecular.xyz *= $newSpecularScale.xyz; + } + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + half3 color = _half3( 0.0 ); + color += specularLight * surfaceSpecular.xyz; + color += diffuseLight * surfaceDiffuse.xyz; + + result.color.rgb = color; + result.color.a = 1; +} +#endtemplate + +/* +================================================================================== +INTERACTION_FRAGMENT_HAIR + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_HAIR( shadow ) +{ + float2 texcoord2 = fragment.texcoord7.xy; + + //--------------------------------------------------------------- + // load the coverage and clip pixel if not visible + //--------------------------------------------------------------- + half4 coverage; + { + coverage = tex2D( $transMap, texcoord2 ); + } + clip( coverage.w - 0.25 ); + + //-------- non-wrapping virtual texture lookup ------------ + float2 texcoord = fragment.texcoord1.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + + //--------------------------------------------------------------- + // load the virtual textures + //--------------------------------------------------------------- +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + half4 specularPage = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + half4 YCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + half4 bumpPage = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + specularPage.xyz = ScaleSpecular( specularPage.xyz, bumpPage.z ); + bumpPage.z = 0; + + //--------------------------------------------------------------- + // derive localNormal, then transform to a global normal + //--------------------------------------------------------------- + + float3 localNormal = float3( ( bumpPage.wy * 2.0 ) - 1.0, 0.0 ); + + // derive the localNormal.z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + float3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalNormal = normalize( globalNormal ); + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + float3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + float3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter, the dor with the surface + // normal, and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + + half3 light; + { + float3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( lightTexCoord.z, 0.5 ) ); + + light = _float3( dot3( toLight, globalNormal ) ); + + // modulate by the light projection and falloff + light *= lpm.xyz * lfm.xyz; + + // modulate by the light color + light *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + light *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + half3 specular; + { + //--------------------------------------------------------------- + // sample envColor from the environment map + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - bumpPage.x ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * specularPage.xyz * $newSpecularScale.xyz; + } + + //--------------------------------------------------------------- + // covert the diffuse from YCoCg + //--------------------------------------------------------------- + half4 diffuse; + { + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + diffuse.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + diffuse.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + diffuse.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + diffuse.w = 1.0; + diffuse.xyz *= $newDiffuseScale.xyz * 2.0; + } + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + half3 color = light * ( specular + diffuse.xyz ); + + result.color.rgb = color; + result.color.a = 1; +} +#endtemplate + +/* +================================================================================== +INTERACTION_FRAGMENT_BASIC_NOVMTR + +Should the color of the light influence the environment color? probably. + +vertex input: + texcoord 0.xyzw is the light projection / falloff texture coordinates + texcoord 1.xy is the bump / diffuse / specular texture coordinate + texcoord 2.xyz is the global vertex position after model matrix transform + texcoord 3.xyz is the normal transform 1 + texcoord 4.xyz is the normal transform 2 + texcoord 5.xyzw is the shadow buffer coordinates + texcoord 6.xyz is the normal transform 3 + + in float shadow; + +render parms: + globalViewOrigin + globalLightOrigin +================================================================================== +*/ +#template INTERACTION_FRAGMENT_BASIC_NOVMTR( shadow ) +{ + float2 texcoord = fragment.texcoord1.xy; + + //--------------------------------------------------------------- + // sample diffuse, bump, specular textures + //--------------------------------------------------------------- + half4 sampleDiffuse = tex2D( $spareDiffuseMap, texcoord ); + half4 sampleSpecular = tex2D( $spareSpecularMap, texcoord ); + half4 sampleBump = tex2D( $spareBumpMap, texcoord ); + + //--------------------------------------------------------------- + // sample morph diffuse, bump, specular textures and interpolate + //--------------------------------------------------------------- + + BRANCH if ( $useSkinBlending.x > 0.0 ) { // fragment.htexcoord3.w > 0.0 + half4 sampleDiffuse2 = tex2D( $spareDiffuseMap2, texcoord ); + half4 sampleSpecular2 = tex2D( $spareSpecularMap2, texcoord ); + half4 sampleBump2 = tex2D( $spareBumpMap2, texcoord ); + + half morphScale = fragment.htexcoord3.w; + sampleDiffuse = lerp( sampleDiffuse, sampleDiffuse2, morphScale ); + sampleSpecular = lerp( sampleSpecular, sampleSpecular2, morphScale ); + sampleBump = lerp( sampleBump, sampleBump2, morphScale ); + } + + //--------------------------------------------------------------- + // derive localNormal, then transform to a global normal + //--------------------------------------------------------------- + + float3 localNormal = float3( ( sampleBump.wy * 2.0 ) - 1.0, 0.0 ); + + // derive the localNormal.z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + float3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord3 ); + globalNormal.y = dot3( localNormal, fragment.htexcoord4 ); + globalNormal.z = dot3( localNormal, fragment.htexcoord6 ); + globalNormal = normalize( globalNormal ); + + //--------------------------------------------------------------- + // normalize the directions to the light and viewer + //--------------------------------------------------------------- + float3 toLight = normalize( $globalLightOrigin.xyz - fragment.texcoord2.xyz ); + float3 toViewer = normalize( $globalViewOrigin.xyz - fragment.texcoord2.xyz ); + + //--------------------------------------------------------------- + // Incoming light color is the product of two light projection + // texture maps, the light color parameter, the dor with the surface + // normal, and the faded shadow factor + // optimize: if we assumed one or both of the light maps are monochrome, + // we could save some math. + //--------------------------------------------------------------- + + half3 light; + { + float3 lightTexCoord = fragment.htexcoord0.xyz / fragment.htexcoord0.w; + + half4 lpm = h4tex2D( $lightProjectMap, lightTexCoord.xy ); + half4 lfm = h4tex2D( $lightFalloffMap, float2( lightTexCoord.z, 0.5 ) ); + + light = _float3( dot3( toLight, globalNormal ) ); + + // modulate by the light projection and falloff + light *= lpm.xyz * lfm.xyz; + + // modulate by the light color + light *= $lightColor.xyz; + + // modulate by the shadow factor adjusted by the shadow fade + light *= ( shadow * $shadowFade.x ) + $shadowFade.y; + } + + half3 specular; + half power = 1.0; + { +#if 0 + //--------------------------------------------------------------- + // calculate the static specular at this point + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half3 reflection; + reflection = ( 2.0 * globalNormal * dot3( globalNormal, toLight ) ) - toLight; + + // Use the absolute value of the dot, so we get static + // highlights on both sides of objects. Oh, the horror! :-) + float specularD = abs( dot3( reflection, $staticSpecularVector ) ); + + // power factor is stored in __________ as 0.0 - 1.0, we want a 0 to 64 scale + float factor = power * 64; + + float specularStrength = $staticSpecularScale.x * pow( specularD, factor ); + + specular = specularStrength; +#else + //--------------------------------------------------------------- + // sample envColor from the environment map + //--------------------------------------------------------------- + + // reflection vector = 2 * N * ( N . V ) - V + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + + // power factor is stored in __________ as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + reflection.w = floor( ( 1.0 - power ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + specular = envColor * sampleSpecular.xyz * $newSpecularScale.xyz; +#endif + } + + //--------------------------------------------------------------- + // scale the diffuse from texture sample + //--------------------------------------------------------------- + half4 diffuse; + { + diffuse.xyz = sampleDiffuse.xyz * $newDiffuseScale.xyz * 2.0; + diffuse.w = 1.0; + } + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + half3 color = light * ( specular + diffuse.xyz ); + + result.color.rgb = color; + result.color.a = 1; +} +#endtemplate + diff --git a/bin/base/decls/renderprogs/includes/luminance.inc b/bin/base/decls/renderprogs/includes/luminance.inc new file mode 100644 index 0000000..6313525 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/luminance.inc @@ -0,0 +1,40 @@ + +/* +================================================================================== +Equations to convert color values to luminance values using various ITU standards. +================================================================================== +*/ + +/* +================================================================================== +ITU HDR standard BT-709-5 +EY? = 0.2126 ER? + 0.7152 EG? + 0.0722 EB +www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.709-5-200204-I!!PDF-E.pdf + +int float colorRGB; +out float luminance; +================================================================================== +*/ +#template Luminance_BT709( luminance, colorRGB ) +{ + const float3 ituBT709 = float3( 0.2126, 0.7152, 0.0722 ); + lumiancne = dot( colorRGB, ituBT709 ); +} +#endtemplate + +/* +================================================================================== +ITU HDR standard BT-601-6 +EY ? = 0.299 ER ? + 0.587 EG ? + 0.114 EB +www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.601-6-200701-S!!PDF-E.pdf + +int float colorRGB; +out float luminance; +================================================================================== +*/ +#template Luminance_BT601( luminance, colorRGB ) +{ + const float3 ituBT601 = float3( 0.299, 0.587, 0.114 ); + luminance = dot( colorRGB, ituBT601 ); +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/shadow.inc b/bin/base/decls/renderprogs/includes/shadow.inc new file mode 100644 index 0000000..ecba0b6 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/shadow.inc @@ -0,0 +1,191 @@ + +/* +================================================================================== +SAMPLE_SHADOW_BUFFER_PCF + +in float4 shadowTexCoord; +out float shadow; +================================================================================== +*/ +#template SAMPLE_SHADOW_BUFFER_PCF( shadow, shadowTexCoord ) +{ +#if defined( XBOX ) + // The Xbox 360 does not implement percentage-closer-filtering (PCF) in hardware. + // Instead the following implements bilinear PCF between four point samples. + float3 texCoord = shadowTexCoord; + float2 texelXY = texCoord.xy * $shadowBufferResolution.x - _float2( 0.5 ); + float2 floorXY = floor( texelXY ); + float2 fracXY = texelXY - floorXY; + + float step = $shadowBufferResolution.y; + float2 baseXY = ( floorXY + _float2( 0.5 ) ) * $shadowBufferResolution.y; + + float4 samples; + samples.x = tex2D( $lightDepthMap, baseXY + float2( 0*step, 0*step ) ).x; + samples.y = tex2D( $lightDepthMap, baseXY + float2( 1*step, 0*step ) ).x; + samples.z = tex2D( $lightDepthMap, baseXY + float2( 1*step, 1*step ) ).x; + samples.w = tex2D( $lightDepthMap, baseXY + float2( 0*step, 1*step ) ).x; + + float4 pcf = float4( greaterThanEqual( ( _float4( 1.0 ) - samples ), texCoord.zzzz ) ); + + float4 weights; + weights.x = ( 1.0 - fracXY.x ) * ( 1.0 - fracXY.y ); + weights.y = ( fracXY.x ) * ( 1.0 - fracXY.y ); + weights.z = ( fracXY.x ) * ( fracXY.y ); + weights.w = ( 1.0 - fracXY.x ) * ( fracXY.y ); + + shadow = dot4( pcf, weights ); +#else + shadow = shadow2Ddepth( $lightDepthCompareMap, shadowTexCoord ); +#endif +} +#endtemplate + +/* +================================================================================== +SAMPLE_SHADOW_BUFFER_4ROOKS_PCF + +in float4 shadowTexCoord; +out float shadow; +================================================================================== +*/ +#template SAMPLE_SHADOW_BUFFER_4ROOKS_PCF( shadow, shadowTexCoord ) +{ + float s = $shadowBufferResolution.y * 2.0; + + float4 shadow4; + SAMPLE_SHADOW_BUFFER_PCF( shadow4.x, shadowTexCoord.xyz + s * float3( -0.375, -0.125, 0 ) ); + SAMPLE_SHADOW_BUFFER_PCF( shadow4.y, shadowTexCoord.xyz + s * float3( -0.125, 0.375, 0 ) ); + SAMPLE_SHADOW_BUFFER_PCF( shadow4.z, shadowTexCoord.xyz + s * float3( 0.125, -0.375, 0 ) ); + SAMPLE_SHADOW_BUFFER_PCF( shadow4.w, shadowTexCoord.xyz + s * float3( 0.375, 0.125, 0 ) ); + + shadow = dot( shadow4, _float4( 0.25 ) ); +} +#endtemplate + +/* +================================================================================== +SAMPLE_VARIANCE_SHADOW_MAP + +in float4 shadowTexCoord; +out float shadow; + +$varianceShadowMapSettings.x = minimumVariance +$varianceShadowMapSettings.y = deltaScale +$varianceShadowMapSettings.z = bleedReduction +$varianceShadowMapSettings.w = 1.0 / ( 1.0 - bleedReduction ) +================================================================================== +*/ +#template SAMPLE_VARIANCE_SHADOW_MAP( shadow, shadowTexCoord ) +{ + // Fetch the moments. + float2 moments = tex2D( $lightDepthVarianceMap, shadowTexCoord.xy ).xy; + + // Compute variance. + float variance = moments.y - ( moments.x * moments.x ); + variance = max( variance, $varianceShadowMapSettings.x ); + + // Compute probabilistic upper bound. + float d = $varianceShadowMapSettings.y * saturate( shadowTexCoord.z - moments.x ); + float p_max = saturate( variance / ( variance + d * d ) ); + + // Remove the [0, bleedReduction] tail and linearly rescale (bleedReduction, 1]. + shadow = saturate( ( p_max - $varianceShadowMapSettings.z ) * $varianceShadowMapSettings.w ); +} +#endtemplate + +/* +================================================================================== +SAMPLE_POINT_LIGHT_SHADOW + +in float4 shadowTexCoord; +out float shadow; +================================================================================== +*/ +#template SAMPLE_POINT_LIGHT_SHADOW( shadow, shadowTexCoord ) +{ + // calculate the maximum absolute shadow texture coordinate + float3 absTexCoord = abs( shadowTexCoord.xyz ); + float3 maxTexCoord = max( absTexCoord.xyz, max( absTexCoord.yzx, absTexCoord.zxy ) ); + + // create a vector with a 1.0 for the first largest absolute component and 0.0 for the other components + float4 axis; + axis.xyz = float3( greaterThanEqual( absTexCoord, maxTexCoord ) ); // set 1.0 for any component equal to the max + axis.yz = saturate( axis.yz - axis.xx - axis.xy ); // make sure only one component is set to 1.0 + axis.w = 0.0; + + // rotate the shadow texture coordinate from one of the cube sides to the flat shadow buffer + float4 rotate = axis.yxxy + axis.zwzw; + float4 flatTexCoord; + flatTexCoord.x = dot( rotate.xy, shadowTexCoord.xz ); + flatTexCoord.y = dot( rotate.zw, shadowTexCoord.yz ); + flatTexCoord.z = -maxTexCoord.x; + flatTexCoord.w = shadowTexCoord.w; + + // calculate the bias for the shadow buffer sub-image that corresponds to this axis + float sBias = 0.5 + dot( axis.xyz, float3( greaterThanEqual( float3( 0, 0, 0 ), shadowTexCoord.xyz ) ) ); + float tBias = 0.5 + dot( axis.xyz, float3( 0, 1, 2 ) ); + + float4 faceTexCoord; + faceTexCoord.x = dot4( flatTexCoord, $shadowProjectionS + sBias * $shadowProjectionQ ); + faceTexCoord.y = dot4( flatTexCoord, $shadowProjectionT + tBias * $shadowProjectionQ ); + faceTexCoord.z = dot4( flatTexCoord, $shadowProjectionR ); + faceTexCoord.w = dot4( flatTexCoord, $shadowProjectionQ ); + faceTexCoord.xyz /= faceTexCoord.w; + + faceTexCoord.xy *= $shadowBufferResolution.z; + + SAMPLE_SHADOW_BUFFER_4ROOKS_PCF( shadow, faceTexCoord ); +} +#endtemplate + +/* +================================================================================== +SAMPLE_SPOT_LIGHT_SHADOW + +in float4 shadowTexCoord; +out float shadow; +================================================================================== +*/ +#template SAMPLE_SPOT_LIGHT_SHADOW( shadow, shadowTexCoord ) +{ + float3 texCoord = shadowTexCoord.xyz / shadowTexCoord.w; + + SAMPLE_SHADOW_BUFFER_4ROOKS_PCF( shadow, texCoord ); +} +#endtemplate + +/* +================================================================================== +SAMPLE_PARALLEL_LIGHT_SHADOW + +in float4 shadowTexCoord; +in float viewZ; +out float shadow; +================================================================================== +*/ +#template SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, shadowTexCoord, viewZ ) +{ + float3 texCoord = shadowTexCoord.xyz / shadowTexCoord.w; + + float sliceLOD = log2( max( 1.0, viewZ * $parallelLightSliceScale.x ) ) * $parallelLightSliceScale.z; + float sliceLODi = floor( sliceLOD ); + float2 slice = min( float2( 3.0, 3.0 ), float2( sliceLODi, sliceLODi ) + float2( 0.0, 1.0 ) ); + float2 stScale = exp2( - slice * $parallelLightSliceScale.y ); + float4 stBias; + stBias.xy = 0.25 + frac( slice * 0.5 ); + stBias.zw = 0.25 + floor( slice * 0.5 ) * 0.5; + float4 sliceTexCoords = texCoord.xxyy * stScale.xyxy + stBias; + float3 slice1TexCoord = float3( sliceTexCoords.x, sliceTexCoords.z, texCoord.z ); + float3 slice2TexCoord = float3( sliceTexCoords.y, sliceTexCoords.w, texCoord.z ); + float fraction = saturate( ( slice.y - sliceLOD ) * $parallelLightSliceScale.w ); + + float shadow1; + SAMPLE_SHADOW_BUFFER_4ROOKS_PCF( shadow1, slice1TexCoord ); + + float shadow2; + SAMPLE_SHADOW_BUFFER_4ROOKS_PCF( shadow2, slice2TexCoord ); + + shadow = lerp( shadow2, shadow1, fraction ); +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/unique.inc b/bin/base/decls/renderprogs/includes/unique.inc new file mode 100644 index 0000000..dd377d9 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/unique.inc @@ -0,0 +1,204 @@ + +/* +================================================================================== +FETCH_UNIQUE +================================================================================== +*/ +#template FETCH_UNIQUE( sampleSpecular, sampleYCoCg, sampleNormal ) +{ + float3 physCoord = UniqueVirtualToPhysical( fragment.texcoord0.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( fragment.texcoord0.xy ) * physCoord.z; + float2 dy = ddy( fragment.texcoord0.xy ) * physCoord.z; + + sampleSpecular = texPhys( $physicalUniquePagesMap0, physCoord.xy, dx, dy ); + sampleYCoCg = texPhys( $physicalUniquePagesMap1, physCoord.xy, dx, dy ); + sampleNormal = texPhys( $physicalUniquePagesMap2, physCoord.xy, dx, dy ); +#else + sampleSpecular = h4texPhys( $physicalUniquePagesMap0, physCoord.xy ); + sampleYCoCg = h4texPhys( $physicalUniquePagesMap1, physCoord.xy ); + sampleNormal = h4texPhys( $physicalUniquePagesMap2, physCoord.xy ); +#endif +} +#endtemplate + +/* +================================================================================== +FETCH_UNIQUE_BLEND + +uses fragment.texcoord0; +out half4 sampleSpecular; +out half4 sampleYCoCg; +out half4 sampleNormal; +out half2 feedbackTexCoord; +out half morphScale; +================================================================================== +*/ +#template FETCH_UNIQUE_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, morphScale ) +{ + float4 texCoord = fragment.texcoord0; + + float3 physCoord = UniqueVirtualToPhysical( texCoord.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texCoord.xy ) * physCoord.z; + float2 dy = ddy( texCoord.xy ) * physCoord.z; + + sampleSpecular = texPhys( $physicalUniquePagesMap0, physCoord.xy, dx, dy ); + sampleYCoCg = texPhys( $physicalUniquePagesMap1, physCoord.xy, dx, dy ); + sampleNormal = texPhys( $physicalUniquePagesMap2, physCoord.xy, dx, dy ); +#else + sampleSpecular = texPhys( $physicalUniquePagesMap0, physCoord.xy ); + sampleYCoCg = texPhys( $physicalUniquePagesMap1, physCoord.xy ); + sampleNormal = texPhys( $physicalUniquePagesMap2, physCoord.xy ); +#endif + + feedbackTexCoord = texCoord.xy; + + /* blend in another texture based on the morph map */ + { + float3 physCoord = UniqueVirtualToPhysical( texCoord.zw ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texCoord.zw ) * physCoord.z; + float2 dy = ddy( texCoord.zw ) * physCoord.z; + + float4 sampleSpecular2 = texPhys( $physicalUniquePagesMap0, physCoord.xy, dx, dy ); + float4 sampleYCoCg2 = texPhys( $physicalUniquePagesMap1, physCoord.xy, dx, dy ); + float4 sampleNormal2 = texPhys( $physicalUniquePagesMap2, physCoord.xy, dx, dy ); +#else + float4 sampleSpecular2 = texPhys( $physicalUniquePagesMap0, physCoord.xy ); + float4 sampleYCoCg2 = texPhys( $physicalUniquePagesMap1, physCoord.xy ); + float4 sampleNormal2 = texPhys( $physicalUniquePagesMap2, physCoord.xy ); +#endif + + sampleSpecular = lerp( sampleSpecular, sampleSpecular2, morphScale ); + sampleYCoCg = lerp( sampleYCoCg, sampleYCoCg2, morphScale ); + sampleNormal = lerp( sampleNormal, sampleNormal2, morphScale ); + + float2 fp = fragment.position.xy * $positionToFeedback.zw; + float2 xy = frac( fp ) - 0.5; + feedbackTexCoord = ( xy.x * xy.y < 0.0 ) ? texCoord.xy : texCoord.zw; + } +} +#endtemplate + + +/* +================================================================================== +FETCH_UNIQUE_YCOCG +================================================================================== +*/ +#template FETCH_UNIQUE_YCOCG( sampleYCoCg ) +{ + float3 physCoord = UniqueVirtualToPhysical( fragment.texcoord0.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( fragment.texcoord0.xy ) * physCoord.z; + float2 dy = ddy( fragment.texcoord0.xy ) * physCoord.z; + + sampleYCoCg = texPhys( $physicalUniquePagesMap1, physCoord.xy, dx, dy ); +#else + sampleYCoCg = texPhys( $physicalUniquePagesMap1, physCoord.xy ); +#endif +} +#endtemplate + +/* +================================================================================== +FETCH_DIFFUSE_ONLY +================================================================================== +*/ +#template FETCH_DIFFUSE_ONLY( sampleYCoCg ) +{ + float3 physCoord = UniqueDiffuseOnlyVirtualToPhysical( fragment.texcoord0.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( fragment.texcoord0.xy ) * physCoord.z; + float2 dy = ddy( fragment.texcoord0.xy ) * physCoord.z; + + sampleYCoCg = texPhys( $physicalUniqueDiffuseOnlyPagesMap1, physCoord.xy, dx, dy ); +#else + sampleYCoCg = texPhys( $physicalUniqueDiffuseOnlyPagesMap1, physCoord.xy ); +#endif +} +#endtemplate + +/* +================================================================================== +FETCH_DIFFUSE_ONLY2 +================================================================================== +*/ +#template FETCH_DIFFUSE_ONLY2( sampleYCoCg ) +{ + float3 physCoord = UniqueDiffuseOnly2VirtualToPhysical( fragment.texcoord0.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( fragment.texcoord0.xy ) * physCoord.z; + float2 dy = ddy( fragment.texcoord0.xy ) * physCoord.z; + + sampleYCoCg = texPhys( $physicalUniqueDiffuseOnly2PagesMap1, physCoord.xy, dx, dy ); +#else + sampleYCoCg = texPhys( $physicalUniqueDiffuseOnly2PagesMap1, physCoord.xy ); +#endif +} +#endtemplate + +/* +================================================================================== +CALC_DIFFUSE_RGB +================================================================================== +*/ +#template CALC_DIFFUSE_RGB( diffuse, sampleYCoCg ) +{ + sampleYCoCg.z = ( sampleYCoCg.z * 31.875 ) + 1.0; /* z = z * 255.0/8.0 + 1.0 */ + sampleYCoCg.z = 1.0 / sampleYCoCg.z; + sampleYCoCg.xy *= sampleYCoCg.z; + diffuse.x = dot4( sampleYCoCg, matrixCoCg1YtoRGB1X ); + diffuse.y = dot4( sampleYCoCg, matrixCoCg1YtoRGB1Y ); + diffuse.z = dot4( sampleYCoCg, matrixCoCg1YtoRGB1Z ); + diffuse.w = 0.5; // how much to accept dim-shadows + + diffuse.xyz *= $newDiffuseScale.xyz; +} +#endtemplate + +/* +================================================================================== +APPLY_SPECULAR +================================================================================== +*/ +#template APPLY_SPECULAR( color, sampleSpecular, sampleNormal, localToGlobalX, localToGlobalY, localToGlobalZ, viewOriginToFragment ) +{ + /* Note that the optimized derivation of the localNormal below results */ + /* in a vector that is half-unit length! */ + half3 localNormal; + localNormal.xy = sampleNormal.wy - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); + + /* transform the normal into ambient map space */ + half3 globalNormal; + globalNormal.x = dot3( localNormal, localToGlobalX ); + globalNormal.y = dot3( localNormal, localToGlobalY ); + globalNormal.z = dot3( localNormal, localToGlobalZ ); + globalNormal = normalize( globalNormal ); + + /* calculate the specular reflection vector from viewer and globalNormal */ + half4 reflection; + reflection.xyz = viewOriginToFragment - ( globalNormal * dot3( viewOriginToFragment, globalNormal ) * 2.0 ); + + /* Power factor is stored in sampleNormal.x as 0.0 - 1.0 */ + /* We want a 0 | 1 | 2 | 3 mip value. */ + /* The artists really prefer white to be shiny instead of dull, so invert it here. */ + /* We could probably skip the floor, but I am wary of hardware / api rounding. */ + reflection.w = floor( ( 1.0 - sampleNormal.x ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + half3 specular = sampleSpecular.xyz * 8.0 / ( sampleNormal.z * 255.0 + 8.0 ); + + /* modulate by the environment mask map (specular channel) */ + color.xyz += envColor * specular * $newSpecularScale.xyz; +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/vertex.inc b/bin/base/decls/renderprogs/includes/vertex.inc new file mode 100644 index 0000000..84df9f1 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/vertex.inc @@ -0,0 +1,752 @@ + +/* +================================================================================== +CALC_TEXCOORDS + +uses vertex.texcoord0; + +out float4 texcoords; +================================================================================== +*/ +#template CALC_TEXCOORDS( texcoords ) +{ + // base coordinates modified by stScaleBias for 16 bit vertex elements + texcoords = ( vertex.texcoord0.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw ).xyxy; +} +#endtemplate + +/* +================================================================================== +CALC_TEXCOORDS_BLEND + +uses vertex.texcoord0; + +out float4 texcoords; +================================================================================== +*/ +#template CALC_TEXCOORDS_BLEND( texcoords ) +{ + // base coordinates modified by stScaleBias for 16 bit vertex elements + texcoords = ( vertex.texcoord0.xyxy * $vertexStScaleBias.xyxy + $vertexStScaleBias.zwzw ) + skinOffsets.xyzw; +} +#endtemplate + +/* +================================================================================== +CALC_POSITION + +uses vertex.position; + +out float4 resultPosition; +================================================================================== +*/ +#template CALC_POSITION( resultPosition ) +{ + // Convert back from 16 bit vertex elements. + float4 localPosition = vertex.position * $vertexXYZScale + $vertexXYZBias; + + resultPosition.x = dot4( localPosition, $mvpMatrixX ); + resultPosition.y = dot4( localPosition, $mvpMatrixY ); + resultPosition.z = dot4( localPosition, $mvpMatrixZ ); + resultPosition.w = dot4( localPosition, $mvpMatrixW ); +} +#endtemplate + +/* +================================================================================== +CALC_MUZZLE_FLASH_VECTOR + +uses MFOffset; + +out MFVector; +================================================================================== +*/ +#template CALC_MUZZLE_FLASH_VECTOR( MFOffset, MFVector ) +{ + //float3 globalPosition = _float4( 0.0 ); + //globalPosition.x = dot4( position, $modelMatrixX ); + //globalPosition.y = dot4( position, $modelMatrixY ); + //globalPosition.z = dot4( position, $modelMatrixZ ); + + float3 globalMFOffset = _float3( 0.0 ); + + //float3 altGlobalViewFwd = cross( $globalViewLeft.xyz, $globalViewUp.xyz ); + //globalMFOffset.xyz = altGlobalViewFwd.xyz * _float3( MFOffset.x ); + + globalMFOffset.xyz = $globalViewFwd.xyz * _float3( MFOffset.x ); + globalMFOffset.xyz += $globalViewLeft.xyz * _float3( MFOffset.y ); + globalMFOffset.xyz += $globalViewUp.xyz * _float3( MFOffset.z ); + //float3 globalMFPosition = $globalViewOrigin.xyz + globalMFOffset; + + MFVector.xyz = normalize( globalMFOffset ); + //MFVector.xyz = normalize( $globalViewFwd.xyz ); + MFVector.w = 1.0; + + + //float4 localPosition = vertex.position * $vertexXYZScale + $vertexXYZBias; + //MFOffset = normalize( MFOffset - localPosition ); + //MFVector.x = dot3( MFOffset, $modelMatrixX ); + //MFVector.y = dot3( MFOffset, $modelMatrixY ); + //MFVector.z = dot3( MFOffset, $modelMatrixZ ); + //MFVector.w = 0.0; +} +#endtemplate + +/* +================================================================================== +CALC_POSITION_NORMALS + +uses vertex.position; +uses vertex.normal; +uses vertex.tangent; + +out float4 resultPosition; +out float4 localToGlobalX; +out float4 localToGlobalY; +out float4 localToGlobalZ; +out float4 viewOriginToVertex; +================================================================================== +*/ +#template CALC_POSITION_NORMALS( resultPosition, localToGlobalX, localToGlobalY, localToGlobalZ, viewOriginToVertex ) +{ + // Convert back from 16 bit vertex elements. + float4 localPosition = vertex.position * $vertexXYZScale + $vertexXYZBias; + float4 normal = vertex.normal * 2.0 - 1.0; + float4 tangent = vertex.tangent * 2.0 - 1.0; + float3 bitangent = cross( normal.xyz, tangent.xyz ) * tangent.w; + + resultPosition.x = dot4( localPosition, $mvpMatrixX ); + resultPosition.y = dot4( localPosition, $mvpMatrixY ); + resultPosition.z = dot4( localPosition, $mvpMatrixZ ); + resultPosition.w = dot4( localPosition, $mvpMatrixW ); + + localToGlobalX.x = dot3( tangent, $modelMatrixX ); + localToGlobalX.y = dot3( bitangent, $modelMatrixX ); + localToGlobalX.z = dot3( normal, $modelMatrixX ); + localToGlobalX.w = 0.0; + + localToGlobalY.x = dot3( tangent, $modelMatrixY ); + localToGlobalY.y = dot3( bitangent, $modelMatrixY ); + localToGlobalY.z = dot3( normal, $modelMatrixY ); + localToGlobalY.w = 0.0; + + localToGlobalZ.x = dot3( tangent, $modelMatrixZ ); + localToGlobalZ.y = dot3( bitangent, $modelMatrixZ ); + localToGlobalZ.z = dot3( normal, $modelMatrixZ ); + localToGlobalZ.w = 0.0; + + viewOriginToVertex.x = dot4( localPosition, $modelMatrixX ); + viewOriginToVertex.y = dot4( localPosition, $modelMatrixY ); + viewOriginToVertex.z = dot4( localPosition, $modelMatrixZ ); + viewOriginToVertex.xyz -= $globalViewOrigin.xyz; + viewOriginToVertex.w = 0.0; +} +#endtemplate + +/* +================================================================================== +CALC_SKINNED_POSITIONS + +uses vertex.position; + +out float4 localPosition; +out float4 resultPosition; +================================================================================== +*/ +// CALC_SKINNED_POSITIONS is a reduced form of CALC_SKINNED_POSITIONS_NORMALS +#template CALC_SKINNED_POSITIONS( localPosition, resultPosition ) +{ + // Convert back from 16 bit vertex elements. + localPosition = vertex.position * $vertexXYZScale + $vertexXYZBias; + +#if defined( XBOX ) + + if ( bHardwareSkinning ) { + float4 vertexPosition = localPosition; + if ( bHardwareMorphing ) { +#if 0 + // Fetch the morph value with inline asm, + // so it only gets getched when bHardwareMorphing is + // enabled. If we just used vertex.morph.xyz, it would + // always be fetched, and gives streams of Pix warnings + // when the stream buffer is bound to NULL. + float4 vertexMorph; + int index = vertex.index; + asm { + vfetch vertexMorph, index, color2 + }; + float3 morphVector = ( vertexMorph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertexMorph.w * 32.0f ); +#else + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); +#endif + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.a * 255.1; + asm { + vfetch matX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch matY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch matZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + + matX *= w0; + matY *= w0; + matZ *= w0; + + float4 tmatX, tmatY, tmatZ; + joint = vertex.color.b * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w1; + matY += tmatY * w1; + matZ += tmatZ * w1; + + joint = vertex.color.g * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w2; + matY += tmatY * w2; + matZ += tmatZ * w2; + + joint = vertex.color.r * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w3; + matY += tmatY * w3; + matZ += tmatZ * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + } + +#elif defined( PS3 ) + + if ( hardwareSkinning ) { + float4 vertexPosition = localPosition; + if ( hardwareMorphing ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255.1 * 3; + matX = matrices[joint+0] * w0; + matY = matrices[joint+1] * w0; + matZ = matrices[joint+2] * w0; + + joint = vertex.color.g * 255.1 * 3; + matX += matrices[joint+0] * w1; + matY += matrices[joint+1] * w1; + matZ += matrices[joint+2] * w1; + + joint = vertex.color.b * 255.1 * 3; + matX += matrices[joint+0] * w2; + matY += matrices[joint+1] * w2; + matZ += matrices[joint+2] * w2; + + joint = vertex.color.a * 255.1 * 3; + matX += matrices[joint+0] * w3; + matY += matrices[joint+1] * w3; + matZ += matrices[joint+2] * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + } + +#elif defined( PC_D3D ) + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = localPosition; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + } + +#elif defined( PC ) + // apply vertex morphs + if ( hardwareSkinning.z != 0.0 ) { + localPosition += $vertexMorphScale.x * vertex.position1; + } + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = localPosition; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + } + +#else +#error "unknown platform" +#endif + + resultPosition.x = dot4( localPosition, $mvpMatrixX ); + resultPosition.y = dot4( localPosition, $mvpMatrixY ); + resultPosition.z = dot4( localPosition, $mvpMatrixZ ); + resultPosition.w = dot4( localPosition, $mvpMatrixW ); +} +#endtemplate + +/* +================================================================================== +CALC_SKINNED_POSITIONS_NORMALS + +uses vertex.position; +uses vertex.normal; +uses vertex.tangent; + +out float4 localPosition; +out float4 resultPosition; +out float4 localToGlobalX; +out float4 localToGlobalY; +out float4 localToGlobalZ; +out float4 viewOriginToVertex; +================================================================================== +*/ + +#template CALC_PNT( position, normal, tangent ) +{ + // Convert back from 16 bit vertex elements. + position = vertex.position * $vertexXYZScale + $vertexXYZBias; + normal = vertex.normal * 2.0 - 1.0; + tangent = vertex.tangent * 2.0 - 1.0; + //float morphScale = 0.0f; +} +#endtemplate + +// CALC_SKINNED_POSITIONS is a reduced form of CALC_SKINNED_POSITIONS_NORMALS +#template CALC_SKINNED_POSITIONS_NORMALS( localPosition, resultPosition, localToGlobalX, localToGlobalY, localToGlobalZ, viewOriginToVertex, position, normal, tangent, worldPosition ) +{ + // Convert back from 16 bit vertex elements. + //localPosition = vertex.position * $vertexXYZScale + $vertexXYZBias; + //float4 normal = vertex.normal * 2.0 - 1.0; + //float4 tangent = vertex.tangent * 2.0 - 1.0; + float morphScale = 0.0f; + + localPosition = position; + +#if defined( XBOX ) + + if ( bHardwareSkinning ) { + float4 vertexPosition = localPosition; + if ( bHardwareMorphing ) { +#if 0 + // Fetch the morph value with inline asm, + // so it only gets getched when bHardwareMorphing is + // enabled. If we just used vertex.morph.xyz, it would + // always be fetched, and gives streams of Pix warnings + // when the stream buffer is bound to NULL. + float4 vertexMorph; + int index = vertex.index; + asm { + vfetch vertexMorph, index, color2 + }; + float3 morphVector = ( vertexMorph.xyz * 2 ) - 1; + morphScale = vertexMorph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); +#else + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); +#endif + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.a * 255.1; + asm { + vfetch matX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch matY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch matZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + + matX *= w0; + matY *= w0; + matZ *= w0; + + float4 tmatX, tmatY, tmatZ; + joint = vertex.color.b * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w1; + matY += tmatY * w1; + matZ += tmatZ * w1; + + joint = vertex.color.g * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w2; + matY += tmatY * w2; + matZ += tmatZ * w2; + + joint = vertex.color.r * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w3; + matY += tmatY * w3; + matZ += tmatZ * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } + +#elif defined( PS3 ) + + if ( hardwareSkinning ) { + float4 vertexPosition = localPosition; + if ( hardwareMorphing ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255.1 * 3; + matX = matrices[joint+0] * w0; + matY = matrices[joint+1] * w0; + matZ = matrices[joint+2] * w0; + + joint = vertex.color.g * 255.1 * 3; + matX += matrices[joint+0] * w1; + matY += matrices[joint+1] * w1; + matZ += matrices[joint+2] * w1; + + joint = vertex.color.b * 255.1 * 3; + matX += matrices[joint+0] * w2; + matY += matrices[joint+1] * w2; + matZ += matrices[joint+2] * w2; + + joint = vertex.color.a * 255.1 * 3; + matX += matrices[joint+0] * w3; + matY += matrices[joint+1] * w3; + matZ += matrices[joint+2] * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } + +#elif defined( PC_D3D ) + + // FIXME_D3D + +#elif defined( PC ) + + // apply vertex morphs + if ( hardwareSkinning.z != 0.0 ) { + localPosition += $vertexMorphScale.x * vertex.position1; + } + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = localPosition; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + localPosition.x = dot4( vertexPosition, matX ); + localPosition.y = dot4( vertexPosition, matY ); + localPosition.z = dot4( vertexPosition, matZ ); + localPosition.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } + +#else +#error "unknown platform" +#endif + + float3 bitangent = cross( normal.xyz, tangent.xyz ) * tangent.w; + + position = localPosition; + + // vertex position + resultPosition.x = dot4( localPosition, $mvpMatrixX ); + resultPosition.y = dot4( localPosition, $mvpMatrixY ); + resultPosition.z = dot4( localPosition, $mvpMatrixZ ); + resultPosition.w = dot4( localPosition, $mvpMatrixW ); + + // transform matrix from vertex local space to world space + worldPosition.x = dot4( localPosition, $modelMatrixX ); + worldPosition.y = dot4( localPosition, $modelMatrixY ); + worldPosition.z = dot4( localPosition, $modelMatrixZ ); + + // transform matrix from vertex local space to world space + localToGlobalX.x = dot3( tangent, $modelMatrixX ); + localToGlobalX.y = dot3( bitangent, $modelMatrixX ); + localToGlobalX.z = dot3( normal, $modelMatrixX ); + localToGlobalX.w = morphScale; + + localToGlobalY.x = dot3( tangent, $modelMatrixY ); + localToGlobalY.y = dot3( bitangent, $modelMatrixY ); + localToGlobalY.z = dot3( normal, $modelMatrixY ); + localToGlobalY.w = 0.0; + + localToGlobalZ.x = dot3( tangent, $modelMatrixZ ); + localToGlobalZ.y = dot3( bitangent, $modelMatrixZ ); + localToGlobalZ.z = dot3( normal, $modelMatrixZ ); + localToGlobalZ.w = 0.0; + + // dir from the viewer to the vertex + viewOriginToVertex.x = dot4( localPosition, $modelMatrixX ); + viewOriginToVertex.y = dot4( localPosition, $modelMatrixY ); + viewOriginToVertex.z = dot4( localPosition, $modelMatrixZ ); + viewOriginToVertex.xyz -= $globalViewOrigin.xyz; + viewOriginToVertex.w = 0.0; +} +#endtemplate + +/* +================================================================================== +CALC_SKINNED_POSITION + +uses vertex.position; + +out float4 resultPosition; +================================================================================== +*/ +#template CALC_SKINNED_POSITION( resultPosition ) +{ + float4 localPosition; + CALC_SKINNED_POSITIONS( localPosition, resultPosition ); +} +#endtemplate + +/* +================================================================================== +CALC_SKINNED_POSITIONS_NORMALS + +uses vertex.position; +uses vertex.normal; +uses vertex.tangent; + +out float4 resultPosition; +out float4 localToGlobalX; +out float4 localToGlobalY; +out float4 localToGlobalZ; +out float4 viewOriginToVertex; +================================================================================== +*/ +#template CALC_SKINNED_POSITION_NORMALS( resultPosition, localToGlobalX, localToGlobalY, localToGlobalZ, viewOriginToVertex, position, normal, tangent, worldPosition ) +{ + float4 localPosition; + CALC_SKINNED_POSITIONS_NORMALS( localPosition, resultPosition, localToGlobalX, localToGlobalY, localToGlobalZ, viewOriginToVertex, position, normal, tangent, worldPosition ); +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/vmtr.inc b/bin/base/decls/renderprogs/includes/vmtr.inc new file mode 100644 index 0000000..6e54f77 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/vmtr.inc @@ -0,0 +1,970 @@ + +/* +================================================================================== +CALC_VMTR_TEXCOORD + +uses fragment.texcoord0; +out half4 texCoord +================================================================================== +*/ +#template CALC_VMTR_TEXCOORD( texCoord ) +{ + texCoord = fragment.texcoord0; + + /*-------- non-wrapping virtual texture lookup ------------*/ + BRANCH if ( $useVirtualMapping.x > 0 ) { + /* This is basically only for non pre-lit levels, and shouldn't be used often. */ + /* This doesn't attempt to get the derivative correct at the frac crossing point. */ +#ifdef VMTR_TEXCOORD_SKIP_FRAC + texCoord = texCoord * $virtualMapping.xyxy + $virtualMapping.zwzw; +#else + texCoord = frac( texCoord ) * $virtualMapping.xyxy + $virtualMapping.zwzw; +#endif + } +} +#endtemplate + +/* +================================================================================== +FETCH_VMTR + +uses fragment.texcoord0; +out half4 sampleSpecular; +out half4 sampleYCoCg; +out half4 sampleNormal; +out half2 feedbackTexCoord; +================================================================================== +*/ +#template FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord ) +{ + float4 texCoord; + CALC_VMTR_TEXCOORD( texCoord ); + + float3 physCoord = VmtrVirtualToPhysical( texCoord.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texCoord.xy ) * physCoord.z; + float2 dy = ddy( texCoord.xy ) * physCoord.z; + + sampleSpecular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + sampleYCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + sampleNormal = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + sampleSpecular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + sampleYCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + sampleNormal = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + feedbackTexCoord = texCoord.xy; +} +#endtemplate + +/* +================================================================================== +FETCH_VMTR_BLEND + +uses fragment.texcoord0; +out half4 sampleSpecular; +out half4 sampleYCoCg; +out half4 sampleNormal; +out half2 feedbackTexCoord; +in half morphScale; +================================================================================== +*/ +#template FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, morphScale ) +{ + float4 texCoord; + CALC_VMTR_TEXCOORD( texCoord ); + + float3 physCoord = VmtrVirtualToPhysical( texCoord.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texCoord.xy ) * physCoord.z; + float2 dy = ddy( texCoord.xy ) * physCoord.z; + + sampleSpecular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + sampleYCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + sampleNormal = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + sampleSpecular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + sampleYCoCg = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + sampleNormal = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + feedbackTexCoord = texCoord.xy; + + /* blend in another texture based on the morph map */ + BRANCH if ( $useSkinBlending.x > 0.0 ) { + float3 physCoord = VmtrVirtualToPhysical( texCoord.zw ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texCoord.zw ) * physCoord.z; + float2 dy = ddy( texCoord.zw ) * physCoord.z; + + float4 sampleSpecular2 = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); + float4 sampleYCoCg2 = texPhys( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + float4 sampleNormal2 = texPhys( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + float4 sampleSpecular2 = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); + float4 sampleYCoCg2 = texPhys( $physicalVmtrPagesMap1, physCoord.xy ); + float4 sampleNormal2 = texPhys( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + + sampleSpecular = lerp( sampleSpecular, sampleSpecular2, morphScale ); + sampleYCoCg = lerp( sampleYCoCg, sampleYCoCg2, morphScale ); + sampleNormal = lerp( sampleNormal, sampleNormal2, morphScale ); + + float2 fp = fragment.position.xy * $positionToFeedback.zw; + float2 xy = frac( fp ) - 0.5; + feedbackTexCoord = ( xy.x * xy.y < 0.0 ) ? texCoord.xy : texCoord.zw; + } +} +#endtemplate + +/* +================================================================================== +CALC_VMTR_FEEDBACK + +in half2 feedbackTexCoord; +out float4 feedback; +================================================================================== +*/ +#template CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ) +{ + feedback = PackFeedback( CalculateFeedback( feedbackTexCoord, $virtualTextureFeedbackFloat, $physicalVmtrFilterParms ) ); +} +#endtemplate + +/* +================================================================================== +CALC_DIFFUSE_RGB + +in half4 sampleYCoCg; +inout half4 diffuse; +================================================================================== +*/ +#template CALC_DIFFUSE_RGB( diffuse, sampleYCoCg ) +{ + sampleYCoCg.z = ( sampleYCoCg.z * 31.875 ) + 1.0; /* z = z * 255.0/8.0 + 1.0 */ + sampleYCoCg.z = 1.0 / sampleYCoCg.z; + sampleYCoCg.xy *= sampleYCoCg.z; + diffuse.x = dot4( sampleYCoCg, matrixCoCg1YtoRGB1X ); + diffuse.y = dot4( sampleYCoCg, matrixCoCg1YtoRGB1Y ); + diffuse.z = dot4( sampleYCoCg, matrixCoCg1YtoRGB1Z ); +} +#endtemplate + +/* +================================================================================== +CALC_SPECULAR_RGB +================================================================================== +*/ +#template CALC_SPECULAR_RGB( specular, sampleSpecular, specularScale ) +{ + specular = sampleSpecular.xyz * 8.0 / ( specularScale * 255.0 + 8.0 ); + specular += 0.001; +} +#endtemplate + +/* +================================================================================== +CALC_LOCAL_NORMAL +================================================================================== +*/ +#template CALC_LOCAL_NORMAL( localNormal, sampleNormal ) +{ + /* Note that the optimized derivation of the localNormal below results */ + /* in a vector that is half-unit length! */ + localNormal = sampleNormal.wyz - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); +} +#endtemplate + +/* +================================================================================== +CALC_SMOOTH_NORMAL +================================================================================== +*/ +#template CALC_SMOOTH_NORMAL( smoothNormal, localToGlobalX, localToGlobalY, localToGlobalZ ) +{ + smoothNormal.x = localToGlobalX.z; + smoothNormal.y = localToGlobalY.z; + smoothNormal.z = localToGlobalZ.z; + smoothNormal = normalize( smoothNormal ); +} +#endtemplate + +/* +================================================================================== +CALC_GLOBAL_NORMAL +================================================================================== +*/ +#template CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, localToGlobalX, localToGlobalY, localToGlobalZ ) +{ + /* Note that the optimized derivation of the localNormal below results */ + /* in a vector that is half-unit length! */ + half3 localNormal = sampleNormal.wyz - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); + + /* transform the normal into ambient map space */ + globalNormal.x = dot3( localNormal, localToGlobalX ); + globalNormal.y = dot3( localNormal, localToGlobalY ); + globalNormal.z = dot3( localNormal, localToGlobalZ ); + globalNormal = normalize( globalNormal ); +} +#endtemplate + +/* +================================================================================== +CALC_GLOBAL_NORMAL_TWOSIDED +================================================================================== +*/ +#template CALC_GLOBAL_NORMAL_TWOSIDED( globalNormal, sampleNormal, localToGlobalX, localToGlobalY, localToGlobalZ ) +{ + /* Note that the optimized derivation of the localNormal below results */ + /* in a vector that is half-unit length! */ + half3 localNormal = sampleNormal.wyz - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); + + /* flip the normal around if looking at the back side */ +#if defined( XBOX ) + if ( fragment.facing > 0 ) { + localNormal.z = -localNormal.z; + } +#elif defined( PS3 ) + if ( fragment.face < 0 ) { + localNormal.z = -localNormal.z; + } +#elif defined( GLSL ) + if ( !gl_FrontFacing ) { + localNormal.z = -localNormal.z; + } +#endif + + /* transform the normal into ambient map space */ + globalNormal.x = dot3( localNormal, localToGlobalX ); + globalNormal.y = dot3( localNormal, localToGlobalY ); + globalNormal.z = dot3( localNormal, localToGlobalZ ); + globalNormal = normalize( globalNormal ); +} +#endtemplate + +/* +================================================================================== +CALC_FROM_VIEWER +================================================================================== +*/ +#template CALC_FROM_VIEWER( fromViewerN, fromViewer ) +{ + fromViewerN = normalize( fromViewer.xyz ); +} +#endtemplate + +/* +================================================================================== +CALC_GLOBAL_REFLECTION +================================================================================== +*/ +#template CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ) +{ + // reflection vector + globalReflection.xyz = fromViewerN - ( globalNormal * dot3( fromViewerN, globalNormal ) * 2.0 ); +} +#endtemplate + +/* +================================================================================== +SAMPLE_DIMSHADOW_BUFFER +================================================================================== +*/ +#template SAMPLE_DIMSHADOW_BUFFER( shadow ) +{ + // this is normalized window space, not strict openGL window space + // that uses integer viewport values. + float3 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // fetch the window space depth value + window.z = tex2Ddepth( $viewDepthMap, window.xy ); + + float4 wclip = float4( window.xyz, 1.0f ); + + // now transform to the light clip space + float4 light; + light.x = dot4( wclip, $windowPosToDimShadowBlurS ); + light.y = dot4( wclip, $windowPosToDimShadowBlurT ); + light.z = dot4( wclip, $windowPosToDimShadowBlurR ); + light.w = dot4( wclip, $windowPosToDimShadowBlurQ ); + + // divide by w to get to light device coordinates + light.xyz /= light.w; + + // move the -1.0 - 1.0 light device st to the 0.0 - 1.0 texture range +#ifdef XBOX + light.xy = ( light * 0.5 ) + 0.5; // don't adjust z, it is already 0 - 1 +#else + light = ( light * 0.5 ) + 0.5; +#endif + +#ifndef PC + light.y = 1.0 - light.y; // image y origin adjust +#endif + // clamp before sampling, because the shadow depth map may have + // only been updated in a restricted viewport + light.xy = min( light.xy, 0.99 ); + light.xy = max( light.xy, 0.01 ); + + // make sure that the cleared z = 1.0 in the shadow buffer + // will always be farther away than any world surface + light.z = min( light.z, 0.9999999 ); + + // four samples + float2 tc = fragment.position.xy * float2( 1.0/128, 1.0/128 ) + $viewRandom.xy; + float2 dither = tex2D( $dither256map, tc ).xw; + + const float step = 1.0 / 768.0; // FIXME: hard coded dim-shadow buffer size + float3 center; + // this biases by +1.5 on average, so we can test -3, -2, -1, 0 offsets + center.xy = light.xy + step + dither * step; + center.z = light.z; + + shadow = shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -1*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -1*step, 0 ) ); + shadow *= 0.25; +} +#endtemplate + +/* +================================================================================== +APPLY_MODEL_FADE +================================================================================== +*/ +#template APPLY_MODEL_FADE() +{ + BRANCH if ( $modelFade.x < 1.0 ) { + float2 texcoord = fragment.position.xy * ( 1.0 / 256.0 ); + float dither = tex2D( $dither256Map, texcoord ).x; + + // 1 - fully opaque - 0.8 - stippling - 0.2 - fully transparent - 0 + clip( $modelFade.x - 0.2 - dither * 0.6 ); + } +} +#endtemplate + +/* +================================================================================== +CALC_GRAZING +================================================================================== +*/ +#template CALC_GRAZING( graze, globalNormal, fromViewerN ) +{ + /* calculate the view grazing fraction */ + graze = saturate( dot3( -fromViewerN, globalNormal ) ); + graze = saturate( ( $viewGraze.x - max( graze, -graze ) ) / max( $viewGraze.x, 0.0001 ) ); +} +#endtemplate + +/* +================================================================================== +APPLY_DIFFUSE_GRAZING +================================================================================== +*/ +#template APPLY_DIFFUSE_GRAZING( diffuse, graze ) +{ + diffuse.xyz = lerp( diffuse.xyz, $grazingDiffuseColor.xyz, graze ); +} +#endtemplate + +/* +================================================================================== +APPLY_SPECULAR_GRAZING +================================================================================== +*/ +#template APPLY_SPECULAR_GRAZING( specular, graze ) +{ + specular.xyz = lerp( specular.xyz, $grazingSpecularColor.xyz, graze ); +} +#endtemplate + +/* +================================================================================== +APPLY_GRAZING +================================================================================== +*/ +#template APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ) +{ + half graze; + CALC_GRAZING( graze, globalNormal, fromViewerN ); + APPLY_DIFFUSE_GRAZING( diffuse, graze, ); + APPLY_SPECULAR_GRAZING( specular, graze ); +} +#endtemplate + +/* +================================================================================== +APPLY_GRAZINGS +================================================================================== +*/ +#template APPLY_GRAZINGS( diffuse, globalDiffuseNormal, specular, globalSpecularNormal, fromViewerN ) +{ + half grazeDiffuse; + half grazeSpecular; + CALC_GRAZING( grazeDiffuse, globalDiffuseNormal, fromViewerN ); + CALC_GRAZING( grazeSpecular, globalSpecularNormal, fromViewerN ); + APPLY_DIFFUSE_GRAZING( diffuse, grazeDiffuse ); + APPLY_SPECULAR_GRAZING( specular, grazeSpecular ); +} +#endtemplate + +/* +================================================================================== +APPLY_RIMLIGHT +================================================================================== +*/ +#template APPLY_RIMLIGHT( diffuse, globalNormal, fromViewer ) +{ + /* calculate the view grazing fraction */ + half graze = 1.0 - saturate( dot3( -normalize( fromViewer ), globalNormal ) ); + graze *= saturate( globalNormal.z ); + graze = pow( graze, $RimlightColor.w ); + diffuse.xyz += $rimlightColor.xyz * _half3( graze ); +} +#endtemplate + +/* +================================================================================== +APPLY_SCALING_SPECULAR +================================================================================== +*/ +#template APPLY_SCALING_SPECULAR( specular ) +{ + specular.xyz *= $newSpecularScale.xyz; +} +#endtemplate + +/* +================================================================================== +APPLY_SCALING_DIFFUSE +================================================================================== +*/ +#template APPLY_SCALING_DIFFUSE( diffuse ) +{ + diffuse.xyz *= $newDiffuseScale.xyz * 2.0; /* why times two? */ +} +#endtemplate + +/* +================================================================================== +APPLY_SCALING +================================================================================== +*/ +#template APPLY_SCALING( diffuse, specular ) +{ + APPLY_SCALING_DIFFUSE( diffuse ) + APPLY_SCALING_SPECULAR( specular ); +} +#endtemplate + +/* +================================================================================== +APPLY_SPECULAR_REFLECTION +================================================================================== +*/ +#template APPLY_SPECULAR_REFLECTION( specular, power, globalReflection ) +{ + /* Power factor is stored in sampleNormal.x as 0.0 - 1.0 */ + /* We want a 0 | 1 | 2 | 3 mip value. */ + /* The artists really prefer white to be shiny instead of dull, so invert it here. */ + /* We could probably skip the floor, but I am wary of hardware / api rounding. */ + globalReflection.w = floor( ( 1.0 - power ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, globalReflection ).xyz; + + /* modulate by the environment mask map (specular channel) */ + specular *= envColor; +} +#endtemplate + + +/* +================================================================================== +APPLY_FOLIAGE_SPECULAR +================================================================================== +*/ +#template APPLY_FOLIAGE_SPECULAR( specular, power, globalNormal, fromViewer ) +{ + /* calculate the specular reflection vector from viewer and globalNormal */ + half4 reflection; + reflection.xyz = fromViewer - ( globalNormal * dot3( fromViewer, globalNormal ) * 2.0 ); + + /* Power factor is stored in sampleNormal.x as 0.0 - 1.0 */ + /* We want a 0 | 1 | 2 | 3 mip value. */ + /* The artists really prefer white to be shiny instead of dull, so invert it here. */ + /* We could probably skip the floor, but I am wary of hardware / api rounding. */ + reflection.w = floor( ( 1.0 - power ) * 4.0 + $newPowerScale.x ); + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + /* modulate by the environment mask map (specular channel) */ + envColor = lerp( _half3( max( max( envColor.x, envColor.y ), envColor.z ) ), envColor, _half3( $envSatScalePower.x ) ); + envColor = pow( envColor, _half3( $envSatScalePower.z ) ); + //envColor *= _half3( saturate( globalNormal.z + 1.0 ) ); + specular *= envColor * _half3( $envSatScalePower.y ); +} +#endtemplate + +/* +================================================================================== +APPLY_PHYSICAL_SPECULAR +================================================================================== +*/ +#template APPLY_PHYSICAL_SPECULAR( specular, surfaceSpecular, globalNormal, fromViewer ) +{ + /* calculate the specular reflection vector from viewer and globalNormal */ + half4 reflection; + reflection.xyz = fromViewer - ( globalNormal * dot3( fromViewer, globalNormal ) * 2.0 ); + + //extract the color from the specular map + half3 specColor = normalize( surfaceSpecular.xyz ) * _half3( 1.73 ); + + //the gloss map is a greyscale version of the specular map + half glossMask = ( surfaceSpecular.x + surfaceSpecular.y + surfaceSpecular.z ) * 0.333; + + //make dark parts of the spec map have less color + specColor = lerp( _half3( 1.0 ), specColor, glossMask ); + + glossMask = glossMask * $maxGloss.x; + half piMul = 0.039808917197; // 1 / ( pi * 8 ) + half3 pSpecMask = _half3( ( glossMask + 8.0 ) * piMul ); + + half3 pSpecular = _half3( saturate( dot3( normalize( reflection.xyz ), $primeLightDir.xyz ) ) ); + pSpecular *= pow( pSpecular, _half3( glossMask ) ); + pSpecular *= $primeLightColor.xyz; + pSpecular *= pSpecMask * specColor; + + specular += pSpecular; +} +#endtemplate + +/* +================================================================================== +APPLY_MUZZLE_FLASH +================================================================================== +*/ +#template APPLY_MUZZLE_FLASH( color, surfaceDiffuse, globalNormal, MFVector ) +{ + half muzzleFlash = saturate( dot( MFVector, globalNormal ) ); + color.xyz += _half3( $gunMuzzleFlash.x * muzzleFlash * $gunMuzzleFlashColor.w ) * $gunMuzzleFlashColor.xyz * surfaceDiffuse; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING_FOLIAGE +================================================================================== +*/ +#template APPLY_LIGHTING_FOLIAGE( color, diffuse, specular, trueNormal, fromViewer, treeMask, transmissionMask ) +{ + + //half treeMaskFromZ = saturate( ( 1.0 - treeMask ) * 5.0 ); + //half3 trueNormal = lerp( globalNormal, treeNormal, 0.9 * treeMaskFromZ ); + + half ndotl = dot3( $primeLightDir, trueNormal ); + half3 primeLightFactor = _half3( saturate( ndotl ) ); + half3 primeLight = $primeLightColor.xyz * primeLightFactor; + half3 channelLight = + + max( trueNormal.x * $channelLight0.xyz, 0 ) + + max( -trueNormal.x * $channelLight1.xyz, 0 ) + + max( trueNormal.y * $channelLight2.xyz, 0 ) + + max( -trueNormal.y * $channelLight3.xyz, 0 ) + + max( trueNormal.z * $channelLight4.xyz, 0 ) + + max( -trueNormal.z * $channelLight5.xyz, 0 ); + + half backLightFactor = pow( saturate( dot3( $primeLightDir, normalize( fromViewer ) ) ), 5.0 ); + half backLightFalloff = pow( 1.0 - abs( ndotl ), 3.0 ); + backLightFactor *= backLightFalloff * 3.0; + half3 backLight = $primeLightColor.xyz * transmissionMask.xyz * treeMask * backLightFactor; + + half3 light = primeLight + channelLight + backLight; + + /* maximum amount of dim-shadowing based on the pime light contribution */ + float acceptDimShadow = max( primeLightFactor.x, max( primeLightFactor.y, primeLightFactor.z ) ) * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + color.xyz = light * ( diffuse + specular ); + color.w = acceptDimShadow; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING +================================================================================== +*/ +#template APPLY_LIGHTING( color, diffuse, specular, globalNormal ) +{ + half primeLightFactor = saturate( dot3( $primeLightDir, globalNormal ) ); + half3 primeLight = $primeLightColor.xyz * primeLightFactor; + half3 channelLight = + + max( globalNormal.x * $channelLight0.xyz, 0 ) + + max( -globalNormal.x * $channelLight1.xyz, 0 ) + + max( globalNormal.y * $channelLight2.xyz, 0 ) + + max( -globalNormal.y * $channelLight3.xyz, 0 ) + + max( globalNormal.z * $channelLight4.xyz, 0 ) + + max( -globalNormal.z * $channelLight5.xyz, 0 ); + half3 light = primeLight + channelLight; + + /* maximum amount of dim-shadowing based on the pime light contribution */ + float acceptDimShadow = primeLightFactor * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + color.xyz = light * ( diffuse + specular ); + color.w = acceptDimShadow; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING_NOAMBIENT +================================================================================== +*/ +#template APPLY_LIGHTING_NOAMBIENT( color, diffuse, specular, globalNormal ) +{ + half primeLightFactor = saturate( dot3( $primeLightDir, globalNormal ) ); + half3 primeLight = $primeLightColor.xyz * primeLightFactor; + half3 light = primeLight; + + /* maximum amount of dim-shadowing based on the pime light contribution */ + float acceptDimShadow = primeLightFactor * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + color.xyz = light * ( diffuse + specular ); + color.w = acceptDimShadow; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING_ZHEIGHT +================================================================================== +*/ +#template APPLY_LIGHTING_ZHEIGHT( color, diffuse, specular, globalNormal, height ) +{ + half primeLightFactor = saturate( dot3( $primeLightDir, globalNormal ) ); + half3 primeLight = $primeLightColor.xyz * primeLightFactor; + half3 channelLight = + + max( globalNormal.x * $channelLight0.xyz, 0 ) + + max( -globalNormal.x * $channelLight1.xyz, 0 ) + + max( globalNormal.y * $channelLight2.xyz, 0 ) + + max( -globalNormal.y * $channelLight3.xyz, 0 ) + + max( globalNormal.z * $channelLight4.xyz, 0 ) + + max( -globalNormal.z * $channelLight5.xyz, 0 ); + half3 light = primeLight + channelLight; + + /* modulate by the z-height blend */ + light = lerp( channelLight, light, height ); + + /* maximum amount of dim-shadowing based on the pime light contribution */ + float acceptDimShadow = primeLightFactor * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + color.xyz = light * ( diffuse + specular ); + color.w = acceptDimShadow; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING_KEY +================================================================================== +*/ +#template APPLY_LIGHTING_KEY( color, diffuse, specular, power, globalNormal, fromViewer, + primaryShadow, secondaryShadow, ambientScale, directScale ) +{ + half3 fromViewerN; + half3 globalReflection; + + // reflection vector + CALC_FROM_VIEWER( fromViewerN, fromViewer ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 specularLight; + half3 diffuseLight; + + //--------------------------------------------------------------- + // primary light + //--------------------------------------------------------------- + + float primaryFactor = saturate( dot3( $primeLightDir, globalNormal ) ); + float3 primeLight = primaryShadow * $primeLightColor.xyz * primaryFactor; + diffuseLight = primeLight; + + // classic specular calculation + // power factor is stored in bumpPage.x as 0.0 - 1.0, with 1.0 being tightest highlights + float specDot = saturate( dot3( $primeLightDir, globalReflection ) ); + specDot = pow( specDot, 1 + power * 40 ); + + specularLight = primeLight * specDot; + + //--------------------------------------------------------------- + // secondary light + //--------------------------------------------------------------- + + float secondaryFactor = saturate( dot3( $secondaryLightDir, globalNormal ) ); + float3 secondaryLight = secondaryShadow * $secondaryLightColor.xyz * secondaryFactor; + diffuseLight += secondaryLight; + + specDot = saturate( dot3( $secondaryLightDir, globalReflection ) ); + specDot = pow( specDot, 1 + power * 40 ); + + specularLight += secondaryLight * specDot; + + //--------------------------------------------------------------- + // ambient lighting + //--------------------------------------------------------------- + + float3 ambientLight = + + max( globalNormal.x * $channelLight0.xyz, 0 ) + + max( -globalNormal.x * $channelLight1.xyz, 0 ) + + max( globalNormal.y * $channelLight2.xyz, 0 ) + + max( -globalNormal.y * $channelLight3.xyz, 0 ) + + max( globalNormal.z * $channelLight4.xyz, 0 ) + + max( -globalNormal.z * $channelLight5.xyz, 0 ); + + //--------------------------------------------------------------- + // height lerp + //--------------------------------------------------------------- + + // lerp in the diffuse lighting from the ground up + diffuseLight *= directScale; + specularLight *= directScale; + // lerp down the ambient from the ground up + diffuseLight += ambientLight * ambientScale; + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + + /* maximum amount of dim-shadowing based on the pime light contribution */ + float acceptDimShadow = primaryFactor * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + color.xyz = ( specularLight * specular.xyz ) + ( diffuseLight * diffuse.xyz ); + color.w = acceptDimShadow; +} +#endtemplate + +/* +================================================================================== +CALC_FRAGMENT_POS +================================================================================== +*/ +#template CALC_FRAGMENT_POS( fragmentXYZ, fromViewer ) +{ + // world space coordinate of the fragment + // texcoord4 is fragmentXYZ - $globalViewOrigin.xyz; + fragmentXYZ = fromViewer + $globalViewOrigin.xyz; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING +================================================================================== +*/ +#template APPLY_LIGHTING_LOCAL( color, diffuse, specular, power, globalNormal, fragmentXYZ, globalReflection ) +{ + // power factor is stored in bumpPage.x as 0.0 - 1.0, with 1.0 being tightest highlights + const float powerExp = 4 + power * 100; + + half3 specularLight = half3( 0, 0, 0 ); + half3 diffuseLight = half3( 0, 0, 0 ); + + //--------------------------------------------------------------- + // first light + //--------------------------------------------------------------- + const float3 light0Dir = $channellight0.xyz - fragmentXYZ; + const float3 light0DirNormalized = normalize( light0Dir ); + const float light0Dist = length( light0Dir ); + const float light0Attenuation = 1.0 - ( min( light0Dist, $channellight1.w ) / $channellight1.w ); + const float light0Factor = saturate( dot3( light0DirNormalized, globalNormal ) ); + const float light0SpecDot = saturate( dot3( light0DirNormalized, globalReflection ) ); + const float light0Pow = pow( light0SpecDot, powerExp ); + const float3 light0Color = $channellight1.xyz * light0Factor * light0Attenuation; + + diffuseLight += light0Color; + specularLight += light0Color * light0Pow; + + //--------------------------------------------------------------- + // second light + //--------------------------------------------------------------- + const float3 light1Dir = $channellight2.xyz - fragmentXYZ; + const float3 light1DirNormalized = normalize( light1Dir ); + const float light1Dist = length( light1Dir ); + const float light1Attenuation = 1.0 - ( min( light1Dist, $channellight1.w ) / $channellight1.w ); + const float light1Factor = saturate( dot3( light1DirNormalized, globalNormal ) ); + const float light1SpecDot = saturate( dot3( light1DirNormalized, globalReflection ) ); + const float light1Pow = pow( light1SpecDot, powerExp ); + const float3 light1Color = $channellight3.xyz * light1Factor * light1Attenuation; + + diffuseLight += light1Color; + specularLight += light1Color * light1Pow; + + //--------------------------------------------------------------- + // third light + //--------------------------------------------------------------- + const float3 light2Dir = $channellight4.xyz - fragmentXYZ; + const float3 light2DirNormalized = normalize( light2Dir ); + const float light2Dist = length( light2Dir ); + const float light2Attenuation = 1.0 - ( min( light2Dist, $channellight1.w ) / $channellight1.w ); + const float light2Factor = saturate( dot3( light2DirNormalized, globalNormal ) ); + const float light2SpecDot = saturate( dot3( light2DirNormalized, globalReflection ) ); + const float light2Pow = pow( light2SpecDot, powerExp ); + const float3 light2Color = $channellight5.xyz * light2Factor * light2Attenuation; + + diffuseLight += light2Color; + specularLight += light2Color * light2Pow; + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + + // the YCoCg conversion can go slightly negative! + diffuse = saturate( diffuse ); + + // de-gamma the textures + diffuse.x = pow( diffuse.x, 2.2 ); + diffuse.y = pow( diffuse.y, 2.2 ); + diffuse.z = pow( diffuse.z, 2.2 ); + + specular.x = pow( specular.x, 2.2 ); + specular.y = pow( specular.y, 2.2 ); + specular.z = pow( specular.z, 2.2 ); + + const float3 finalColor = ( specularLight * specular.xyz ) + ( diffuseLight * diffuse.xyz ); + + // gamma correct + color.x = pow( finalColor.x, 1.0/2.2 ); + color.y = pow( finalColor.y, 1.0/2.2 ); + color.z = pow( finalColor.z, 1.0/2.2 ); + + /* maximum amount of dim-shadowing based on the pime light contribution */ + const half primeLightFactor = saturate( dot3( $primeLightDir, globalNormal ) ) + * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); // FIXME: make a constant! + + color.w = primeLightFactor; +} +#endtemplate + +/* +================================================================================== +APPLY_LIGHTING_SKIN +================================================================================== +*/ +#template APPLY_LIGHTING_SKIN( color, diffuse, specular, ambientOcclusion, globalDiffuseNormal, globalReflection ) +{ + // Calculate diffuse warp from diffuse normal and use it as lookup + half cosd = saturate( ( dot3( $primeLightDir, globalDiffuseNormal ) * 0.5 ) + 0.5 ); + half3 diffuseWarp = tex2D( $textureMap, float2( cosd, 0.0 ) ).xyz; + + half specularAmbienceScale = 0.25; + half primeLightFactor = saturate( dot3( $primeLightDir, globalDiffuseNormal ) ); + + // Diffuse primary and ambient light + half3 diffusePrimary = $primeLightColor.xyz * diffuseWarp; + half3 diffuseAmbient = _half3( 0.0 ) + + max( globalDiffuseNormal.x * $channelLight0.xyz, 0.0 ) + + max( -globalDiffuseNormal.x * $channelLight1.xyz, 0.0 ) + + max( globalDiffuseNormal.y * $channelLight2.xyz, 0.0 ) + + max( -globalDiffuseNormal.y * $channelLight3.xyz, 0.0 ) + + max( globalDiffuseNormal.z * $channelLight4.xyz, 0.0 ) + + max( -globalDiffuseNormal.z * $channelLight5.xyz, 0.0 ); + + // Specular primary and ambient light + half3 specularPrimary = $primeLightColor.xyz * saturate( dot3( globalReflection, $primeLightDir ) ); + half3 specularAmbient = _half3( 0.0 ) + + max( globalReflection.x * $channelLight0.xyz, 0.0 ); + + max( -globalReflection.x * $channelLight1.xyz, 0.0 ); + + max( globalReflection.y * $channelLight2.xyz, 0.0 ); + + max( -globalReflection.y * $channelLight3.xyz, 0.0 ); + + max( globalReflection.z * $channelLight4.xyz, 0.0 ); + + max( -globalReflection.z * $channelLight5.xyz, 0.0 ); + + // Apply ambient occlusion on ambient lights + diffuseAmbient *= ambientOcclusion; + specularAmbient *= ambientOcclusion * specularAmbienceScale; + + half3 diffuseLight = diffusePrimary + diffuseAmbient; + half3 specularLight = specularPrimary + specularAmbient; + + // Maximum amount of dim-shadowing based on the pime light contribution + float acceptDimShadow = primeLightFactor * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + // Sum + color.xyz = _half3( 0.0 ) + + ( diffuseLight * diffuse ) + + ( specularLight * specular ); + color.w = acceptDimShadow; +} +#endtemplate + +/* +================================================================================== +APPLY_HOLOGRAM +================================================================================== +*/ +#template APPLY_HOLOGRAM( color ) +{ + // scanline texture + float2 screenCoords = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + half scanlinesWide = tex2D( $scanlineMap, screenCoords + ( $time.x * 0.025 ) ).x; + + screenCoords *= float2( 1.0, 5.5 ); + half scanlinesFine = tex2D( $scanlineMap, screenCoords + ( $time.x * 0.01 ) ).x; + + color.xyz *= scanlinesWide + ( scanlinesFine * 0.25 ) ; + color.xyz *= 2.5; + color.xyz += $hologramColor.xyz * ( color.xyz + 0.1 ); + color.xyz *= $hologramColor.w; +} +#endtemplate + +/* +================================================================================== +APPLY_HIGHLIGHT +================================================================================== +*/ +#template APPLY_HIGHLIGHT( color, fromViewerN, localToGlobalX, localToGlobalY, localToGlobalZ ) +{ + /* Reference, + This is the code we ran to get the approximated look of how we wanted the + rimming of usables to look like. + half k = 1.0 - saturate( abs( dot3( objectNormal.xyz, $globalViewFwd.xyz ) ) ); + half bias = 0.25; + half scale = 1.0 / max( 1.0 - bias, 0.00001 ); + + half r = saturate( ( k - bias ) * scale ); + color.xyz += _half3( r * r ) * half3( 0.968, 0.941, 0.705 ) * _half3( 1.0 ); + */ + + half3 objectNormal = half3( localToGlobalX.z, localToGlobalY.z, localToGlobalZ.z ); + half k = 1.0 - saturate( abs( dot3( objectNormal.xyz, $globalViewFwd.xyz ) ) ); + half r = ( k - 0.25 ) * 1.333333; + + color.xyz += $highlightColor.xyz * _half3( r * r ); +} +#endtemplate + +/* +================================================================================== +OUTPUT_SURFACE_ATTRIBUTES +================================================================================== +*/ +#template OUTPUT_SURFACE_ATTRIBUTES( diffuse, specular, power, globalNormal ) +{ +#ifdef DEFERRED_LIGHTING + result.color2.xyz = diffuse.xyz; + result.color2.w = length( specular.xyz ); + + result.color3.xyz = globalNormal.xyz * _float3( 0.5 ) + _float3( 0.5 ); + result.color3.w = power; +#endif +} +#endtemplate diff --git a/bin/base/decls/renderprogs/includes/wrinklemap.inc b/bin/base/decls/renderprogs/includes/wrinklemap.inc new file mode 100644 index 0000000..3295a99 --- /dev/null +++ b/bin/base/decls/renderprogs/includes/wrinklemap.inc @@ -0,0 +1,32 @@ +#template SAMPLE_WRINKLEMAPS( occlusionRes, bumpRes, occlusionSrc, bumpSrc, texCoord ) +{ + + half4 mask01 = tex2D( $fadeMap, float2( texCoord.x * 0.5f, texCoord.y ) ); + half4 mask23 = tex2D( $fadeMap, float2( texCoord.x * 0.5f + 0.5f, texCoord.y ) ); + + mask01 = (mask01 - 0.50f)*2.2f; + float wrinkleResFactor0 = (dot4(saturate(mask01 - 0.05f), $wrinkleFactor0) + + dot4(saturate(-mask01 - 0.05f), $wrinkleFactor1) ); + mask23 = (mask23 - 0.50f)*2.2f; + float wrinkleResFactor1 = (dot4(saturate(mask23 - 0.05f), $wrinkleFactor2) + + dot4(saturate(-mask23 - 0.05f), $wrinkleFactor3) ); + + float wrinkleResFactor = clamp( wrinkleResFactor0 + wrinkleResFactor1, -1.0f, 1.0f ); + wrinkleResFactor *= $wrinkleScale.x; + + float ambOccl = occlusionSrc.g; + half4 bumpNormal = bumpSrc; + // + is expand, - is contract + if ( wrinkleResFactor > 0.05 ) { + ambOccl = lerp( occlusionSrc.g, occlusionSrc.b, wrinkleResFactor ); + bumpNormal = lerp( bumpSrc, tex2D( $spareBumpMap2, texCoord.xy ), wrinkleResFactor ); + } else if ( wrinkleResFactor < -0.05 ) { + ambOccl = lerp( occlusionSrc.g, occlusionSrc.r, -wrinkleResFactor ); + bumpNormal = lerp( bumpSrc, tex2D( $spareBumpMap1, texCoord.xy ), -wrinkleResFactor ); + } + + occlusionRes = ambOccl; + bumpRes = bumpNormal; + +} +#endtemplate \ No newline at end of file diff --git a/bin/base/decls/renderprogs/particle_fp.inc b/bin/base/decls/renderprogs/particle_fp.inc new file mode 100644 index 0000000..113eb03 --- /dev/null +++ b/bin/base/decls/renderprogs/particle_fp.inc @@ -0,0 +1,52 @@ + +// Store fog and frame fraction value +float fogVal = fragment.texcoord0.z; +float frameFrac = fragment.texcoord1.z; + + +#ifdef PARTICLE_FP_ALT +// Remove trans-atlas coordinate mapping if we're using atlas coords +half2 texcoord0 = ( fragment.texcoord0.xy - $transAtlasScaleBiasInv.zw ) * $transAtlasScaleBiasInv.xy; +half2 texcoord1 = ( fragment.texcoord1.xy - $transAtlasScaleBiasInv.zw ) * $transAtlasScaleBiasInv.xy; +#else +// Simple copy texture coordinates from vertex program output +half2 texcoord0 = fragment.texcoord0.xy; +half2 texcoord1 = fragment.texcoord1.xy; +#endif + + +// Sample extra parameters if needed +#if defined( PARTICLE_FP_MASK_LUT ) || defined( PARTICLE_FP_MOD_TEXCOORD ) +half2 texcoord2; +texcoord2.x = dot4( fragment.texcoord2.xy, $sMatrix ); +texcoord2.y = dot4( fragment.texcoord2.xy, $tMatrix ); + +half4 parm = tex2D( $textureMap, texcoord2 ); +#endif + + +// Offset texture coordinates +#ifdef PARTICLE_FP_MOD_TEXCOORD +half2 offset = parm.xy * _half2( 2.0 ) - _half2( 1.0 ); +offset *= _half2( $distortionScale.x ); + +texcoord0 += offset; +texcoord1 += offset; +#endif + + +// Sample color from either transMap1 or transMap depending on wheter we're running alternative particle program or not +#ifdef PARTICLE_FP_ALT +half4 color = ComputeAnimCrossFadeColor( $transMap1, texcoord0, texcoord1, frameFrac ); +#else +half4 color = ComputeAnimCrossFadeColor( $transMap, texcoord0, texcoord1, frameFrac ); +#endif + + +#ifdef PARTICLE_FP_MASK_LUT + half3 coordLUT = max( min( color.xyz * _half3( parm.z ), _half3( 1.0 - 0.015625 ) ), _half3( 0.015625 ) ); + color.x = tex2D( $transMap2, half2( coordLUT.x, 0.5 ) ).x; + color.y = tex2D( $transMap2, half2( coordLUT.y, 0.5 ) ).y; + color.z = tex2D( $transMap2, half2( coordLUT.z, 0.5 ) ).z; +#endif + diff --git a/bin/base/decls/renderprogs/particle_vp.inc b/bin/base/decls/renderprogs/particle_vp.inc new file mode 100644 index 0000000..f38e204 --- /dev/null +++ b/bin/base/decls/renderprogs/particle_vp.inc @@ -0,0 +1,35 @@ + +result.position.x = dot4( vertex.position, $mvpMatrixX ); +result.position.y = dot4( vertex.position, $mvpMatrixY ); +result.position.z = dot4( vertex.position, $mvpMatrixZ ); +result.position.w = dot4( vertex.position, $mvpMatrixW ); + +const float eyeDist = result.position.w; +const float frameFrac = vertex.tangent.z; +const float alphascale = vertex.tangent.w; + +// fade particle based on distance to near clip +float fade = saturate( abs( eyeDist ) * $particleFade.x ); + +const float fogTerm = -( clamp( eyeDist - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); +// moving the fogVal calculation to the vert shader for particles does not appear to cause any artifacts +const float fogVal = saturate( exp2( fogTerm ) ); + +// Convert back from 16 bit vertex elements. +result.texcoord0.xy = vertex.texcoord0.xy * $particleStScaleBias.x + $particleStScaleBias.y; +result.texcoord0.z = fogVal; +result.texcoord0.w = 0.0; + +#ifndef VP_SINGLETEXCOORD + // Convert back from 16 bit vertex elements. + result.texcoord1.xy = vertex.texcoord1.xy * $particleStScaleBias.x + $particleStScaleBias.y; + result.texcoord1.z = frameFrac; + result.texcoord1.w = 0.0; +#endif + +#ifdef VP_UNITTEXCOORD + result.texcoord2.xy = vertex.tangent.xy; + result.texcoord2.zw = vertex.tangent.xy; +#endif + +float4 vertColor = swizzleColor( vertex.color ); diff --git a/bin/base/decls/renderprogs/skinning.inc b/bin/base/decls/renderprogs/skinning.inc new file mode 100644 index 0000000..339a537 --- /dev/null +++ b/bin/base/decls/renderprogs/skinning.inc @@ -0,0 +1,284 @@ + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + +#if defined( XBOX ) + + if ( bHardwareSkinning ) { + float4 vertexPosition = position; + if ( bHardwareMorphing ) { +#if 0 + // Fetch the morph value with inline asm, + // so it only gets getched when bHardwareMorphing is + // enabled. If we just used vertex.morph.xyz, it would + // always be fetched, and gives streams of Pix warnings + // when the stream buffer is bound to NULL. + float4 vertexMorph; + int index = vertex.index; + asm { + vfetch vertexMorph, index, color2 + }; + float3 morphVector = ( vertexMorph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertexMorph.w * 32.0f ); +#else + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); +#endif + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.a * 255.1; + asm { + vfetch matX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch matY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch matZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + + matX *= w0; + matY *= w0; + matZ *= w0; + + float4 tmatX, tmatY, tmatZ; + joint = vertex.color.b * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w1; + matY += tmatY * w1; + matZ += tmatZ * w1; + + joint = vertex.color.g * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w2; + matY += tmatY * w2; + matZ += tmatZ * w2; + + joint = vertex.color.r * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w3; + matY += tmatY * w3; + matZ += tmatZ * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + } + +#elif defined( PS3 ) + + if ( hardwareSkinning ) { + float4 vertexPosition = position; + if ( hardwareMorphing ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255.1 * 3; + matX = matrices[joint+0] * w0; + matY = matrices[joint+1] * w0; + matZ = matrices[joint+2] * w0; + + joint = vertex.color.g * 255.1 * 3; + matX += matrices[joint+0] * w1; + matY += matrices[joint+1] * w1; + matZ += matrices[joint+2] * w1; + + joint = vertex.color.b * 255.1 * 3; + matX += matrices[joint+0] * w2; + matY += matrices[joint+1] * w2; + matZ += matrices[joint+2] * w2; + + joint = vertex.color.a * 255.1 * 3; + matX += matrices[joint+0] * w3; + matY += matrices[joint+1] * w3; + matZ += matrices[joint+2] * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + } + +#elif defined( PC_D3D ) + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = position; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + } + +#elif defined( PC ) + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = position; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + vertexPosition.xyz += ( morphVector * vertex.morph.w * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + if ( hardwareSkinning.z == 0.0 ) { + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + } else { + float4 dualQuats[ 8 ]; + float joint = vertex.color.r * 255; + dualQuats[0] = matrices[ int(joint*2+0) ]; + dualQuats[1] = matrices[ int(joint*2+1) ]; + + joint = vertex.color.g * 255; + dualQuats[2] = matrices[ int(joint*2+0) ]; + dualQuats[3] = matrices[ int(joint*2+1) ]; + + joint = vertex.color.b * 255; + dualQuats[4] = matrices[ int(joint*2+0) ]; + dualQuats[5] = matrices[ int(joint*2+1) ]; + + joint = vertex.color.a * 255; + dualQuats[6] = matrices[ int(joint*2+0) ]; + dualQuats[7] = matrices[ int(joint*2+1) ]; + + // Find rot directions + if (dot4(dualQuats[0], dualQuats[2]) < 0.0) + w1 = -w1; + if (dot4(dualQuats[0], dualQuats[4]) < 0.0) + w2 = -w2; + if (dot4(dualQuats[0], dualQuats[6]) < 0.0) + w3 = -w3; + + // blend dualquats + float4 Trans0 = dualQuats[0] * w0; + float4 Trans1 = dualQuats[1] * w0; + Trans0 += dualQuats[2] * w1; + Trans1 += dualQuats[3] * w1; + Trans0 += dualQuats[4] * w2; + Trans1 += dualQuats[5] * w2; + Trans0 += dualQuats[6] * w3; + Trans1 += dualQuats[7] * w3; + + // Normalize + float invlen = 1.0/length(Trans0); + Trans0 *= invlen; + Trans1 *= invlen; + + float4 LocPos = vertexPosition; + position.xyz = LocPos.xyz + 2.0 * cross(Trans0.xyz, cross(Trans0.xyz, LocPos.xyz) + Trans0.w * LocPos.xyz); + position.xyz += 2.0 * (Trans0.w * Trans1.xyz - Trans1.w * Trans0.xyz + cross(Trans0.xyz, Trans1.xyz)); + position.w = 1.0; + } + } + +#else +#error "unknown platform" +#endif diff --git a/bin/base/decls/renderprogs/skinning_normals.inc b/bin/base/decls/renderprogs/skinning_normals.inc new file mode 100644 index 0000000..ca66396 --- /dev/null +++ b/bin/base/decls/renderprogs/skinning_normals.inc @@ -0,0 +1,339 @@ + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + float4 normal = vertex.normal * 2.0 - 1.0; + float4 tangent = vertex.tangent * 2.0 - 1.0; + float morphScale = 0.0f; + +#if defined( XBOX ) + + if ( bHardwareSkinning ) { + float4 vertexPosition = position; + if ( bHardwareMorphing ) { +#if 0 + // Fetch the morph value with inline asm, + // so it only gets getched when bHardwareMorphing is + // enabled. If we just used vertex.morph.xyz, it would + // always be fetched, and gives streams of Pix warnings + // when the stream buffer is bound to NULL. + float4 vertexMorph; + int index = vertex.index; + asm { + vfetch vertexMorph, index, color2 + }; + float3 morphVector = ( vertexMorph.xyz * 2 ) - 1; + morphScale = vertexMorph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); +#else + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); +#endif + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.a * 255.1; + asm { + vfetch matX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch matY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch matZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + + matX *= w0; + matY *= w0; + matZ *= w0; + + float4 tmatX, tmatY, tmatZ; + joint = vertex.color.b * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w1; + matY += tmatY * w1; + matZ += tmatZ * w1; + + joint = vertex.color.g * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w2; + matY += tmatY * w2; + matZ += tmatZ * w2; + + joint = vertex.color.r * 255.1; + asm { + vfetch tmatX, joint, position1, UseTextureCache=true, RoundIndex = true + vfetch tmatY, joint, position2, UseTextureCache=true, RoundIndex = true + vfetch tmatZ, joint, position3, UseTextureCache=true, RoundIndex = true + }; + matX += tmatX * w3; + matY += tmatY * w3; + matZ += tmatZ * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } + +#elif defined( PS3 ) + + if ( hardwareSkinning ) { + float4 vertexPosition = position; + if ( hardwareMorphing ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); + } + + // multiplying with 255.1 give us the same result and is faster than floor( w * 255 + 0.5 ) + float weights = vertex.normal.w * 255.1; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255.1 * 3; + matX = matrices[joint+0] * w0; + matY = matrices[joint+1] * w0; + matZ = matrices[joint+2] * w0; + + joint = vertex.color.g * 255.1 * 3; + matX += matrices[joint+0] * w1; + matY += matrices[joint+1] * w1; + matZ += matrices[joint+2] * w1; + + joint = vertex.color.b * 255.1 * 3; + matX += matrices[joint+0] * w2; + matY += matrices[joint+1] * w2; + matZ += matrices[joint+2] * w2; + + joint = vertex.color.a * 255.1 * 3; + matX += matrices[joint+0] * w3; + matY += matrices[joint+1] * w3; + matZ += matrices[joint+2] * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } + +#elif defined( PC_D3D ) + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = position; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } + +#elif defined( PC ) + + if ( hardwareSkinning.x != 0.0 ) { + float4 vertexPosition = position; + if ( hardwareSkinning.y != 0.0 ) { + float3 morphVector = ( vertex.morph.xyz * 2 ) - 1; + morphScale = vertex.morph.w; + vertexPosition.xyz += ( morphVector * morphScale * 32.0f ); + } + + float weights = vertex.normal.w * 255; // [0, 1] -> [0, 255] + float w1 = floor( weights / 16 ); // [0, 15] (= 4 bits) + float w2 = floor( weights / 4 ) - ( w1 * 4 ); // [0, 3] (= 2 bits) + float w3 = weights - ( w2 * 4 ) - ( w1 * 16 ); // [0, 3] (= 2 bits) + + w1 *= 1.0 / 30.0; // [0, 15] -> [0, 1/2] + w2 *= 1.0 / 9.0; // [0, 3] -> [0, 1/3] + w3 *= 1.0 / 12.0; // [0, 3] -> [0, 1/4] + + float w0 = 1 - ( w1 + w2 + w3 ); // [1/4, 1] + + if ( hardwareSkinning.z == 0.0 ) { + float4 matX, matY, matZ; + + float joint = vertex.color.r * 255; + matX = matrices[int(joint*3+0)] * w0; + matY = matrices[int(joint*3+1)] * w0; + matZ = matrices[int(joint*3+2)] * w0; + + joint = vertex.color.g * 255; + matX += matrices[int(joint*3+0)] * w1; + matY += matrices[int(joint*3+1)] * w1; + matZ += matrices[int(joint*3+2)] * w1; + + joint = vertex.color.b * 255; + matX += matrices[int(joint*3+0)] * w2; + matY += matrices[int(joint*3+1)] * w2; + matZ += matrices[int(joint*3+2)] * w2; + + joint = vertex.color.a * 255; + matX += matrices[int(joint*3+0)] * w3; + matY += matrices[int(joint*3+1)] * w3; + matZ += matrices[int(joint*3+2)] * w3; + + position.x = dot4( vertexPosition, matX ); + position.y = dot4( vertexPosition, matY ); + position.z = dot4( vertexPosition, matZ ); + position.w = 1.0; + + float4 tempNormal = normal; + normal.x = dot3( tempNormal, matX ); + normal.y = dot3( tempNormal, matY ); + normal.z = dot3( tempNormal, matZ ); + + float4 tempTangent = tangent; + tangent.x = dot3( tempTangent, matX ); + tangent.y = dot3( tempTangent, matY ); + tangent.z = dot3( tempTangent, matZ ); + } else { + // Dual quat skinning + float4 dualQuats[ 8 ]; + float joint = vertex.color.r * 255; + dualQuats[0] = matrices[ int(joint*2+0) ]; + dualQuats[1] = matrices[ int(joint*2+1) ]; + + joint = vertex.color.g * 255; + dualQuats[2] = matrices[ int(joint*2+0) ]; + dualQuats[3] = matrices[ int(joint*2+1) ]; + + joint = vertex.color.b * 255; + dualQuats[4] = matrices[ int(joint*2+0) ]; + dualQuats[5] = matrices[ int(joint*2+1) ]; + + joint = vertex.color.a * 255; + dualQuats[6] = matrices[ int(joint*2+0) ]; + dualQuats[7] = matrices[ int(joint*2+1) ]; + + // Find rot directions + if (dot4(dualQuats[0], dualQuats[2]) < 0.0) + w1 = -w1; + if (dot4(dualQuats[0], dualQuats[4]) < 0.0) + w2 = -w2; + if (dot4(dualQuats[0], dualQuats[6]) < 0.0) + w3 = -w3; + + // blend dualquats + float4 Trans0 = dualQuats[0] * w0; + float4 Trans1 = dualQuats[1] * w0; + Trans0 += dualQuats[2] * w1; + Trans1 += dualQuats[3] * w1; + Trans0 += dualQuats[4] * w2; + Trans1 += dualQuats[5] * w2; + Trans0 += dualQuats[6] * w3; + Trans1 += dualQuats[7] * w3; + + // Normalize + float invlen = 1.0/length(Trans0); + Trans0 *= invlen; + Trans1 *= invlen; + + float4 LocPos = vertexPosition; + position.xyz = LocPos.xyz + 2.0 * cross(Trans0.xyz, cross(Trans0.xyz, LocPos.xyz) + Trans0.w * LocPos.xyz); + position.xyz += 2.0 * (Trans0.w * Trans1.xyz - Trans1.w * Trans0.xyz + cross(Trans0.xyz, Trans1.xyz)); + position.w = 1.0; + + normal.xyz = normal.xyz + 2.0 * cross(Trans0.xyz, cross(Trans0.xyz, normal.xyz) + Trans0.w * normal.xyz); + + tangent.xyz = tangent.xyz + 2.0 * cross(Trans0.xyz, cross(Trans0.xyz, tangent.xyz) + Trans0.w * tangent.xyz); + } + } + +#else +#error "unknown platform" +#endif + + float3 bitangent = cross( normal.xyz, tangent.xyz ) * tangent.w; diff --git a/bin/base/decls/renderprogs/softparticle_fp.inc b/bin/base/decls/renderprogs/softparticle_fp.inc new file mode 100644 index 0000000..2deeb85 --- /dev/null +++ b/bin/base/decls/renderprogs/softparticle_fp.inc @@ -0,0 +1,15 @@ + +#ifdef XBOX +float interpolatedZOverW = fragment.texcoord3.z / fragment.texcoord3.w; +#else +float interpolatedZOverW = fragment.position.z; +#endif + +float fogVal = fragment.texcoord0.z; +float alphaScale = fragment.texcoord0.w; +float frameFrac = fragment.texcoord1.z; + +float2 screenTC = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); +float scale = ComputeSoftParticleScale( $viewDepthMap, screenTC, interpolatedZOverW, alphaScale ); + +half4 color = ComputeAnimCrossFadeColor( $transMap, fragment.texcoord0.xy, fragment.texcoord1.xy, frameFrac ); diff --git a/bin/base/decls/renderprogs/softparticle_vp.inc b/bin/base/decls/renderprogs/softparticle_vp.inc new file mode 100644 index 0000000..8b55230 --- /dev/null +++ b/bin/base/decls/renderprogs/softparticle_vp.inc @@ -0,0 +1,48 @@ + +result.position.x = dot4( vertex.position, $mvpMatrixX ); +result.position.y = dot4( vertex.position, $mvpMatrixY ); +result.position.z = dot4( vertex.position, $mvpMatrixZ ); +result.position.w = dot4( vertex.position, $mvpMatrixW ); + +const float eyeDist = result.position.w; +const float frameFrac = vertex.tangent.z; +const float alphascale = vertex.tangent.w; +const float4 genericParm = vertex.normal; + +// create thickness based on alpha scale +float thickness = ( ( 1.0 - alphascale ) * 127.0 ) / eyeDist; + +// fade particle based on distance to near clip and thickness +float fade = saturate( abs( eyeDist ) / ( ( 1.0 - alphascale ) * 127.0 ) ); + +const float fogTerm = -( clamp( eyeDist - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); +// moving the fogVal calculation to the vert shader for particles does not appear to cause any artifacts +const float fogVal = saturate( exp2( fogTerm ) ); + +// Convert back from 16 bit vertex elements. +result.texcoord0.xy = vertex.texcoord0.xy * $particleStScaleBias.x + $particleStScaleBias.y; +result.texcoord0.z = fogVal; +result.texcoord0.w = alphascale; + +// Convert back from 16 bit vertex elements. +result.texcoord1.xy = vertex.texcoord1.xy * $particleStScaleBias.x + $particleStScaleBias.y; +result.texcoord1.z = frameFrac; +result.texcoord1.w = 0.0; + +//result.texcoord2.x = genericParm.x * 10.0 + 1.0; // color multiply +//result.texcoord2.y = genericParm.y * 10.0 + 1.0; // alpha multiply +//result.texcoord2.z = 1.0 - genericParm.z; // color screen +//result.texcoord2.w = genericParm.w; // + +// pw-note: this works absolutely crap if you have particles locked in certain axes. +// light streaks will have a fake depth that isn't really correct and end up infront of depth causing flickering +// Use the 'Depth Offset' in the particle system instead to achive exactly this in a proper way. +// adding half of the alpha scale to create a fake thickness to the particle +// makes particles that are flat against surfaces show up much better, result: need fewer particles. +//result.position.z -= thickness; + +#ifdef XBOX + result.texcoord3 = result.position; +#endif + +float4 vertColor = swizzleColor( vertex.color ); diff --git a/bin/base/generated/decls/renderparm/adaptiveglareblurmap.decl b/bin/base/generated/decls/renderparm/adaptiveglareblurmap.decl new file mode 100644 index 0000000..cdc9c96 --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglareblurmap.decl @@ -0,0 +1 @@ +{ Tex _screenMip3_alt } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveglareblurstep.decl b/bin/base/generated/decls/renderparm/adaptiveglareblurstep.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglareblurstep.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveglarecolor.decl b/bin/base/generated/decls/renderparm/adaptiveglarecolor.decl new file mode 100644 index 0000000..a391f09 --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglarecolor.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 1.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveglaremap.decl b/bin/base/generated/decls/renderparm/adaptiveglaremap.decl new file mode 100644 index 0000000..cdc9c96 --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglaremap.decl @@ -0,0 +1 @@ +{ Tex _screenMip3_alt } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveglaremapalt.decl b/bin/base/generated/decls/renderparm/adaptiveglaremapalt.decl new file mode 100644 index 0000000..0437efc --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglaremapalt.decl @@ -0,0 +1 @@ +{ Tex _screenMip3 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveglareparms.decl b/bin/base/generated/decls/renderparm/adaptiveglareparms.decl new file mode 100644 index 0000000..281a71c --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglareparms.decl @@ -0,0 +1 @@ +{ Vec { 0.2, 0.8, 0.5, 0.1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveglarethreshold.decl b/bin/base/generated/decls/renderparm/adaptiveglarethreshold.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveglarethreshold.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/adaptiveluminance.decl b/bin/base/generated/decls/renderparm/adaptiveluminance.decl new file mode 100644 index 0000000..a885dc0 --- /dev/null +++ b/bin/base/generated/decls/renderparm/adaptiveluminance.decl @@ -0,0 +1 @@ +{ Tex _luminosityImage } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/addprogram.decl b/bin/base/generated/decls/renderparm/addprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/addprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/allowblendedpassmerge.decl b/bin/base/generated/decls/renderparm/allowblendedpassmerge.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/allowblendedpassmerge.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/allowoverlays.decl b/bin/base/generated/decls/renderparm/allowoverlays.decl new file mode 100644 index 0000000..f73bd54 --- /dev/null +++ b/bin/base/generated/decls/renderparm/allowoverlays.decl @@ -0,0 +1 @@ +{ Vec 1 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/alphascale.decl b/bin/base/generated/decls/renderparm/alphascale.decl new file mode 100644 index 0000000..8980805 --- /dev/null +++ b/bin/base/generated/decls/renderparm/alphascale.decl @@ -0,0 +1 @@ +{ Vec 64 range 1.0, 100.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/altbumpcontribution.decl b/bin/base/generated/decls/renderparm/altbumpcontribution.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/altbumpcontribution.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/altdiffusecontribution.decl b/bin/base/generated/decls/renderparm/altdiffusecontribution.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/altdiffusecontribution.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/altmaterial.decl b/bin/base/generated/decls/renderparm/altmaterial.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/altmaterial.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/altscale.decl b/bin/base/generated/decls/renderparm/altscale.decl new file mode 100644 index 0000000..8591a7c --- /dev/null +++ b/bin/base/generated/decls/renderparm/altscale.decl @@ -0,0 +1 @@ +{ Vec 64 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/ambientenvmap.decl b/bin/base/generated/decls/renderparm/ambientenvmap.decl new file mode 100644 index 0000000..5fc3ea4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/ambientenvmap.decl @@ -0,0 +1 @@ +{ Environment env/ambiTest_px } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/ambientlightcolor.decl b/bin/base/generated/decls/renderparm/ambientlightcolor.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/ambientlightcolor.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/ambientprogram.decl b/bin/base/generated/decls/renderparm/ambientprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/ambientprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/arealight.decl b/bin/base/generated/decls/renderparm/arealight.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/arealight.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/autospritetype.decl b/bin/base/generated/decls/renderparm/autospritetype.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/autospritetype.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/bakedvieworigin.decl b/bin/base/generated/decls/renderparm/bakedvieworigin.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/bakedvieworigin.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/binkcb.decl b/bin/base/generated/decls/renderparm/binkcb.decl new file mode 100644 index 0000000..c909cb9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/binkcb.decl @@ -0,0 +1 @@ +{ Tex _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/binkcr.decl b/bin/base/generated/decls/renderparm/binkcr.decl new file mode 100644 index 0000000..c909cb9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/binkcr.decl @@ -0,0 +1 @@ +{ Tex _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/binky.decl b/bin/base/generated/decls/renderparm/binky.decl new file mode 100644 index 0000000..c909cb9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/binky.decl @@ -0,0 +1 @@ +{ Tex _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/blendprogram.decl b/bin/base/generated/decls/renderparm/blendprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/blendprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/brightnessscale.decl b/bin/base/generated/decls/renderparm/brightnessscale.decl new file mode 100644 index 0000000..922a07a --- /dev/null +++ b/bin/base/generated/decls/renderparm/brightnessscale.decl @@ -0,0 +1 @@ +{ Vec 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/buildareaoriginindex.decl b/bin/base/generated/decls/renderparm/buildareaoriginindex.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/buildareaoriginindex.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/bumpmap.decl b/bin/base/generated/decls/renderparm/bumpmap.decl new file mode 100644 index 0000000..e34e468 --- /dev/null +++ b/bin/base/generated/decls/renderparm/bumpmap.decl @@ -0,0 +1 @@ +{ String constantColor(0.5,0.5,1,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbblacklevel.decl b/bin/base/generated/decls/renderparm/cbblacklevel.decl new file mode 100644 index 0000000..5deddc3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbblacklevel.decl @@ -0,0 +1 @@ +{ Vec 0 range -1.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbbrightness.decl b/bin/base/generated/decls/renderparm/cbbrightness.decl new file mode 100644 index 0000000..f1805bf --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbbrightness.decl @@ -0,0 +1 @@ +{ Vec 1 range 0.4, 1.8 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbcolorburn.decl b/bin/base/generated/decls/renderparm/cbcolorburn.decl new file mode 100644 index 0000000..4b783d4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbcolorburn.decl @@ -0,0 +1 @@ +{ Vec 1 range 0.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbcolordodge.decl b/bin/base/generated/decls/renderparm/cbcolordodge.decl new file mode 100644 index 0000000..09aa841 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbcolordodge.decl @@ -0,0 +1 @@ +{ Vec 0 range 0.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbcolormultiply.decl b/bin/base/generated/decls/renderparm/cbcolormultiply.decl new file mode 100644 index 0000000..4b783d4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbcolormultiply.decl @@ -0,0 +1 @@ +{ Vec 1 range 0.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbcolorscreen.decl b/bin/base/generated/decls/renderparm/cbcolorscreen.decl new file mode 100644 index 0000000..09aa841 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbcolorscreen.decl @@ -0,0 +1 @@ +{ Vec 0 range 0.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbconversionlut.decl b/bin/base/generated/decls/renderparm/cbconversionlut.decl new file mode 100644 index 0000000..991986b --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbconversionlut.decl @@ -0,0 +1 @@ +{ Tex _colorBalanceLUT } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbdesaturate.decl b/bin/base/generated/decls/renderparm/cbdesaturate.decl new file mode 100644 index 0000000..58717b0 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbdesaturate.decl @@ -0,0 +1 @@ +{ Vec { 0.0 } range 0.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbhighlight.decl b/bin/base/generated/decls/renderparm/cbhighlight.decl new file mode 100644 index 0000000..b30b0e6 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbhighlight.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 1 } range -100.0, 100.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbmidtone.decl b/bin/base/generated/decls/renderparm/cbmidtone.decl new file mode 100644 index 0000000..b30b0e6 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbmidtone.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 1 } range -100.0, 100.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cbshadow.decl b/bin/base/generated/decls/renderparm/cbshadow.decl new file mode 100644 index 0000000..b30b0e6 --- /dev/null +++ b/bin/base/generated/decls/renderparm/cbshadow.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 1 } range -100.0, 100.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/channellight0.decl b/bin/base/generated/decls/renderparm/channellight0.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/channellight0.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/channellight1.decl b/bin/base/generated/decls/renderparm/channellight1.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/channellight1.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/channellight2.decl b/bin/base/generated/decls/renderparm/channellight2.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/channellight2.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/channellight3.decl b/bin/base/generated/decls/renderparm/channellight3.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/channellight3.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/channellight4.decl b/bin/base/generated/decls/renderparm/channellight4.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/channellight4.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/channellight5.decl b/bin/base/generated/decls/renderparm/channellight5.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/channellight5.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cloudscale.decl b/bin/base/generated/decls/renderparm/cloudscale.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/cloudscale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cloudscale1.decl b/bin/base/generated/decls/renderparm/cloudscale1.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/cloudscale1.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/color.decl b/bin/base/generated/decls/renderparm/color.decl new file mode 100644 index 0000000..fb57b38 --- /dev/null +++ b/bin/base/generated/decls/renderparm/color.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 1 } color } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contentflags.decl b/bin/base/generated/decls/renderparm/contentflags.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/contentflags.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_aasclusterportal.decl b/bin/base/generated/decls/renderparm/contents_aasclusterportal.decl new file mode 100644 index 0000000..b45b912 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_aasclusterportal.decl @@ -0,0 +1 @@ +{ Vec 268435456 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_aasfly.decl b/bin/base/generated/decls/renderparm/contents_aasfly.decl new file mode 100644 index 0000000..f0e1808 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_aasfly.decl @@ -0,0 +1 @@ +{ Vec 33554432 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_aasobstacle.decl b/bin/base/generated/decls/renderparm/contents_aasobstacle.decl new file mode 100644 index 0000000..7c5a8ac --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_aasobstacle.decl @@ -0,0 +1 @@ +{ Vec 134217728 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_aassolid.decl b/bin/base/generated/decls/renderparm/contents_aassolid.decl new file mode 100644 index 0000000..e6cb091 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_aassolid.decl @@ -0,0 +1 @@ +{ Vec 67108864 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_aaswalkablewall.decl b/bin/base/generated/decls/renderparm/contents_aaswalkablewall.decl new file mode 100644 index 0000000..1ef1aa8 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_aaswalkablewall.decl @@ -0,0 +1 @@ +{ Vec 536870912 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_ai.decl b/bin/base/generated/decls/renderparm/contents_ai.decl new file mode 100644 index 0000000..3d9a57f --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_ai.decl @@ -0,0 +1 @@ +{ Vec 1024 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_aiaware.decl b/bin/base/generated/decls/renderparm/contents_aiaware.decl new file mode 100644 index 0000000..47ee7e9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_aiaware.decl @@ -0,0 +1 @@ +{ Vec 512 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_breakable.decl b/bin/base/generated/decls/renderparm/contents_breakable.decl new file mode 100644 index 0000000..53ce5ba --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_breakable.decl @@ -0,0 +1 @@ +{ Vec 8192 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_contextualcover_clip.decl b/bin/base/generated/decls/renderparm/contents_contextualcover_clip.decl new file mode 100644 index 0000000..9fe73f3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_contextualcover_clip.decl @@ -0,0 +1 @@ +{ Vec 262144 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_corpse.decl b/bin/base/generated/decls/renderparm/contents_corpse.decl new file mode 100644 index 0000000..531a1ea --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_corpse.decl @@ -0,0 +1 @@ +{ Vec 4096 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_ikclip.decl b/bin/base/generated/decls/renderparm/contents_ikclip.decl new file mode 100644 index 0000000..484865e --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_ikclip.decl @@ -0,0 +1 @@ +{ Vec 256 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_monsterclip.decl b/bin/base/generated/decls/renderparm/contents_monsterclip.decl new file mode 100644 index 0000000..83616a4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_monsterclip.decl @@ -0,0 +1 @@ +{ Vec 16 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_monstercoverclip.decl b/bin/base/generated/decls/renderparm/contents_monstercoverclip.decl new file mode 100644 index 0000000..b7cd10c --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_monstercoverclip.decl @@ -0,0 +1 @@ +{ Vec 1048576 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_moveableclip.decl b/bin/base/generated/decls/renderparm/contents_moveableclip.decl new file mode 100644 index 0000000..daec7d1 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_moveableclip.decl @@ -0,0 +1 @@ +{ Vec 64 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_nocover.decl b/bin/base/generated/decls/renderparm/contents_nocover.decl new file mode 100644 index 0000000..f671688 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_nocover.decl @@ -0,0 +1 @@ +{ Vec 1073741824 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_nonsolid.decl b/bin/base/generated/decls/renderparm/contents_nonsolid.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_nonsolid.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_obstacle.decl b/bin/base/generated/decls/renderparm/contents_obstacle.decl new file mode 100644 index 0000000..4db3e75 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_obstacle.decl @@ -0,0 +1 @@ +{ Vec 131072 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_opaque.decl b/bin/base/generated/decls/renderparm/contents_opaque.decl new file mode 100644 index 0000000..f346fee --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_opaque.decl @@ -0,0 +1 @@ +{ Vec 2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_player.decl b/bin/base/generated/decls/renderparm/contents_player.decl new file mode 100644 index 0000000..1b74b0c --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_player.decl @@ -0,0 +1 @@ +{ Vec 32768 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_playerclip.decl b/bin/base/generated/decls/renderparm/contents_playerclip.decl new file mode 100644 index 0000000..ed72dd2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_playerclip.decl @@ -0,0 +1 @@ +{ Vec 8 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_playercoverclip.decl b/bin/base/generated/decls/renderparm/contents_playercoverclip.decl new file mode 100644 index 0000000..5ff960a --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_playercoverclip.decl @@ -0,0 +1 @@ +{ Vec 524288 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_playerfocus.decl b/bin/base/generated/decls/renderparm/contents_playerfocus.decl new file mode 100644 index 0000000..cbddcac --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_playerfocus.decl @@ -0,0 +1 @@ +{ Vec 2097152 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_projectile.decl b/bin/base/generated/decls/renderparm/contents_projectile.decl new file mode 100644 index 0000000..dcb0813 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_projectile.decl @@ -0,0 +1 @@ +{ Vec 2048 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_shotclip.decl b/bin/base/generated/decls/renderparm/contents_shotclip.decl new file mode 100644 index 0000000..dcc11a5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_shotclip.decl @@ -0,0 +1 @@ +{ Vec 128 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_solid.decl b/bin/base/generated/decls/renderparm/contents_solid.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_solid.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_tickclip.decl b/bin/base/generated/decls/renderparm/contents_tickclip.decl new file mode 100644 index 0000000..babf7ae --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_tickclip.decl @@ -0,0 +1 @@ +{ Vec 16777216 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_trigger.decl b/bin/base/generated/decls/renderparm/contents_trigger.decl new file mode 100644 index 0000000..511d280 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_trigger.decl @@ -0,0 +1 @@ +{ Vec 16384 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/contents_water.decl b/bin/base/generated/decls/renderparm/contents_water.decl new file mode 100644 index 0000000..f9cf161 --- /dev/null +++ b/bin/base/generated/decls/renderparm/contents_water.decl @@ -0,0 +1 @@ +{ Vec 4 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/coverage.decl b/bin/base/generated/decls/renderparm/coverage.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/coverage.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/covermap.decl b/bin/base/generated/decls/renderparm/covermap.decl new file mode 100644 index 0000000..c95da83 --- /dev/null +++ b/bin/base/generated/decls/renderparm/covermap.decl @@ -0,0 +1 @@ +{ String constantColor(1,1,1,1) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/cpumap.decl b/bin/base/generated/decls/renderparm/cpumap.decl new file mode 100644 index 0000000..9bbd67d --- /dev/null +++ b/bin/base/generated/decls/renderparm/cpumap.decl @@ -0,0 +1 @@ +{ String constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/deathfadeopacity.decl b/bin/base/generated/decls/renderparm/deathfadeopacity.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/deathfadeopacity.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/decalpos.decl b/bin/base/generated/decls/renderparm/decalpos.decl new file mode 100644 index 0000000..409c43d --- /dev/null +++ b/bin/base/generated/decls/renderparm/decalpos.decl @@ -0,0 +1 @@ +{ Vec { 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/decalpostolocalboxspacew.decl b/bin/base/generated/decls/renderparm/decalpostolocalboxspacew.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/decalpostolocalboxspacew.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/decalpostolocalboxspacex.decl b/bin/base/generated/decls/renderparm/decalpostolocalboxspacex.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/decalpostolocalboxspacex.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/decalpostolocalboxspacey.decl b/bin/base/generated/decls/renderparm/decalpostolocalboxspacey.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/decalpostolocalboxspacey.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/decalpostolocalboxspacez.decl b/bin/base/generated/decls/renderparm/decalpostolocalboxspacez.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/decalpostolocalboxspacez.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/decalprojtype.decl b/bin/base/generated/decls/renderparm/decalprojtype.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/decalprojtype.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/depthbasedcolorgrading.decl b/bin/base/generated/decls/renderparm/depthbasedcolorgrading.decl new file mode 100644 index 0000000..dd91aa9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/depthbasedcolorgrading.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/depthfillfadeprogram.decl b/bin/base/generated/decls/renderparm/depthfillfadeprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/depthfillfadeprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/depthfillprogram.decl b/bin/base/generated/decls/renderparm/depthfillprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/depthfillprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/depthoffield.decl b/bin/base/generated/decls/renderparm/depthoffield.decl new file mode 100644 index 0000000..f3a1771 --- /dev/null +++ b/bin/base/generated/decls/renderparm/depthoffield.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 5500.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/depthoffield2.decl b/bin/base/generated/decls/renderparm/depthoffield2.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/depthoffield2.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/diffusemap.decl b/bin/base/generated/decls/renderparm/diffusemap.decl new file mode 100644 index 0000000..9bbd67d --- /dev/null +++ b/bin/base/generated/decls/renderparm/diffusemap.decl @@ -0,0 +1 @@ +{ String constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/dimshadowclipplane.decl b/bin/base/generated/decls/renderparm/dimshadowclipplane.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/dimshadowclipplane.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/dimshadowdepthmap.decl b/bin/base/generated/decls/renderparm/dimshadowdepthmap.decl new file mode 100644 index 0000000..6bb3a1f --- /dev/null +++ b/bin/base/generated/decls/renderparm/dimshadowdepthmap.decl @@ -0,0 +1 @@ +{ TexShadow2D _dimShadow_d } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/dimshadowextrude.decl b/bin/base/generated/decls/renderparm/dimshadowextrude.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/dimshadowextrude.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/dimshadowfade.decl b/bin/base/generated/decls/renderparm/dimshadowfade.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/dimshadowfade.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/discrete.decl b/bin/base/generated/decls/renderparm/discrete.decl new file mode 100644 index 0000000..b4f2678 --- /dev/null +++ b/bin/base/generated/decls/renderparm/discrete.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/distortionfade.decl b/bin/base/generated/decls/renderparm/distortionfade.decl new file mode 100644 index 0000000..57c9a4c --- /dev/null +++ b/bin/base/generated/decls/renderparm/distortionfade.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 4.0, 600.0, 700.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/distortionlastframemap.decl b/bin/base/generated/decls/renderparm/distortionlastframemap.decl new file mode 100644 index 0000000..16efd11 --- /dev/null +++ b/bin/base/generated/decls/renderparm/distortionlastframemap.decl @@ -0,0 +1 @@ +{ Tex2D _distortion0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/distortionmap.decl b/bin/base/generated/decls/renderparm/distortionmap.decl new file mode 100644 index 0000000..12e7968 --- /dev/null +++ b/bin/base/generated/decls/renderparm/distortionmap.decl @@ -0,0 +1 @@ +{ Tex _black } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/distortionscale.decl b/bin/base/generated/decls/renderparm/distortionscale.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/distortionscale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/dither256map.decl b/bin/base/generated/decls/renderparm/dither256map.decl new file mode 100644 index 0000000..7742249 --- /dev/null +++ b/bin/base/generated/decls/renderparm/dither256map.decl @@ -0,0 +1 @@ +{ Tex2D _dither256 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/diversity.decl b/bin/base/generated/decls/renderparm/diversity.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/diversity.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/doublevision.decl b/bin/base/generated/decls/renderparm/doublevision.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/doublevision.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/dynamicenvmap.decl b/bin/base/generated/decls/renderparm/dynamicenvmap.decl new file mode 100644 index 0000000..3e8ec2e --- /dev/null +++ b/bin/base/generated/decls/renderparm/dynamicenvmap.decl @@ -0,0 +1 @@ +{ TexCube _environment } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/editoralpha.decl b/bin/base/generated/decls/renderparm/editoralpha.decl new file mode 100644 index 0000000..7cdd016 --- /dev/null +++ b/bin/base/generated/decls/renderparm/editoralpha.decl @@ -0,0 +1 @@ +{ Vec 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/editorcolor.decl b/bin/base/generated/decls/renderparm/editorcolor.decl new file mode 100644 index 0000000..306c099 --- /dev/null +++ b/bin/base/generated/decls/renderparm/editorcolor.decl @@ -0,0 +1 @@ +{ Vec 0.5 color } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/editordraw.decl b/bin/base/generated/decls/renderparm/editordraw.decl new file mode 100644 index 0000000..76aba14 --- /dev/null +++ b/bin/base/generated/decls/renderparm/editordraw.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/editormap.decl b/bin/base/generated/decls/renderparm/editormap.decl new file mode 100644 index 0000000..ffd696e --- /dev/null +++ b/bin/base/generated/decls/renderparm/editormap.decl @@ -0,0 +1 @@ +{ tex _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envblendmip.decl b/bin/base/generated/decls/renderparm/envblendmip.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/envblendmip.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envblendtime.decl b/bin/base/generated/decls/renderparm/envblendtime.decl new file mode 100644 index 0000000..e001c6d --- /dev/null +++ b/bin/base/generated/decls/renderparm/envblendtime.decl @@ -0,0 +1 @@ +{ Vec 2.2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envgrazingscale.decl b/bin/base/generated/decls/renderparm/envgrazingscale.decl new file mode 100644 index 0000000..5e395f7 --- /dev/null +++ b/bin/base/generated/decls/renderparm/envgrazingscale.decl @@ -0,0 +1 @@ +{ Vec 1 color } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envmap.decl b/bin/base/generated/decls/renderparm/envmap.decl new file mode 100644 index 0000000..a1258a6 --- /dev/null +++ b/bin/base/generated/decls/renderparm/envmap.decl @@ -0,0 +1 @@ +{ TexCube env/default_px } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envmaprotation.decl b/bin/base/generated/decls/renderparm/envmaprotation.decl new file mode 100644 index 0000000..992e1aa --- /dev/null +++ b/bin/base/generated/decls/renderparm/envmaprotation.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 0 } range -180.0, 180.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envrmatrix.decl b/bin/base/generated/decls/renderparm/envrmatrix.decl new file mode 100644 index 0000000..de8683e --- /dev/null +++ b/bin/base/generated/decls/renderparm/envrmatrix.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envscale.decl b/bin/base/generated/decls/renderparm/envscale.decl new file mode 100644 index 0000000..5e395f7 --- /dev/null +++ b/bin/base/generated/decls/renderparm/envscale.decl @@ -0,0 +1 @@ +{ Vec 1 color } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envsmatrix.decl b/bin/base/generated/decls/renderparm/envsmatrix.decl new file mode 100644 index 0000000..00019e8 --- /dev/null +++ b/bin/base/generated/decls/renderparm/envsmatrix.decl @@ -0,0 +1 @@ +{ Vec { 1, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/envtmatrix.decl b/bin/base/generated/decls/renderparm/envtmatrix.decl new file mode 100644 index 0000000..8b6cdba --- /dev/null +++ b/bin/base/generated/decls/renderparm/envtmatrix.decl @@ -0,0 +1 @@ +{ Vec { 0, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/exposure.decl b/bin/base/generated/decls/renderparm/exposure.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/exposure.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/eyehighlightpowlevel.decl b/bin/base/generated/decls/renderparm/eyehighlightpowlevel.decl new file mode 100644 index 0000000..dfc19a1 --- /dev/null +++ b/bin/base/generated/decls/renderparm/eyehighlightpowlevel.decl @@ -0,0 +1 @@ +{ Vec { 60, 0.75, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/fademap.decl b/bin/base/generated/decls/renderparm/fademap.decl new file mode 100644 index 0000000..eb81376 --- /dev/null +++ b/bin/base/generated/decls/renderparm/fademap.decl @@ -0,0 +1 @@ +{ Tex2D _black } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/fadeperturbprogram.decl b/bin/base/generated/decls/renderparm/fadeperturbprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/fadeperturbprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/feedbackcolormap.decl b/bin/base/generated/decls/renderparm/feedbackcolormap.decl new file mode 100644 index 0000000..1243e6e --- /dev/null +++ b/bin/base/generated/decls/renderparm/feedbackcolormap.decl @@ -0,0 +1 @@ +{ TexMultisample2D _frontColor } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/flareoriginndc.decl b/bin/base/generated/decls/renderparm/flareoriginndc.decl new file mode 100644 index 0000000..83ac0cf --- /dev/null +++ b/bin/base/generated/decls/renderparm/flareoriginndc.decl @@ -0,0 +1 @@ +{ Vec { 0.0, 0.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/fogcolor.decl b/bin/base/generated/decls/renderparm/fogcolor.decl new file mode 100644 index 0000000..73d6578 --- /dev/null +++ b/bin/base/generated/decls/renderparm/fogcolor.decl @@ -0,0 +1 @@ +{ Vec { 0.2, 0.43, 0.5 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/fogend.decl b/bin/base/generated/decls/renderparm/fogend.decl new file mode 100644 index 0000000..f1d2708 --- /dev/null +++ b/bin/base/generated/decls/renderparm/fogend.decl @@ -0,0 +1 @@ +{ Vec 300000 range 0, 300000 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/fogscale.decl b/bin/base/generated/decls/renderparm/fogscale.decl new file mode 100644 index 0000000..3420f4d --- /dev/null +++ b/bin/base/generated/decls/renderparm/fogscale.decl @@ -0,0 +1 @@ +{ Vec 0.00005 range 0, 0.0002 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/fogstart.decl b/bin/base/generated/decls/renderparm/fogstart.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/fogstart.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/forceopaque.decl b/bin/base/generated/decls/renderparm/forceopaque.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/forceopaque.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/framenumber.decl b/bin/base/generated/decls/renderparm/framenumber.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/framenumber.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/glaremap.decl b/bin/base/generated/decls/renderparm/glaremap.decl new file mode 100644 index 0000000..bd18a58 --- /dev/null +++ b/bin/base/generated/decls/renderparm/glaremap.decl @@ -0,0 +1 @@ +{ Tex _screenMip3 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/glaremax.decl b/bin/base/generated/decls/renderparm/glaremax.decl new file mode 100644 index 0000000..53d5f9a --- /dev/null +++ b/bin/base/generated/decls/renderparm/glaremax.decl @@ -0,0 +1 @@ +{ Vec 10 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/glareprescale.decl b/bin/base/generated/decls/renderparm/glareprescale.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/glareprescale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/glarescale.decl b/bin/base/generated/decls/renderparm/glarescale.decl new file mode 100644 index 0000000..07cf371 --- /dev/null +++ b/bin/base/generated/decls/renderparm/glarescale.decl @@ -0,0 +1 @@ +{ Vec 0.3 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/glarestep.decl b/bin/base/generated/decls/renderparm/glarestep.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/glarestep.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globalblur.decl b/bin/base/generated/decls/renderparm/globalblur.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/globalblur.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globallightorigin.decl b/bin/base/generated/decls/renderparm/globallightorigin.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/globallightorigin.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globalshadows.decl b/bin/base/generated/decls/renderparm/globalshadows.decl new file mode 100644 index 0000000..9152763 --- /dev/null +++ b/bin/base/generated/decls/renderparm/globalshadows.decl @@ -0,0 +1 @@ +{ Tex _globalShadowsImage } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globalviewfwd.decl b/bin/base/generated/decls/renderparm/globalviewfwd.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/globalviewfwd.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globalviewleft.decl b/bin/base/generated/decls/renderparm/globalviewleft.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/globalviewleft.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globalvieworigin.decl b/bin/base/generated/decls/renderparm/globalvieworigin.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/globalvieworigin.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/globalviewup.decl b/bin/base/generated/decls/renderparm/globalviewup.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/globalviewup.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/godraycolor.decl b/bin/base/generated/decls/renderparm/godraycolor.decl new file mode 100644 index 0000000..6b92449 --- /dev/null +++ b/bin/base/generated/decls/renderparm/godraycolor.decl @@ -0,0 +1 @@ +{ Vec{ 0.015, 0.015, 0.015, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/godrayquadscalebias.decl b/bin/base/generated/decls/renderparm/godrayquadscalebias.decl new file mode 100644 index 0000000..716b79f --- /dev/null +++ b/bin/base/generated/decls/renderparm/godrayquadscalebias.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/godraysourcescalebias.decl b/bin/base/generated/decls/renderparm/godraysourcescalebias.decl new file mode 100644 index 0000000..716b79f --- /dev/null +++ b/bin/base/generated/decls/renderparm/godraysourcescalebias.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/godrayssourcetexture.decl b/bin/base/generated/decls/renderparm/godrayssourcetexture.decl new file mode 100644 index 0000000..4dbe519 --- /dev/null +++ b/bin/base/generated/decls/renderparm/godrayssourcetexture.decl @@ -0,0 +1 @@ +{ Tex hqcompress textures/sfx/sunray.tga } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grainamount.decl b/bin/base/generated/decls/renderparm/grainamount.decl new file mode 100644 index 0000000..c829596 --- /dev/null +++ b/bin/base/generated/decls/renderparm/grainamount.decl @@ -0,0 +1 @@ +{ Vec { 0.03 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grainhz.decl b/bin/base/generated/decls/renderparm/grainhz.decl new file mode 100644 index 0000000..316c16d --- /dev/null +++ b/bin/base/generated/decls/renderparm/grainhz.decl @@ -0,0 +1 @@ +{ Vec { 20 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grainlevelsmax.decl b/bin/base/generated/decls/renderparm/grainlevelsmax.decl new file mode 100644 index 0000000..85eff5a --- /dev/null +++ b/bin/base/generated/decls/renderparm/grainlevelsmax.decl @@ -0,0 +1 @@ +{ Vec { 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grainlevelsmin.decl b/bin/base/generated/decls/renderparm/grainlevelsmin.decl new file mode 100644 index 0000000..9c5ab6b --- /dev/null +++ b/bin/base/generated/decls/renderparm/grainlevelsmin.decl @@ -0,0 +1 @@ +{ Vec { 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grainmap.decl b/bin/base/generated/decls/renderparm/grainmap.decl new file mode 100644 index 0000000..7bfb915 --- /dev/null +++ b/bin/base/generated/decls/renderparm/grainmap.decl @@ -0,0 +1 @@ +{ Tex uncompressed textures/common/postgrain } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grazingdiffusecolor.decl b/bin/base/generated/decls/renderparm/grazingdiffusecolor.decl new file mode 100644 index 0000000..19cb04a --- /dev/null +++ b/bin/base/generated/decls/renderparm/grazingdiffusecolor.decl @@ -0,0 +1 @@ +{ Vec 0.0 range 0, 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/grazingspecularcolor.decl b/bin/base/generated/decls/renderparm/grazingspecularcolor.decl new file mode 100644 index 0000000..19cb04a --- /dev/null +++ b/bin/base/generated/decls/renderparm/grazingspecularcolor.decl @@ -0,0 +1 @@ +{ Vec 0.0 range 0, 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/gunmuzzleflash.decl b/bin/base/generated/decls/renderparm/gunmuzzleflash.decl new file mode 100644 index 0000000..7095276 --- /dev/null +++ b/bin/base/generated/decls/renderparm/gunmuzzleflash.decl @@ -0,0 +1 @@ +{ Vec 0.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/gunmuzzleflashcolor.decl b/bin/base/generated/decls/renderparm/gunmuzzleflashcolor.decl new file mode 100644 index 0000000..11cce76 --- /dev/null +++ b/bin/base/generated/decls/renderparm/gunmuzzleflashcolor.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 1.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/highlightcolor.decl b/bin/base/generated/decls/renderparm/highlightcolor.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/highlightcolor.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/hqspecularnormal.decl b/bin/base/generated/decls/renderparm/hqspecularnormal.decl new file mode 100644 index 0000000..dd91aa9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/hqspecularnormal.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/if.decl b/bin/base/generated/decls/renderparm/if.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/if.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/interactionprogram.decl b/bin/base/generated/decls/renderparm/interactionprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/interactionprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemodelmatrixw.decl b/bin/base/generated/decls/renderparm/inversemodelmatrixw.decl new file mode 100644 index 0000000..719c3fc --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemodelmatrixw.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemodelmatrixx.decl b/bin/base/generated/decls/renderparm/inversemodelmatrixx.decl new file mode 100644 index 0000000..7a6d938 --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemodelmatrixx.decl @@ -0,0 +1 @@ +{ Vec { 1, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemodelmatrixy.decl b/bin/base/generated/decls/renderparm/inversemodelmatrixy.decl new file mode 100644 index 0000000..fd3b278 --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemodelmatrixy.decl @@ -0,0 +1 @@ +{ Vec { 0, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemodelmatrixz.decl b/bin/base/generated/decls/renderparm/inversemodelmatrixz.decl new file mode 100644 index 0000000..9a7be5b --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemodelmatrixz.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemvpmatrixw.decl b/bin/base/generated/decls/renderparm/inversemvpmatrixw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemvpmatrixw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemvpmatrixx.decl b/bin/base/generated/decls/renderparm/inversemvpmatrixx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemvpmatrixx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemvpmatrixy.decl b/bin/base/generated/decls/renderparm/inversemvpmatrixy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemvpmatrixy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inversemvpmatrixz.decl b/bin/base/generated/decls/renderparm/inversemvpmatrixz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inversemvpmatrixz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseprojectionmatrixw.decl b/bin/base/generated/decls/renderparm/inverseprojectionmatrixw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseprojectionmatrixw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseprojectionmatrixx.decl b/bin/base/generated/decls/renderparm/inverseprojectionmatrixx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseprojectionmatrixx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseprojectionmatrixy.decl b/bin/base/generated/decls/renderparm/inverseprojectionmatrixy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseprojectionmatrixy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseprojectionmatrixz.decl b/bin/base/generated/decls/renderparm/inverseprojectionmatrixz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseprojectionmatrixz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseviewmatrixw.decl b/bin/base/generated/decls/renderparm/inverseviewmatrixw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseviewmatrixw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseviewmatrixx.decl b/bin/base/generated/decls/renderparm/inverseviewmatrixx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseviewmatrixx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseviewmatrixy.decl b/bin/base/generated/decls/renderparm/inverseviewmatrixy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseviewmatrixy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/inverseviewmatrixz.decl b/bin/base/generated/decls/renderparm/inverseviewmatrixz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/inverseviewmatrixz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landdefinitionfile.decl b/bin/base/generated/decls/renderparm/landdefinitionfile.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landdefinitionfile.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landdiffuseonly.decl b/bin/base/generated/decls/renderparm/landdiffuseonly.decl new file mode 100644 index 0000000..75128a8 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landdiffuseonly.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landdimensions.decl b/bin/base/generated/decls/renderparm/landdimensions.decl new file mode 100644 index 0000000..415fe34 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landdimensions.decl @@ -0,0 +1 @@ +{ Vec 128 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landgenmodel.decl b/bin/base/generated/decls/renderparm/landgenmodel.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landgenmodel.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landindexcolor.decl b/bin/base/generated/decls/renderparm/landindexcolor.decl new file mode 100644 index 0000000..045500c --- /dev/null +++ b/bin/base/generated/decls/renderparm/landindexcolor.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landlayoutversion.decl b/bin/base/generated/decls/renderparm/landlayoutversion.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/landlayoutversion.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landmappingmodel.decl b/bin/base/generated/decls/renderparm/landmappingmodel.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landmappingmodel.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landmodelfile.decl b/bin/base/generated/decls/renderparm/landmodelfile.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landmodelfile.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landpagefile.decl b/bin/base/generated/decls/renderparm/landpagefile.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landpagefile.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landshadowmodel.decl b/bin/base/generated/decls/renderparm/landshadowmodel.decl new file mode 100644 index 0000000..826a574 --- /dev/null +++ b/bin/base/generated/decls/renderparm/landshadowmodel.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landstampblendmode.decl b/bin/base/generated/decls/renderparm/landstampblendmode.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/landstampblendmode.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/landstampblendmodenone.decl b/bin/base/generated/decls/renderparm/landstampblendmodenone.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/landstampblendmodenone.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/layoutdownscale.decl b/bin/base/generated/decls/renderparm/layoutdownscale.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/layoutdownscale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightcolor.decl b/bin/base/generated/decls/renderparm/lightcolor.decl new file mode 100644 index 0000000..afa1793 --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightcolor.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightdepthcomparemap.decl b/bin/base/generated/decls/renderparm/lightdepthcomparemap.decl new file mode 100644 index 0000000..c0084e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightdepthcomparemap.decl @@ -0,0 +1 @@ +{ TexShadow2D _shadowBuffer_d } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightdepthmap.decl b/bin/base/generated/decls/renderparm/lightdepthmap.decl new file mode 100644 index 0000000..92a607f --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightdepthmap.decl @@ -0,0 +1 @@ +{ Tex2D _shadowBuffer_d } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightfade.decl b/bin/base/generated/decls/renderparm/lightfade.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightfade.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightfalloffmap.decl b/bin/base/generated/decls/renderparm/lightfalloffmap.decl new file mode 100644 index 0000000..7919e69 --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightfalloffmap.decl @@ -0,0 +1 @@ +{ Tex lights/squareLight1.tga } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightingmodel.decl b/bin/base/generated/decls/renderparm/lightingmodel.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightingmodel.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightoscillationamp.decl b/bin/base/generated/decls/renderparm/lightoscillationamp.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightoscillationamp.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightoscillationfreq.decl b/bin/base/generated/decls/renderparm/lightoscillationfreq.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightoscillationfreq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightoscillationphase.decl b/bin/base/generated/decls/renderparm/lightoscillationphase.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightoscillationphase.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightprojectionq.decl b/bin/base/generated/decls/renderparm/lightprojectionq.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightprojectionq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightprojectionr.decl b/bin/base/generated/decls/renderparm/lightprojectionr.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightprojectionr.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightprojections.decl b/bin/base/generated/decls/renderparm/lightprojections.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightprojections.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightprojectiont.decl b/bin/base/generated/decls/renderparm/lightprojectiont.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightprojectiont.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightprojectmap.decl b/bin/base/generated/decls/renderparm/lightprojectmap.decl new file mode 100644 index 0000000..66d9d81 --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightprojectmap.decl @@ -0,0 +1 @@ +{ Tex lights/squarelight1.tga } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightrotation.decl b/bin/base/generated/decls/renderparm/lightrotation.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightrotation.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lightscale.decl b/bin/base/generated/decls/renderparm/lightscale.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lightscale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/lighttranslation.decl b/bin/base/generated/decls/renderparm/lighttranslation.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/lighttranslation.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/loadingicon.decl b/bin/base/generated/decls/renderparm/loadingicon.decl new file mode 100644 index 0000000..1c594d1 --- /dev/null +++ b/bin/base/generated/decls/renderparm/loadingicon.decl @@ -0,0 +1 @@ +{ Tex hqcompress textures/guis/loading_icon } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localtolightq.decl b/bin/base/generated/decls/renderparm/localtolightq.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/localtolightq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localtolightr.decl b/bin/base/generated/decls/renderparm/localtolightr.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/localtolightr.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localtolights.decl b/bin/base/generated/decls/renderparm/localtolights.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/localtolights.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localtolightt.decl b/bin/base/generated/decls/renderparm/localtolightt.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/localtolightt.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localviewleft.decl b/bin/base/generated/decls/renderparm/localviewleft.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/localviewleft.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localvieworigin.decl b/bin/base/generated/decls/renderparm/localvieworigin.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/localvieworigin.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/localviewup.decl b/bin/base/generated/decls/renderparm/localviewup.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/localviewup.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/luminositymap.decl b/bin/base/generated/decls/renderparm/luminositymap.decl new file mode 100644 index 0000000..a885dc0 --- /dev/null +++ b/bin/base/generated/decls/renderparm/luminositymap.decl @@ -0,0 +1 @@ +{ Tex _luminosityImage } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/luminositymapalt.decl b/bin/base/generated/decls/renderparm/luminositymapalt.decl new file mode 100644 index 0000000..12a1ae2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/luminositymapalt.decl @@ -0,0 +1 @@ +{ Tex _luminosityImageAlt } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/materialcoverage.decl b/bin/base/generated/decls/renderparm/materialcoverage.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/materialcoverage.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/megatextureaddmap.decl b/bin/base/generated/decls/renderparm/megatextureaddmap.decl new file mode 100644 index 0000000..d08e74f --- /dev/null +++ b/bin/base/generated/decls/renderparm/megatextureaddmap.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/megatexturemorph.decl b/bin/base/generated/decls/renderparm/megatexturemorph.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/megatexturemorph.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelangles.decl b/bin/base/generated/decls/renderparm/modelangles.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelangles.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelfade.decl b/bin/base/generated/decls/renderparm/modelfade.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelfade.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelfadeextrude.decl b/bin/base/generated/decls/renderparm/modelfadeextrude.decl new file mode 100644 index 0000000..aa8db70 --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelfadeextrude.decl @@ -0,0 +1 @@ +{ Vec 0.4 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelmatrixw.decl b/bin/base/generated/decls/renderparm/modelmatrixw.decl new file mode 100644 index 0000000..719c3fc --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelmatrixw.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelmatrixx.decl b/bin/base/generated/decls/renderparm/modelmatrixx.decl new file mode 100644 index 0000000..7a6d938 --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelmatrixx.decl @@ -0,0 +1 @@ +{ Vec { 1, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelmatrixy.decl b/bin/base/generated/decls/renderparm/modelmatrixy.decl new file mode 100644 index 0000000..fd3b278 --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelmatrixy.decl @@ -0,0 +1 @@ +{ Vec { 0, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/modelmatrixz.decl b/bin/base/generated/decls/renderparm/modelmatrixz.decl new file mode 100644 index 0000000..9a7be5b --- /dev/null +++ b/bin/base/generated/decls/renderparm/modelmatrixz.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/muzzleflashoffset.decl b/bin/base/generated/decls/renderparm/muzzleflashoffset.decl new file mode 100644 index 0000000..be4c6a2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/muzzleflashoffset.decl @@ -0,0 +1 @@ +{ Vec { 64.0, 16.0, 16.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/mvpmatrixw.decl b/bin/base/generated/decls/renderparm/mvpmatrixw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/mvpmatrixw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/mvpmatrixx.decl b/bin/base/generated/decls/renderparm/mvpmatrixx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/mvpmatrixx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/mvpmatrixy.decl b/bin/base/generated/decls/renderparm/mvpmatrixy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/mvpmatrixy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/mvpmatrixz.decl b/bin/base/generated/decls/renderparm/mvpmatrixz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/mvpmatrixz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/newambientscale.decl b/bin/base/generated/decls/renderparm/newambientscale.decl new file mode 100644 index 0000000..850310a --- /dev/null +++ b/bin/base/generated/decls/renderparm/newambientscale.decl @@ -0,0 +1 @@ +{ Vec 0.3 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/newdiffusescale.decl b/bin/base/generated/decls/renderparm/newdiffusescale.decl new file mode 100644 index 0000000..afa1793 --- /dev/null +++ b/bin/base/generated/decls/renderparm/newdiffusescale.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/newpowerscale.decl b/bin/base/generated/decls/renderparm/newpowerscale.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/newpowerscale.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/newspecularscale.decl b/bin/base/generated/decls/renderparm/newspecularscale.decl new file mode 100644 index 0000000..afa1793 --- /dev/null +++ b/bin/base/generated/decls/renderparm/newspecularscale.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/nofragment.decl b/bin/base/generated/decls/renderparm/nofragment.decl new file mode 100644 index 0000000..b4f2678 --- /dev/null +++ b/bin/base/generated/decls/renderparm/nofragment.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/noselfshadow.decl b/bin/base/generated/decls/renderparm/noselfshadow.decl new file mode 100644 index 0000000..b4f2678 --- /dev/null +++ b/bin/base/generated/decls/renderparm/noselfshadow.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/noshadows.decl b/bin/base/generated/decls/renderparm/noshadows.decl new file mode 100644 index 0000000..b4f2678 --- /dev/null +++ b/bin/base/generated/decls/renderparm/noshadows.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/overlayopacity.decl b/bin/base/generated/decls/renderparm/overlayopacity.decl new file mode 100644 index 0000000..09aa841 --- /dev/null +++ b/bin/base/generated/decls/renderparm/overlayopacity.decl @@ -0,0 +1 @@ +{ Vec 0 range 0.0, 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/pagetablemap.decl b/bin/base/generated/decls/renderparm/pagetablemap.decl new file mode 100644 index 0000000..5b58dc3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/pagetablemap.decl @@ -0,0 +1 @@ +{ Tex _vmtrPageTable } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/parallellightslicescale.decl b/bin/base/generated/decls/renderparm/parallellightslicescale.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/parallellightslicescale.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/particlefade.decl b/bin/base/generated/decls/renderparm/particlefade.decl new file mode 100644 index 0000000..45f2197 --- /dev/null +++ b/bin/base/generated/decls/renderparm/particlefade.decl @@ -0,0 +1 @@ +{ Vec 0.009 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/particlelod.decl b/bin/base/generated/decls/renderparm/particlelod.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/particlelod.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/particlescale.decl b/bin/base/generated/decls/renderparm/particlescale.decl new file mode 100644 index 0000000..5578f9a --- /dev/null +++ b/bin/base/generated/decls/renderparm/particlescale.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/particlestscalebias.decl b/bin/base/generated/decls/renderparm/particlestscalebias.decl new file mode 100644 index 0000000..84cc0e2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/particlestscalebias.decl @@ -0,0 +1 @@ +{ Vec { 0.0000152592547, 0.5, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/particlevel.decl b/bin/base/generated/decls/renderparm/particlevel.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/particlevel.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquediffuseonly2filterparms.decl b/bin/base/generated/decls/renderparm/physicaluniquediffuseonly2filterparms.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquediffuseonly2filterparms.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquediffuseonlyfilterparms.decl b/bin/base/generated/decls/renderparm/physicaluniquediffuseonlyfilterparms.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquediffuseonlyfilterparms.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquediffuseonlymappingsmap0.decl b/bin/base/generated/decls/renderparm/physicaluniquediffuseonlymappingsmap0.decl new file mode 100644 index 0000000..d115c5e --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquediffuseonlymappingsmap0.decl @@ -0,0 +1 @@ +{ Tex _physicalUniqueDiffuseOnlyMappings0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquediffuseonlypagesmap1.decl b/bin/base/generated/decls/renderparm/physicaluniquediffuseonlypagesmap1.decl new file mode 100644 index 0000000..d72e69e --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquediffuseonlypagesmap1.decl @@ -0,0 +1 @@ +{ Tex _physicalUniqueDiffuseOnlyPages1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquefilterparms.decl b/bin/base/generated/decls/renderparm/physicaluniquefilterparms.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquefilterparms.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquemappingsmap0.decl b/bin/base/generated/decls/renderparm/physicaluniquemappingsmap0.decl new file mode 100644 index 0000000..b84e52c --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquemappingsmap0.decl @@ -0,0 +1 @@ +{ Tex _physicalUniqueMappings0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquepagesmap0.decl b/bin/base/generated/decls/renderparm/physicaluniquepagesmap0.decl new file mode 100644 index 0000000..015c58e --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquepagesmap0.decl @@ -0,0 +1 @@ +{ Tex _physicalUniquePages0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquepagesmap1.decl b/bin/base/generated/decls/renderparm/physicaluniquepagesmap1.decl new file mode 100644 index 0000000..2220b7d --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquepagesmap1.decl @@ -0,0 +1 @@ +{ Tex _physicalUniquePages1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicaluniquepagesmap2.decl b/bin/base/generated/decls/renderparm/physicaluniquepagesmap2.decl new file mode 100644 index 0000000..e6128c2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicaluniquepagesmap2.decl @@ -0,0 +1 @@ +{ Tex _physicalUniquePages2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicalvmtrfilterparms.decl b/bin/base/generated/decls/renderparm/physicalvmtrfilterparms.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicalvmtrfilterparms.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicalvmtrmappingsmap0.decl b/bin/base/generated/decls/renderparm/physicalvmtrmappingsmap0.decl new file mode 100644 index 0000000..ac0e593 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicalvmtrmappingsmap0.decl @@ -0,0 +1 @@ +{ Tex _physicalVmtrMappings0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicalvmtrpagesmap0.decl b/bin/base/generated/decls/renderparm/physicalvmtrpagesmap0.decl new file mode 100644 index 0000000..4091d9a --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicalvmtrpagesmap0.decl @@ -0,0 +1 @@ +{ Tex _physicalVmtrPages0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicalvmtrpagesmap1.decl b/bin/base/generated/decls/renderparm/physicalvmtrpagesmap1.decl new file mode 100644 index 0000000..8f9693d --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicalvmtrpagesmap1.decl @@ -0,0 +1 @@ +{ Tex _physicalVmtrPages1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/physicalvmtrpagesmap2.decl b/bin/base/generated/decls/renderparm/physicalvmtrpagesmap2.decl new file mode 100644 index 0000000..d7f3589 --- /dev/null +++ b/bin/base/generated/decls/renderparm/physicalvmtrpagesmap2.decl @@ -0,0 +1 @@ +{ Tex _physicalVmtrPages2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/polygonoffset.decl b/bin/base/generated/decls/renderparm/polygonoffset.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/polygonoffset.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/positiontofeedback.decl b/bin/base/generated/decls/renderparm/positiontofeedback.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/positiontofeedback.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/positiontoviewtexture.decl b/bin/base/generated/decls/renderparm/positiontoviewtexture.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/positiontoviewtexture.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/postdistortionmap.decl b/bin/base/generated/decls/renderparm/postdistortionmap.decl new file mode 100644 index 0000000..e19f90d --- /dev/null +++ b/bin/base/generated/decls/renderparm/postdistortionmap.decl @@ -0,0 +1 @@ +{ Tex _black } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/postgrainparms.decl b/bin/base/generated/decls/renderparm/postgrainparms.decl new file mode 100644 index 0000000..e34c8bd --- /dev/null +++ b/bin/base/generated/decls/renderparm/postgrainparms.decl @@ -0,0 +1 @@ +{ Vec { 2.0, -1.0, -1.0, -1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/postgrainscalebias.decl b/bin/base/generated/decls/renderparm/postgrainscalebias.decl new file mode 100644 index 0000000..716b79f --- /dev/null +++ b/bin/base/generated/decls/renderparm/postgrainscalebias.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/powermap.decl b/bin/base/generated/decls/renderparm/powermap.decl new file mode 100644 index 0000000..c95da83 --- /dev/null +++ b/bin/base/generated/decls/renderparm/powermap.decl @@ -0,0 +1 @@ +{ String constantColor(1,1,1,1) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/powermip.decl b/bin/base/generated/decls/renderparm/powermip.decl new file mode 100644 index 0000000..24e26a0 --- /dev/null +++ b/bin/base/generated/decls/renderparm/powermip.decl @@ -0,0 +1 @@ +{ Vec 1 range 0, 5 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/primelightcolor.decl b/bin/base/generated/decls/renderparm/primelightcolor.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/primelightcolor.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/primelightdir.decl b/bin/base/generated/decls/renderparm/primelightdir.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/primelightdir.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/primelightmin.decl b/bin/base/generated/decls/renderparm/primelightmin.decl new file mode 100644 index 0000000..4b1a462 --- /dev/null +++ b/bin/base/generated/decls/renderparm/primelightmin.decl @@ -0,0 +1 @@ +{ Vec 0.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/projectionmatrixw.decl b/bin/base/generated/decls/renderparm/projectionmatrixw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/projectionmatrixw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/projectionmatrixx.decl b/bin/base/generated/decls/renderparm/projectionmatrixx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/projectionmatrixx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/projectionmatrixy.decl b/bin/base/generated/decls/renderparm/projectionmatrixy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/projectionmatrixy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/projectionmatrixz.decl b/bin/base/generated/decls/renderparm/projectionmatrixz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/projectionmatrixz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/qer_editorimage.decl b/bin/base/generated/decls/renderparm/qer_editorimage.decl new file mode 100644 index 0000000..d08e74f --- /dev/null +++ b/bin/base/generated/decls/renderparm/qer_editorimage.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/qmatrix.decl b/bin/base/generated/decls/renderparm/qmatrix.decl new file mode 100644 index 0000000..e984263 --- /dev/null +++ b/bin/base/generated/decls/renderparm/qmatrix.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radialblurcenter.decl b/bin/base/generated/decls/renderparm/radialblurcenter.decl new file mode 100644 index 0000000..bfa19b4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/radialblurcenter.decl @@ -0,0 +1 @@ +{ Vec { 0.5, 0.5, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radialblurenable.decl b/bin/base/generated/decls/renderparm/radialblurenable.decl new file mode 100644 index 0000000..dd91aa9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/radialblurenable.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radialblurmaxscale.decl b/bin/base/generated/decls/renderparm/radialblurmaxscale.decl new file mode 100644 index 0000000..561dabd --- /dev/null +++ b/bin/base/generated/decls/renderparm/radialblurmaxscale.decl @@ -0,0 +1 @@ +{ Vec 0.5 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radialblurscale.decl b/bin/base/generated/decls/renderparm/radialblurscale.decl new file mode 100644 index 0000000..a8e1ffa --- /dev/null +++ b/bin/base/generated/decls/renderparm/radialblurscale.decl @@ -0,0 +1 @@ +{ Vec { 0.08, 0.5 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radiositypreviewmap.decl b/bin/base/generated/decls/renderparm/radiositypreviewmap.decl new file mode 100644 index 0000000..660f6ac --- /dev/null +++ b/bin/base/generated/decls/renderparm/radiositypreviewmap.decl @@ -0,0 +1 @@ +{ Tex2D _radiosityPreview } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radiosityprevieww.decl b/bin/base/generated/decls/renderparm/radiosityprevieww.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/radiosityprevieww.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radiositypreviewx.decl b/bin/base/generated/decls/renderparm/radiositypreviewx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/radiositypreviewx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radiositypreviewy.decl b/bin/base/generated/decls/renderparm/radiositypreviewy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/radiositypreviewy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/radiositypreviewz.decl b/bin/base/generated/decls/renderparm/radiositypreviewz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/radiositypreviewz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/renderbump.decl b/bin/base/generated/decls/renderparm/renderbump.decl new file mode 100644 index 0000000..d08e74f --- /dev/null +++ b/bin/base/generated/decls/renderparm/renderbump.decl @@ -0,0 +1 @@ +{ String "" } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/renderpositiontoviewtexture.decl b/bin/base/generated/decls/renderparm/renderpositiontoviewtexture.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/renderpositiontoviewtexture.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/rmatrix.decl b/bin/base/generated/decls/renderparm/rmatrix.decl new file mode 100644 index 0000000..de8683e --- /dev/null +++ b/bin/base/generated/decls/renderparm/rmatrix.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/screenoverlay.decl b/bin/base/generated/decls/renderparm/screenoverlay.decl new file mode 100644 index 0000000..0036b13 --- /dev/null +++ b/bin/base/generated/decls/renderparm/screenoverlay.decl @@ -0,0 +1 @@ +{ Tex _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/screenscale.decl b/bin/base/generated/decls/renderparm/screenscale.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/screenscale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/screensizeratio.decl b/bin/base/generated/decls/renderparm/screensizeratio.decl new file mode 100644 index 0000000..3f5c933 --- /dev/null +++ b/bin/base/generated/decls/renderparm/screensizeratio.decl @@ -0,0 +1 @@ +{ Vec 1.7778 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/select.decl b/bin/base/generated/decls/renderparm/select.decl new file mode 100644 index 0000000..147411b --- /dev/null +++ b/bin/base/generated/decls/renderparm/select.decl @@ -0,0 +1 @@ +{ Vec { 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowbufferresolution.decl b/bin/base/generated/decls/renderparm/shadowbufferresolution.decl new file mode 100644 index 0000000..32ca4f9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowbufferresolution.decl @@ -0,0 +1 @@ +{ Vec { 2048, 0.00048828125, -0.00048828125, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowfade.decl b/bin/base/generated/decls/renderparm/shadowfade.decl new file mode 100644 index 0000000..00019e8 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowfade.decl @@ -0,0 +1 @@ +{ Vec { 1, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowprogram.decl b/bin/base/generated/decls/renderparm/shadowprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowprojectionq.decl b/bin/base/generated/decls/renderparm/shadowprojectionq.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowprojectionq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowprojectionr.decl b/bin/base/generated/decls/renderparm/shadowprojectionr.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowprojectionr.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowprojections.decl b/bin/base/generated/decls/renderparm/shadowprojections.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowprojections.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/shadowprojectiont.decl b/bin/base/generated/decls/renderparm/shadowprojectiont.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/shadowprojectiont.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sharpbakedambient.decl b/bin/base/generated/decls/renderparm/sharpbakedambient.decl new file mode 100644 index 0000000..b4f2678 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sharpbakedambient.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/showdepthoffield.decl b/bin/base/generated/decls/renderparm/showdepthoffield.decl new file mode 100644 index 0000000..dd91aa9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/showdepthoffield.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/showgrainlevels.decl b/bin/base/generated/decls/renderparm/showgrainlevels.decl new file mode 100644 index 0000000..dd91aa9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/showgrainlevels.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/showoverlay.decl b/bin/base/generated/decls/renderparm/showoverlay.decl new file mode 100644 index 0000000..195f59b --- /dev/null +++ b/bin/base/generated/decls/renderparm/showoverlay.decl @@ -0,0 +1 @@ +{ Vec 1 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/skipsurfaceinfo.decl b/bin/base/generated/decls/renderparm/skipsurfaceinfo.decl new file mode 100644 index 0000000..b4f2678 --- /dev/null +++ b/bin/base/generated/decls/renderparm/skipsurfaceinfo.decl @@ -0,0 +1 @@ +{ Vec 0 bool } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/skyfogcutoffheight.decl b/bin/base/generated/decls/renderparm/skyfogcutoffheight.decl new file mode 100644 index 0000000..ede5ab4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/skyfogcutoffheight.decl @@ -0,0 +1 @@ +{ Vec 0 range 0, 1000 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/skyglareprescale.decl b/bin/base/generated/decls/renderparm/skyglareprescale.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/skyglareprescale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/smatrix.decl b/bin/base/generated/decls/renderparm/smatrix.decl new file mode 100644 index 0000000..00019e8 --- /dev/null +++ b/bin/base/generated/decls/renderparm/smatrix.decl @@ -0,0 +1 @@ +{ Vec { 1, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/smatrix1.decl b/bin/base/generated/decls/renderparm/smatrix1.decl new file mode 100644 index 0000000..00019e8 --- /dev/null +++ b/bin/base/generated/decls/renderparm/smatrix1.decl @@ -0,0 +1 @@ +{ Vec { 1, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sobelopacity.decl b/bin/base/generated/decls/renderparm/sobelopacity.decl new file mode 100644 index 0000000..922a07a --- /dev/null +++ b/bin/base/generated/decls/renderparm/sobelopacity.decl @@ -0,0 +1 @@ +{ Vec 1.0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sobelthreshold.decl b/bin/base/generated/decls/renderparm/sobelthreshold.decl new file mode 100644 index 0000000..7137d7f --- /dev/null +++ b/bin/base/generated/decls/renderparm/sobelthreshold.decl @@ -0,0 +1 @@ +{ Vec 1.2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortbackground.decl b/bin/base/generated/decls/renderparm/sortbackground.decl new file mode 100644 index 0000000..73ffdb7 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortbackground.decl @@ -0,0 +1 @@ +{ Vec 80 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortcoverage.decl b/bin/base/generated/decls/renderparm/sortcoverage.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortcoverage.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortdecal.decl b/bin/base/generated/decls/renderparm/sortdecal.decl new file mode 100644 index 0000000..a1a41a3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortdecal.decl @@ -0,0 +1 @@ +{ Vec 400 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortemit.decl b/bin/base/generated/decls/renderparm/sortemit.decl new file mode 100644 index 0000000..7f8ab46 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortemit.decl @@ -0,0 +1 @@ +{ Vec 100 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortemitonly.decl b/bin/base/generated/decls/renderparm/sortemitonly.decl new file mode 100644 index 0000000..af0df95 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortemitonly.decl @@ -0,0 +1 @@ +{ Vec 200 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortlight.decl b/bin/base/generated/decls/renderparm/sortlight.decl new file mode 100644 index 0000000..6f93998 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortlight.decl @@ -0,0 +1 @@ +{ Vec 300 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortperturber.decl b/bin/base/generated/decls/renderparm/sortperturber.decl new file mode 100644 index 0000000..bc1c36a --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortperturber.decl @@ -0,0 +1 @@ +{ Vec 1200 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortskybox.decl b/bin/base/generated/decls/renderparm/sortskybox.decl new file mode 100644 index 0000000..7168c6e --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortskybox.decl @@ -0,0 +1 @@ +{ Vec 50 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sorttrans.decl b/bin/base/generated/decls/renderparm/sorttrans.decl new file mode 100644 index 0000000..17c89f2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sorttrans.decl @@ -0,0 +1 @@ +{ Vec 500 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sorttranssort.decl b/bin/base/generated/decls/renderparm/sorttranssort.decl new file mode 100644 index 0000000..3baed69 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sorttranssort.decl @@ -0,0 +1 @@ +{ Vec 495 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sortwater.decl b/bin/base/generated/decls/renderparm/sortwater.decl new file mode 100644 index 0000000..025492d --- /dev/null +++ b/bin/base/generated/decls/renderparm/sortwater.decl @@ -0,0 +1 @@ +{ Vec 650 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/spare1map.decl b/bin/base/generated/decls/renderparm/spare1map.decl new file mode 100644 index 0000000..f4c0b16 --- /dev/null +++ b/bin/base/generated/decls/renderparm/spare1map.decl @@ -0,0 +1 @@ +{ Tex2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/spare2map.decl b/bin/base/generated/decls/renderparm/spare2map.decl new file mode 100644 index 0000000..f4c0b16 --- /dev/null +++ b/bin/base/generated/decls/renderparm/spare2map.decl @@ -0,0 +1 @@ +{ Tex2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparebumpmap.decl b/bin/base/generated/decls/renderparm/sparebumpmap.decl new file mode 100644 index 0000000..c32c292 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparebumpmap.decl @@ -0,0 +1 @@ +{ Tex2D constantColor(0.5,0.5,1.0,0.0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparebumpmap1.decl b/bin/base/generated/decls/renderparm/sparebumpmap1.decl new file mode 100644 index 0000000..c32c292 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparebumpmap1.decl @@ -0,0 +1 @@ +{ Tex2D constantColor(0.5,0.5,1.0,0.0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparebumpmap2.decl b/bin/base/generated/decls/renderparm/sparebumpmap2.decl new file mode 100644 index 0000000..c32c292 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparebumpmap2.decl @@ -0,0 +1 @@ +{ Tex2D constantColor(0.5,0.5,1.0,0.0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparediffusemap.decl b/bin/base/generated/decls/renderparm/sparediffusemap.decl new file mode 100644 index 0000000..f4c0b16 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparediffusemap.decl @@ -0,0 +1 @@ +{ Tex2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparediffusemap2.decl b/bin/base/generated/decls/renderparm/sparediffusemap2.decl new file mode 100644 index 0000000..f4c0b16 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparediffusemap2.decl @@ -0,0 +1 @@ +{ Tex2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparespecularmap.decl b/bin/base/generated/decls/renderparm/sparespecularmap.decl new file mode 100644 index 0000000..ac20af0 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparespecularmap.decl @@ -0,0 +1 @@ +{ Tex2D constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/sparespecularmap2.decl b/bin/base/generated/decls/renderparm/sparespecularmap2.decl new file mode 100644 index 0000000..ac20af0 --- /dev/null +++ b/bin/base/generated/decls/renderparm/sparespecularmap2.decl @@ -0,0 +1 @@ +{ Tex2D constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/specularmap.decl b/bin/base/generated/decls/renderparm/specularmap.decl new file mode 100644 index 0000000..9bbd67d --- /dev/null +++ b/bin/base/generated/decls/renderparm/specularmap.decl @@ -0,0 +1 @@ +{ String constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/stageprogram.decl b/bin/base/generated/decls/renderparm/stageprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/stageprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/stagesort.decl b/bin/base/generated/decls/renderparm/stagesort.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/stagesort.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/stampcovers.decl b/bin/base/generated/decls/renderparm/stampcovers.decl new file mode 100644 index 0000000..045500c --- /dev/null +++ b/bin/base/generated/decls/renderparm/stampcovers.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/stampscales.decl b/bin/base/generated/decls/renderparm/stampscales.decl new file mode 100644 index 0000000..045500c --- /dev/null +++ b/bin/base/generated/decls/renderparm/stampscales.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/staticreflectionstrength.decl b/bin/base/generated/decls/renderparm/staticreflectionstrength.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/staticreflectionstrength.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/staticreflectiontransmission.decl b/bin/base/generated/decls/renderparm/staticreflectiontransmission.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/staticreflectiontransmission.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/staticspecularscale.decl b/bin/base/generated/decls/renderparm/staticspecularscale.decl new file mode 100644 index 0000000..53d5f9a --- /dev/null +++ b/bin/base/generated/decls/renderparm/staticspecularscale.decl @@ -0,0 +1 @@ +{ Vec 10 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/staticspecularvector.decl b/bin/base/generated/decls/renderparm/staticspecularvector.decl new file mode 100644 index 0000000..30da0e4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/staticspecularvector.decl @@ -0,0 +1 @@ +{ Vec { 0, 0.7, 0.7 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_collision.decl b/bin/base/generated/decls/renderparm/surf_collision.decl new file mode 100644 index 0000000..7809d0e --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_collision.decl @@ -0,0 +1 @@ +{ Vec 64 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_ladder.decl b/bin/base/generated/decls/renderparm/surf_ladder.decl new file mode 100644 index 0000000..8fc51be --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_ladder.decl @@ -0,0 +1 @@ +{ Vec 128 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_ladder_top.decl b/bin/base/generated/decls/renderparm/surf_ladder_top.decl new file mode 100644 index 0000000..f671688 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_ladder_top.decl @@ -0,0 +1 @@ +{ Vec 1073741824 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_noareas.decl b/bin/base/generated/decls/renderparm/surf_noareas.decl new file mode 100644 index 0000000..511d280 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_noareas.decl @@ -0,0 +1 @@ +{ Vec 16384 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_nodamage.decl b/bin/base/generated/decls/renderparm/surf_nodamage.decl new file mode 100644 index 0000000..1bbe2ff --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_nodamage.decl @@ -0,0 +1 @@ +{ Vec 16 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_noimpact.decl b/bin/base/generated/decls/renderparm/surf_noimpact.decl new file mode 100644 index 0000000..67e1473 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_noimpact.decl @@ -0,0 +1 @@ +{ Vec 256 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_noshoot.decl b/bin/base/generated/decls/renderparm/surf_noshoot.decl new file mode 100644 index 0000000..1b74b0c --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_noshoot.decl @@ -0,0 +1 @@ +{ Vec 32768 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_nosteps.decl b/bin/base/generated/decls/renderparm/surf_nosteps.decl new file mode 100644 index 0000000..cf0a740 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_nosteps.decl @@ -0,0 +1 @@ +{ Vec 512 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_nullnormal.decl b/bin/base/generated/decls/renderparm/surf_nullnormal.decl new file mode 100644 index 0000000..53ce5ba --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_nullnormal.decl @@ -0,0 +1 @@ +{ Vec 8192 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_occlusiontest.decl b/bin/base/generated/decls/renderparm/surf_occlusiontest.decl new file mode 100644 index 0000000..dcb0813 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_occlusiontest.decl @@ -0,0 +1 @@ +{ Vec 2048 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_shadowcaster.decl b/bin/base/generated/decls/renderparm/surf_shadowcaster.decl new file mode 100644 index 0000000..531a1ea --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_shadowcaster.decl @@ -0,0 +1 @@ +{ Vec 4096 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_slick.decl b/bin/base/generated/decls/renderparm/surf_slick.decl new file mode 100644 index 0000000..bb8448c --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_slick.decl @@ -0,0 +1 @@ +{ Vec 32 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surf_stairs.decl b/bin/base/generated/decls/renderparm/surf_stairs.decl new file mode 100644 index 0000000..3d9a57f --- /dev/null +++ b/bin/base/generated/decls/renderparm/surf_stairs.decl @@ -0,0 +1 @@ +{ Vec 1024 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surfaceflags.decl b/bin/base/generated/decls/renderparm/surfaceflags.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surfaceflags.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surfaceradiosityscale.decl b/bin/base/generated/decls/renderparm/surfaceradiosityscale.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/surfaceradiosityscale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surfacetype.decl b/bin/base/generated/decls/renderparm/surfacetype.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surfacetype.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_armor.decl b/bin/base/generated/decls/renderparm/surftype_armor.decl new file mode 100644 index 0000000..105a009 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_armor.decl @@ -0,0 +1 @@ +{ Vec 19 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_ash.decl b/bin/base/generated/decls/renderparm/surftype_ash.decl new file mode 100644 index 0000000..87e044f --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_ash.decl @@ -0,0 +1 @@ +{ Vec 27 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_asphalt.decl b/bin/base/generated/decls/renderparm/surftype_asphalt.decl new file mode 100644 index 0000000..b53afed --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_asphalt.decl @@ -0,0 +1 @@ +{ Vec 9 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_bloodpool.decl b/bin/base/generated/decls/renderparm/surftype_bloodpool.decl new file mode 100644 index 0000000..4d46a4a --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_bloodpool.decl @@ -0,0 +1 @@ +{ Vec 26 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_cardboard.decl b/bin/base/generated/decls/renderparm/surftype_cardboard.decl new file mode 100644 index 0000000..897e1e1 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_cardboard.decl @@ -0,0 +1 @@ +{ Vec 5 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_concrete.decl b/bin/base/generated/decls/renderparm/surftype_concrete.decl new file mode 100644 index 0000000..b4366a3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_concrete.decl @@ -0,0 +1 @@ +{ Vec 11 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_dirt.decl b/bin/base/generated/decls/renderparm/surftype_dirt.decl new file mode 100644 index 0000000..1878393 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_dirt.decl @@ -0,0 +1 @@ +{ Vec 10 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_fabric.decl b/bin/base/generated/decls/renderparm/surftype_fabric.decl new file mode 100644 index 0000000..d0e43c1 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_fabric.decl @@ -0,0 +1 @@ +{ Vec 14 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_flesh.decl b/bin/base/generated/decls/renderparm/surftype_flesh.decl new file mode 100644 index 0000000..88aef0c --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_flesh.decl @@ -0,0 +1 @@ +{ Vec 3 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_fleshdarkangel.decl b/bin/base/generated/decls/renderparm/surftype_fleshdarkangel.decl new file mode 100644 index 0000000..37d92de --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_fleshdarkangel.decl @@ -0,0 +1 @@ +{ Vec 25 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_fleshmutant.decl b/bin/base/generated/decls/renderparm/surftype_fleshmutant.decl new file mode 100644 index 0000000..edaef36 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_fleshmutant.decl @@ -0,0 +1 @@ +{ Vec 28 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_fleshplayer.decl b/bin/base/generated/decls/renderparm/surftype_fleshplayer.decl new file mode 100644 index 0000000..f69b493 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_fleshplayer.decl @@ -0,0 +1 @@ +{ Vec 23 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_foliage.decl b/bin/base/generated/decls/renderparm/surftype_foliage.decl new file mode 100644 index 0000000..475fcbf --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_foliage.decl @@ -0,0 +1 @@ +{ Vec 12 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_glass.decl b/bin/base/generated/decls/renderparm/surftype_glass.decl new file mode 100644 index 0000000..b36292f --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_glass.decl @@ -0,0 +1 @@ +{ Vec 7 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_hollowmetal.decl b/bin/base/generated/decls/renderparm/surftype_hollowmetal.decl new file mode 100644 index 0000000..a2f08b3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_hollowmetal.decl @@ -0,0 +1 @@ +{ Vec 22 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_impnest.decl b/bin/base/generated/decls/renderparm/surftype_impnest.decl new file mode 100644 index 0000000..d4cfdc6 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_impnest.decl @@ -0,0 +1 @@ +{ Vec 21 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_linoleum.decl b/bin/base/generated/decls/renderparm/surftype_linoleum.decl new file mode 100644 index 0000000..10d7684 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_linoleum.decl @@ -0,0 +1 @@ +{ Vec 13 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_liquid.decl b/bin/base/generated/decls/renderparm/surftype_liquid.decl new file mode 100644 index 0000000..2994d9f --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_liquid.decl @@ -0,0 +1 @@ +{ Vec 6 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_metal.decl b/bin/base/generated/decls/renderparm/surftype_metal.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_metal.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_none.decl b/bin/base/generated/decls/renderparm/surftype_none.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_none.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_plastic.decl b/bin/base/generated/decls/renderparm/surftype_plastic.decl new file mode 100644 index 0000000..c8b22bb --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_plastic.decl @@ -0,0 +1 @@ +{ Vec 8 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_playerapcmetal.decl b/bin/base/generated/decls/renderparm/surftype_playerapcmetal.decl new file mode 100644 index 0000000..fae8840 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_playerapcmetal.decl @@ -0,0 +1 @@ +{ Vec 30 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_ricketymetal.decl b/bin/base/generated/decls/renderparm/surftype_ricketymetal.decl new file mode 100644 index 0000000..064cdcb --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_ricketymetal.decl @@ -0,0 +1 @@ +{ Vec 31 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_ricketywood.decl b/bin/base/generated/decls/renderparm/surftype_ricketywood.decl new file mode 100644 index 0000000..82f6b67 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_ricketywood.decl @@ -0,0 +1 @@ +{ Vec 32 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_rock.decl b/bin/base/generated/decls/renderparm/surftype_rock.decl new file mode 100644 index 0000000..1612e72 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_rock.decl @@ -0,0 +1 @@ +{ Vec 16 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_rubber.decl b/bin/base/generated/decls/renderparm/surftype_rubber.decl new file mode 100644 index 0000000..c965e85 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_rubber.decl @@ -0,0 +1 @@ +{ Vec 15 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_sheetmetal.decl b/bin/base/generated/decls/renderparm/surftype_sheetmetal.decl new file mode 100644 index 0000000..64616c3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_sheetmetal.decl @@ -0,0 +1 @@ +{ Vec 33 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_sludge.decl b/bin/base/generated/decls/renderparm/surftype_sludge.decl new file mode 100644 index 0000000..29f3669 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_sludge.decl @@ -0,0 +1 @@ +{ Vec 20 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_steampipe.decl b/bin/base/generated/decls/renderparm/surftype_steampipe.decl new file mode 100644 index 0000000..063b820 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_steampipe.decl @@ -0,0 +1 @@ +{ Vec 17 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_stone.decl b/bin/base/generated/decls/renderparm/surftype_stone.decl new file mode 100644 index 0000000..97a5cea --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_stone.decl @@ -0,0 +1 @@ +{ Vec 2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_thickpadding.decl b/bin/base/generated/decls/renderparm/surftype_thickpadding.decl new file mode 100644 index 0000000..bc751f9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_thickpadding.decl @@ -0,0 +1 @@ +{ Vec 29 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_waterpipe.decl b/bin/base/generated/decls/renderparm/surftype_waterpipe.decl new file mode 100644 index 0000000..bb25684 --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_waterpipe.decl @@ -0,0 +1 @@ +{ Vec 18 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/surftype_wood.decl b/bin/base/generated/decls/renderparm/surftype_wood.decl new file mode 100644 index 0000000..a37018d --- /dev/null +++ b/bin/base/generated/decls/renderparm/surftype_wood.decl @@ -0,0 +1 @@ +{ Vec 4 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp1.decl b/bin/base/generated/decls/renderparm/temp1.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp1.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp10.decl b/bin/base/generated/decls/renderparm/temp10.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp10.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp11.decl b/bin/base/generated/decls/renderparm/temp11.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp11.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp12.decl b/bin/base/generated/decls/renderparm/temp12.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp12.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp13.decl b/bin/base/generated/decls/renderparm/temp13.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp13.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp14.decl b/bin/base/generated/decls/renderparm/temp14.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp14.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp15.decl b/bin/base/generated/decls/renderparm/temp15.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp15.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp16.decl b/bin/base/generated/decls/renderparm/temp16.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp16.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp17.decl b/bin/base/generated/decls/renderparm/temp17.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp17.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp18.decl b/bin/base/generated/decls/renderparm/temp18.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp18.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp19.decl b/bin/base/generated/decls/renderparm/temp19.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp19.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp2.decl b/bin/base/generated/decls/renderparm/temp2.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp2.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp20.decl b/bin/base/generated/decls/renderparm/temp20.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp20.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp21.decl b/bin/base/generated/decls/renderparm/temp21.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp21.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp22.decl b/bin/base/generated/decls/renderparm/temp22.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp22.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp23.decl b/bin/base/generated/decls/renderparm/temp23.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp23.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp24.decl b/bin/base/generated/decls/renderparm/temp24.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp24.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp25.decl b/bin/base/generated/decls/renderparm/temp25.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp25.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp26.decl b/bin/base/generated/decls/renderparm/temp26.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp26.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp27.decl b/bin/base/generated/decls/renderparm/temp27.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp27.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp28.decl b/bin/base/generated/decls/renderparm/temp28.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp28.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp29.decl b/bin/base/generated/decls/renderparm/temp29.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp29.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp3.decl b/bin/base/generated/decls/renderparm/temp3.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp3.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp30.decl b/bin/base/generated/decls/renderparm/temp30.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp30.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp31.decl b/bin/base/generated/decls/renderparm/temp31.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp31.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp32.decl b/bin/base/generated/decls/renderparm/temp32.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp32.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp4.decl b/bin/base/generated/decls/renderparm/temp4.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp4.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp5.decl b/bin/base/generated/decls/renderparm/temp5.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp5.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp6.decl b/bin/base/generated/decls/renderparm/temp6.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp6.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp7.decl b/bin/base/generated/decls/renderparm/temp7.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp7.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp8.decl b/bin/base/generated/decls/renderparm/temp8.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp8.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/temp9.decl b/bin/base/generated/decls/renderparm/temp9.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/temp9.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/testenvlod.decl b/bin/base/generated/decls/renderparm/testenvlod.decl new file mode 100644 index 0000000..1ec8c2a --- /dev/null +++ b/bin/base/generated/decls/renderparm/testenvlod.decl @@ -0,0 +1 @@ +{ Vec 0 range 0, 3 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/testimagealpha.decl b/bin/base/generated/decls/renderparm/testimagealpha.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/testimagealpha.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/testimageflip.decl b/bin/base/generated/decls/renderparm/testimageflip.decl new file mode 100644 index 0000000..767377d --- /dev/null +++ b/bin/base/generated/decls/renderparm/testimageflip.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/testimagelod.decl b/bin/base/generated/decls/renderparm/testimagelod.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/testimagelod.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/texturemap.decl b/bin/base/generated/decls/renderparm/texturemap.decl new file mode 100644 index 0000000..f4c0b16 --- /dev/null +++ b/bin/base/generated/decls/renderparm/texturemap.decl @@ -0,0 +1 @@ +{ Tex2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/texturemapmultisample.decl b/bin/base/generated/decls/renderparm/texturemapmultisample.decl new file mode 100644 index 0000000..66706bd --- /dev/null +++ b/bin/base/generated/decls/renderparm/texturemapmultisample.decl @@ -0,0 +1 @@ +{ TexMultisample2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/texturemapshadow.decl b/bin/base/generated/decls/renderparm/texturemapshadow.decl new file mode 100644 index 0000000..f4c0b16 --- /dev/null +++ b/bin/base/generated/decls/renderparm/texturemapshadow.decl @@ -0,0 +1 @@ +{ Tex2D _default } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/time.decl b/bin/base/generated/decls/renderparm/time.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/time.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/timeoffset.decl b/bin/base/generated/decls/renderparm/timeoffset.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/timeoffset.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/timescale.decl b/bin/base/generated/decls/renderparm/timescale.decl new file mode 100644 index 0000000..c7c68ba --- /dev/null +++ b/bin/base/generated/decls/renderparm/timescale.decl @@ -0,0 +1 @@ +{ Vec 1 range 0, 10 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/timestop.decl b/bin/base/generated/decls/renderparm/timestop.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/timestop.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/tmatrix.decl b/bin/base/generated/decls/renderparm/tmatrix.decl new file mode 100644 index 0000000..8b6cdba --- /dev/null +++ b/bin/base/generated/decls/renderparm/tmatrix.decl @@ -0,0 +1 @@ +{ Vec { 0, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/tmatrix1.decl b/bin/base/generated/decls/renderparm/tmatrix1.decl new file mode 100644 index 0000000..8b6cdba --- /dev/null +++ b/bin/base/generated/decls/renderparm/tmatrix1.decl @@ -0,0 +1 @@ +{ Vec { 0, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_manifoldhint.decl b/bin/base/generated/decls/renderparm/toolsflag_manifoldhint.decl new file mode 100644 index 0000000..dcc11a5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_manifoldhint.decl @@ -0,0 +1 @@ +{ Vec 128 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_nocsg.decl b/bin/base/generated/decls/renderparm/toolsflag_nocsg.decl new file mode 100644 index 0000000..ccd773c --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_nocsg.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_pvsclip.decl b/bin/base/generated/decls/renderparm/toolsflag_pvsclip.decl new file mode 100644 index 0000000..547bd8a --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_pvsclip.decl @@ -0,0 +1 @@ +{ Vec 32 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_soundclip.decl b/bin/base/generated/decls/renderparm/toolsflag_soundclip.decl new file mode 100644 index 0000000..f346fee --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_soundclip.decl @@ -0,0 +1 @@ +{ Vec 2 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_soundcliptrans.decl b/bin/base/generated/decls/renderparm/toolsflag_soundcliptrans.decl new file mode 100644 index 0000000..f9cf161 --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_soundcliptrans.decl @@ -0,0 +1 @@ +{ Vec 4 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_sounddoor.decl b/bin/base/generated/decls/renderparm/toolsflag_sounddoor.decl new file mode 100644 index 0000000..ed72dd2 --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_sounddoor.decl @@ -0,0 +1 @@ +{ Vec 8 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflag_soundportal.decl b/bin/base/generated/decls/renderparm/toolsflag_soundportal.decl new file mode 100644 index 0000000..83616a4 --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflag_soundportal.decl @@ -0,0 +1 @@ +{ Vec 16 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/toolsflags.decl b/bin/base/generated/decls/renderparm/toolsflags.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/toolsflags.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transatlasmap.decl b/bin/base/generated/decls/renderparm/transatlasmap.decl new file mode 100644 index 0000000..9bbd67d --- /dev/null +++ b/bin/base/generated/decls/renderparm/transatlasmap.decl @@ -0,0 +1 @@ +{ String constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transatlasscalebias.decl b/bin/base/generated/decls/renderparm/transatlasscalebias.decl new file mode 100644 index 0000000..716b79f --- /dev/null +++ b/bin/base/generated/decls/renderparm/transatlasscalebias.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transatlasscalebiasinv.decl b/bin/base/generated/decls/renderparm/transatlasscalebiasinv.decl new file mode 100644 index 0000000..716b79f --- /dev/null +++ b/bin/base/generated/decls/renderparm/transatlasscalebiasinv.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transmap.decl b/bin/base/generated/decls/renderparm/transmap.decl new file mode 100644 index 0000000..eb81376 --- /dev/null +++ b/bin/base/generated/decls/renderparm/transmap.decl @@ -0,0 +1 @@ +{ Tex2D _black } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transmap1.decl b/bin/base/generated/decls/renderparm/transmap1.decl new file mode 100644 index 0000000..eb81376 --- /dev/null +++ b/bin/base/generated/decls/renderparm/transmap1.decl @@ -0,0 +1 @@ +{ Tex2D _black } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transmap2.decl b/bin/base/generated/decls/renderparm/transmap2.decl new file mode 100644 index 0000000..eb81376 --- /dev/null +++ b/bin/base/generated/decls/renderparm/transmap2.decl @@ -0,0 +1 @@ +{ Tex2D _black } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transsortatlasdim.decl b/bin/base/generated/decls/renderparm/transsortatlasdim.decl new file mode 100644 index 0000000..3df17a3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/transsortatlasdim.decl @@ -0,0 +1 @@ +{ Vec { 4096.0 , 4096.0, 0.000244140625, 0.000244140625 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/transsortmap.decl b/bin/base/generated/decls/renderparm/transsortmap.decl new file mode 100644 index 0000000..9bbd67d --- /dev/null +++ b/bin/base/generated/decls/renderparm/transsortmap.decl @@ -0,0 +1 @@ +{ String constantColor(0,0,0,0) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/useclipspheres.decl b/bin/base/generated/decls/renderparm/useclipspheres.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/useclipspheres.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/userenvmap.decl b/bin/base/generated/decls/renderparm/userenvmap.decl new file mode 100644 index 0000000..cb10aab --- /dev/null +++ b/bin/base/generated/decls/renderparm/userenvmap.decl @@ -0,0 +1 @@ +{ Environment env/default_px } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/useskinblending.decl b/bin/base/generated/decls/renderparm/useskinblending.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/useskinblending.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/usevirtualmapping.decl b/bin/base/generated/decls/renderparm/usevirtualmapping.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/usevirtualmapping.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/vertexmorphscale.decl b/bin/base/generated/decls/renderparm/vertexmorphscale.decl new file mode 100644 index 0000000..a93e90d --- /dev/null +++ b/bin/base/generated/decls/renderparm/vertexmorphscale.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/vertexstscalebias.decl b/bin/base/generated/decls/renderparm/vertexstscalebias.decl new file mode 100644 index 0000000..044cc51 --- /dev/null +++ b/bin/base/generated/decls/renderparm/vertexstscalebias.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/vertexxyzbias.decl b/bin/base/generated/decls/renderparm/vertexxyzbias.decl new file mode 100644 index 0000000..7e2801a --- /dev/null +++ b/bin/base/generated/decls/renderparm/vertexxyzbias.decl @@ -0,0 +1 @@ +{ Vec { 0, 0, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/vertexxyzscale.decl b/bin/base/generated/decls/renderparm/vertexxyzscale.decl new file mode 100644 index 0000000..5578f9a --- /dev/null +++ b/bin/base/generated/decls/renderparm/vertexxyzscale.decl @@ -0,0 +1 @@ +{ Vec { 1, 1, 1, 1 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewcolorlastframemap.decl b/bin/base/generated/decls/renderparm/viewcolorlastframemap.decl new file mode 100644 index 0000000..3cf0d03 --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewcolorlastframemap.decl @@ -0,0 +1 @@ +{ Tex2D _viewColor0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewcolormap.decl b/bin/base/generated/decls/renderparm/viewcolormap.decl new file mode 100644 index 0000000..3cf0d03 --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewcolormap.decl @@ -0,0 +1 @@ +{ Tex2D _viewColor0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewdepthmap.decl b/bin/base/generated/decls/renderparm/viewdepthmap.decl new file mode 100644 index 0000000..98aef42 --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewdepthmap.decl @@ -0,0 +1 @@ +{ Tex2D _viewDepth } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewdepthstencilmap.decl b/bin/base/generated/decls/renderparm/viewdepthstencilmap.decl new file mode 100644 index 0000000..5b710be --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewdepthstencilmap.decl @@ -0,0 +1 @@ +{ TexMultisample2D _frontDepthStencil } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewdiffusemap.decl b/bin/base/generated/decls/renderparm/viewdiffusemap.decl new file mode 100644 index 0000000..0d0a538 --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewdiffusemap.decl @@ -0,0 +1 @@ +{ TexMultisample2D _frontDiffuse } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewgraze.decl b/bin/base/generated/decls/renderparm/viewgraze.decl new file mode 100644 index 0000000..19cb04a --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewgraze.decl @@ -0,0 +1 @@ +{ Vec 0.0 range 0, 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewmatrixw.decl b/bin/base/generated/decls/renderparm/viewmatrixw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewmatrixw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewmatrixx.decl b/bin/base/generated/decls/renderparm/viewmatrixx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewmatrixx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewmatrixy.decl b/bin/base/generated/decls/renderparm/viewmatrixy.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewmatrixy.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewmatrixz.decl b/bin/base/generated/decls/renderparm/viewmatrixz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewmatrixz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewnormalmap.decl b/bin/base/generated/decls/renderparm/viewnormalmap.decl new file mode 100644 index 0000000..7f87f55 --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewnormalmap.decl @@ -0,0 +1 @@ +{ TexMultisample2D _frontNormal } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/viewrandom.decl b/bin/base/generated/decls/renderparm/viewrandom.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/viewrandom.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/virtualmapping.decl b/bin/base/generated/decls/renderparm/virtualmapping.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/virtualmapping.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/virtualpageprogram.decl b/bin/base/generated/decls/renderparm/virtualpageprogram.decl new file mode 100644 index 0000000..3d01273 --- /dev/null +++ b/bin/base/generated/decls/renderparm/virtualpageprogram.decl @@ -0,0 +1 @@ +{ Program 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/virtualtexturefeedbackfloat.decl b/bin/base/generated/decls/renderparm/virtualtexturefeedbackfloat.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/virtualtexturefeedbackfloat.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/virtualtransmap.decl b/bin/base/generated/decls/renderparm/virtualtransmap.decl new file mode 100644 index 0000000..c95da83 --- /dev/null +++ b/bin/base/generated/decls/renderparm/virtualtransmap.decl @@ -0,0 +1 @@ +{ String constantColor(1,1,1,1) } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/vmtrpagetablemap.decl b/bin/base/generated/decls/renderparm/vmtrpagetablemap.decl new file mode 100644 index 0000000..5b58dc3 --- /dev/null +++ b/bin/base/generated/decls/renderparm/vmtrpagetablemap.decl @@ -0,0 +1 @@ +{ Tex _vmtrPageTable } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/waterheight.decl b/bin/base/generated/decls/renderparm/waterheight.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/waterheight.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wind.decl b/bin/base/generated/decls/renderparm/wind.decl new file mode 100644 index 0000000..8b6cdba --- /dev/null +++ b/bin/base/generated/decls/renderparm/wind.decl @@ -0,0 +1 @@ +{ Vec { 0, 1, 0, 0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostodimshadowblurq.decl b/bin/base/generated/decls/renderparm/windowpostodimshadowblurq.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostodimshadowblurq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostodimshadowblurr.decl b/bin/base/generated/decls/renderparm/windowpostodimshadowblurr.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostodimshadowblurr.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostodimshadowblurs.decl b/bin/base/generated/decls/renderparm/windowpostodimshadowblurs.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostodimshadowblurs.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostodimshadowblurt.decl b/bin/base/generated/decls/renderparm/windowpostodimshadowblurt.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostodimshadowblurt.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoglobalw.decl b/bin/base/generated/decls/renderparm/windowpostoglobalw.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoglobalw.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoglobalx.decl b/bin/base/generated/decls/renderparm/windowpostoglobalx.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoglobalx.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoglobaly.decl b/bin/base/generated/decls/renderparm/windowpostoglobaly.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoglobaly.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoglobalz.decl b/bin/base/generated/decls/renderparm/windowpostoglobalz.decl new file mode 100644 index 0000000..4e70b5c --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoglobalz.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedshadowq.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedshadowq.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedshadowq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedshadowr.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedshadowr.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedshadowr.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedshadows.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedshadows.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedshadows.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedshadowt.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedshadowt.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedshadowt.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedtexq.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedtexq.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedtexq.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedtexr.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedtexr.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedtexr.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedtexs.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedtexs.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedtexs.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/windowpostoprojectedtext.decl b/bin/base/generated/decls/renderparm/windowpostoprojectedtext.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/windowpostoprojectedtext.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound1dirx.decl b/bin/base/generated/decls/renderparm/wound1dirx.decl new file mode 100644 index 0000000..a634bfe --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound1dirx.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound1diry.decl b/bin/base/generated/decls/renderparm/wound1diry.decl new file mode 100644 index 0000000..7e4c42c --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound1diry.decl @@ -0,0 +1 @@ +{ Vec { 0.0, 1.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound1dirz.decl b/bin/base/generated/decls/renderparm/wound1dirz.decl new file mode 100644 index 0000000..bd88e29 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound1dirz.decl @@ -0,0 +1 @@ +{ Vec { 0.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound1pos.decl b/bin/base/generated/decls/renderparm/wound1pos.decl new file mode 100644 index 0000000..463915f --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound1pos.decl @@ -0,0 +1 @@ +{ Vec { 0.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound1size.decl b/bin/base/generated/decls/renderparm/wound1size.decl new file mode 100644 index 0000000..78447f9 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound1size.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0, 1.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posa.decl b/bin/base/generated/decls/renderparm/wound3posa.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posa.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posb.decl b/bin/base/generated/decls/renderparm/wound3posb.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posb.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posc.decl b/bin/base/generated/decls/renderparm/wound3posc.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posc.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posd.decl b/bin/base/generated/decls/renderparm/wound3posd.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posd.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3pose.decl b/bin/base/generated/decls/renderparm/wound3pose.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3pose.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posf.decl b/bin/base/generated/decls/renderparm/wound3posf.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posf.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posg.decl b/bin/base/generated/decls/renderparm/wound3posg.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posg.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posh.decl b/bin/base/generated/decls/renderparm/wound3posh.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posh.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posi.decl b/bin/base/generated/decls/renderparm/wound3posi.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posi.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wound3posj.decl b/bin/base/generated/decls/renderparm/wound3posj.decl new file mode 100644 index 0000000..093dd89 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wound3posj.decl @@ -0,0 +1 @@ +{ Vec { 0.0, -999.0, 0.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/woundellipsoidx.decl b/bin/base/generated/decls/renderparm/woundellipsoidx.decl new file mode 100644 index 0000000..0f1e508 --- /dev/null +++ b/bin/base/generated/decls/renderparm/woundellipsoidx.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 0.0, 0.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/woundellipsoidy.decl b/bin/base/generated/decls/renderparm/woundellipsoidy.decl new file mode 100644 index 0000000..29b1859 --- /dev/null +++ b/bin/base/generated/decls/renderparm/woundellipsoidy.decl @@ -0,0 +1 @@ +{ Vec { 0.0, 1.0, 0.0, -999.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/woundellipsoidz.decl b/bin/base/generated/decls/renderparm/woundellipsoidz.decl new file mode 100644 index 0000000..3ded642 --- /dev/null +++ b/bin/base/generated/decls/renderparm/woundellipsoidz.decl @@ -0,0 +1 @@ +{ Vec { 0.0, 0.0, 1.0, 0.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/woundtextile.decl b/bin/base/generated/decls/renderparm/woundtextile.decl new file mode 100644 index 0000000..e2c8154 --- /dev/null +++ b/bin/base/generated/decls/renderparm/woundtextile.decl @@ -0,0 +1 @@ +{ Vec { 1.0, 1.0 } } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/woundtexture.decl b/bin/base/generated/decls/renderparm/woundtexture.decl new file mode 100644 index 0000000..a105715 --- /dev/null +++ b/bin/base/generated/decls/renderparm/woundtexture.decl @@ -0,0 +1 @@ +{ Tex hqcompress textures/sfx/wounds } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wrinklefactor0.decl b/bin/base/generated/decls/renderparm/wrinklefactor0.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wrinklefactor0.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wrinklefactor1.decl b/bin/base/generated/decls/renderparm/wrinklefactor1.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wrinklefactor1.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wrinklefactor2.decl b/bin/base/generated/decls/renderparm/wrinklefactor2.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wrinklefactor2.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wrinklefactor3.decl b/bin/base/generated/decls/renderparm/wrinklefactor3.decl new file mode 100644 index 0000000..753b2e5 --- /dev/null +++ b/bin/base/generated/decls/renderparm/wrinklefactor3.decl @@ -0,0 +1 @@ +{ Vec 0 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderparm/wrinklescale.decl b/bin/base/generated/decls/renderparm/wrinklescale.decl new file mode 100644 index 0000000..4f299da --- /dev/null +++ b/bin/base/generated/decls/renderparm/wrinklescale.decl @@ -0,0 +1 @@ +{ Vec 1 } \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/adaptiveglaregauss15.decl b/bin/base/generated/decls/renderprog/adaptiveglaregauss15.decl new file mode 100644 index 0000000..4ddaf03 --- /dev/null +++ b/bin/base/generated/decls/renderprog/adaptiveglaregauss15.decl @@ -0,0 +1,49 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // writes result.hcolor as the result of a smeared bloom + // glareStep will be { 1, 0 } or { 0, 1 } for horizontal / vertical separation + + // gaussian 3 std dev + float bloom0 = 0.134598; + float bloom1 = 0.127325; + float bloom2 = 0.107778; + float bloom3 = 0.081638; + float bloom4 = 0.055335; + float bloom5 = 0.033562; + float bloom6 = 0.018216; + float bloom7 = 0.008847; + + // convert from 0,1,2,3,... coordinates to 0.0 - 1.0 + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + float2 step = $adaptiveGlareBlurStep.xy * $positionToViewTexture.zw; + float2 dir = step; + + float4 total; + total = h4tex2D( $adaptiveGlareBlurMap, tc ) * bloom0; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom1; + dir += step; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom2; + dir += step; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom3; + dir += step; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom4; + dir += step; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom5; + dir += step; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom6; + dir += step; + total += ( h4tex2D( $adaptiveGlareBlurMap, tc + dir ) + h4tex2D( $adaptiveGlareBlurMap, tc - dir ) ) * bloom7; + + result.hcolor = total; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/autosprite1coloronly.decl b/bin/base/generated/decls/renderprog/autosprite1coloronly.decl new file mode 100644 index 0000000..4541f61 --- /dev/null +++ b/bin/base/generated/decls/renderprog/autosprite1coloronly.decl @@ -0,0 +1,35 @@ +{ + parms { + stageSort sortTrans + autoSpriteType 1 + discrete 1 + + localViewLeft.x dot3( globalViewLeft, inverseModelMatrixX ) + localViewLeft.y dot3( globalViewLeft, inverseModelMatrixY ) + localViewLeft.z dot3( globalViewLeft, inverseModelMatrixZ ) + + localViewUp.x dot3( globalViewUp, inverseModelMatrixX ) + localViewUp.y dot3( globalViewUp, inverseModelMatrixY ) + localViewUp.z dot3( globalViewUp, inverseModelMatrixZ ) + } + state { + depthmask + alphamask + } + hlsl_vp { + #include "includes/autosprite.inc" + + float4 position; + CALC_POSITION_AUTOSPRITE1( position.xyz, vertex.position.xyz, $localViewLeft.xyz, $localViewUp.xyz, vertex.tangent.xyz ); + position.w = vertex.position.w; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + result.color = $color; + } + hlsl_fp { + result.color = fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/autosprite2coloronly.decl b/bin/base/generated/decls/renderprog/autosprite2coloronly.decl new file mode 100644 index 0000000..ad14091 --- /dev/null +++ b/bin/base/generated/decls/renderprog/autosprite2coloronly.decl @@ -0,0 +1,35 @@ +{ + parms { + stageSort sortTrans + autoSpriteType 2 + discrete 1 + + localViewOrigin.x dot4( globalViewOrigin, inverseModelMatrixX ) + localViewOrigin.y dot4( globalViewOrigin, inverseModelMatrixY ) + localViewOrigin.z dot4( globalViewOrigin, inverseModelMatrixZ ) + localViewOrigin.w dot4( globalViewOrigin, inverseModelMatrixW ) + } + state { + depthmask + alphamask + twosided + } + hlsl_vp { + #include "includes/autosprite.inc" + + half4 col = swizzleColor( vertex.color ); + + float4 position; + CALC_POSITION_AUTOSPRITE2( position.xyz, $localViewOrigin.xyz, vertex.position.xyz, vertex.normal.xyz, vertex.normal.w, col.x ); + position.w = vertex.position.w; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + result.color = $color; + } + hlsl_fp { + result.color = fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicadd.decl b/bin/base/generated/decls/renderprog/basicadd.decl new file mode 100644 index 0000000..0b6e2b0 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicadd.decl @@ -0,0 +1,10 @@ +{ + inherit basicBlend + parms { + stageSort sortEmit + } + state { + blend GL_ONE GL_ONE + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicadddepthtest.decl b/bin/base/generated/decls/renderprog/basicadddepthtest.decl new file mode 100644 index 0000000..b6a06d1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicadddepthtest.decl @@ -0,0 +1,11 @@ +{ + inherit basicBlend + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + depthmask + depthfunc GL_LEQUAL + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicblend.decl b/bin/base/generated/decls/renderprog/basicblend.decl new file mode 100644 index 0000000..ecb1e09 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicblend.decl @@ -0,0 +1,29 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + depthfunc GL_ALWAYS + } + hlsl_vp { + #include "skinning.inc" + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + result.texcoord0.x = dot4( texcoord0, $sMatrix ); + result.texcoord0.y = dot4( texcoord0, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + result.color = $color; + } + hlsl_fp { + result.color = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicfilter.decl b/bin/base/generated/decls/renderprog/basicfilter.decl new file mode 100644 index 0000000..24daa8c --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicfilter.decl @@ -0,0 +1,10 @@ +{ + inherit basicBlend + parms { + stageSort sortTrans + } + state { + blend GL_DST_COLOR GL_ZERO + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicfiltertwoside.decl b/bin/base/generated/decls/renderprog/basicfiltertwoside.decl new file mode 100644 index 0000000..51f096c --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicfiltertwoside.decl @@ -0,0 +1,11 @@ +{ + inherit basicBlend + parms { + stageSort sortTrans + } + state { + blend GL_DST_COLOR GL_ZERO + twosided + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicmorphadd.decl b/bin/base/generated/decls/renderprog/basicmorphadd.decl new file mode 100644 index 0000000..c12e7e3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicmorphadd.decl @@ -0,0 +1,28 @@ +{ + inherit basicBlend + parms { + stageSort sortEmit + } + state { + blend GL_ONE GL_ONE + depthmask + } + hlsl_vp { + #include "includes/vertex.inc" + + float4 localPosition; + float4 texcoord; + + CALC_SKINNED_POSITIONS( localPosition, result.position ); + CALC_TEXCOORDS( texcoord ); + + // Multiply with texture matrix + result.texcoord0.x = dot4( texcoord.xy, $sMatrix ); + result.texcoord0.y = dot4( texcoord.xy, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + + // Multiply color with morph scale + result.color = $color; + result.color.xyz *= vertex.morph.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicsoftadditiveblend.decl b/bin/base/generated/decls/renderprog/basicsoftadditiveblend.decl new file mode 100644 index 0000000..0683e29 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicsoftadditiveblend.decl @@ -0,0 +1,11 @@ +{ + inherit basicSoftBlend + parms { + stageSort sortEmit + alphaScale.y 1.0 / alphaScale.x + } + state { + blend GL_SRC_ALPHA GL_ONE + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicsoftblend.decl b/bin/base/generated/decls/renderprog/basicsoftblend.decl new file mode 100644 index 0000000..c4dac89 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicsoftblend.decl @@ -0,0 +1,47 @@ +{ + parms { + stageSort sortTrans + alphaScale.y 1.0 / alphaScale.x + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + // result.texcoord0.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + + // Fade particle based on distance to near clip + float fade = saturate( abs( result.position.w ) * $particleFade.x ); + result.color = $color; + result.color.w *= fade; + +#ifdef XBOX + result.texcoord1 = result.position; +#endif + } + hlsl_fp { +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord1.z / fragment.texcoord1.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + float2 tc = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + float scale = ComputeSoftParticleScale( $viewDepthMap, tc, interpolatedZOverW, $alphaScale.y ); + half4 final = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color; + + // Apply global fog + //half fog = saturate( exp2( fragment.texcoord0.w ) ); + //final.xyz = lerp( $fogColor.xyz, final.xyz, fog ); + result.color = final; + result.color.xyz *= $brightnessScale.xyz; + result.color.w *= scale; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/basicsoftinvertfilter.decl b/bin/base/generated/decls/renderprog/basicsoftinvertfilter.decl new file mode 100644 index 0000000..c198113 --- /dev/null +++ b/bin/base/generated/decls/renderprog/basicsoftinvertfilter.decl @@ -0,0 +1,53 @@ +{ + inherit basicSoftBlend + parms { + stageSort sortTrans + alphaScale.y 1.0 / alphaScale.x + } + state { + blend GL_ZERO GL_ONE_MINUS_SRC_COLOR + depthmask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + // result.texcoord0.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + + // Fade particle based on distance to near clip + float fade = saturate( abs( result.position.w ) * $particleFade.x ); + result.color = $color; + result.color.w *= fade; + +#ifdef XBOX + result.texcoord1 = result.position; +#endif + } + hlsl_fp { + // Blend in edge fading and shadow contribution from vertex color + float4 r0 = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color; + result.color = r0 * r0.w; + } + hlsl_fp { +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord1.z / fragment.texcoord1.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + float2 tc = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + float scale = ComputeSoftParticleScale( $viewDepthMap, tc, interpolatedZOverW, $alphaScale.y ); + half4 final = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color; + final *= fragment.color.w; + + // Apply global fog + //half fog = saturate( exp2( fragment.texcoord0.w ) ); + //final.xyz = lerp( $fogColor.xyz, final.xyz, fog ); + result.color = final; + result.color *= scale; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/binkyuv.decl b/bin/base/generated/decls/renderprog/binkyuv.decl new file mode 100644 index 0000000..1959e30 --- /dev/null +++ b/bin/base/generated/decls/renderprog/binkyuv.decl @@ -0,0 +1,32 @@ +{ + parms { + } + state { + blend GL_ONE GL_ZERO + depthmask + twosided + depthfunc GL_ALWAYS + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0, 0 ); + } + hlsl_fp { + const float3 crc = float3( 1.595794678, -0.813476563, 0 ); + const float3 crb = float3( 0, -0.391448975, 2.017822266 ); + const float3 adj = float3( -0.87065506, 0.529705048f, -1.081668854f ); + + float Y = tex2D( $binkY, fragment.texcoord0.xy ).x; + float Cr = tex2D( $binkCr, fragment.texcoord0.xy ).x; + float Cb = tex2D( $binkCb, fragment.texcoord0.xy ).x; + + float3 p = _float3( Y * 1.164123535f ); + p += ( crc * Cr ) + ( crb * Cb ) + adj; + + result.color.xyz = p; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/blendlight.decl b/bin/base/generated/decls/renderprog/blendlight.decl new file mode 100644 index 0000000..86c8898 --- /dev/null +++ b/bin/base/generated/decls/renderprog/blendlight.decl @@ -0,0 +1,24 @@ +{ + parms { + lightColor lightColor * exposure + } + state { + blend GL_DST_COLOR GL_ONE + alphaMask + depthMask + depthFunc GL_GREATER + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "blendLight_fragment.inc" + + result.color = color * color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/blendlightadd.decl b/bin/base/generated/decls/renderprog/blendlightadd.decl new file mode 100644 index 0000000..69b4b3b --- /dev/null +++ b/bin/base/generated/decls/renderprog/blendlightadd.decl @@ -0,0 +1,25 @@ +{ + //inherit blendLight + parms { + lightColor lightColor * exposure + } + state { + blend GL_ONE GL_ONE + alphaMask + depthMask + depthFunc GL_GREATER + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "blendLight_fragment.inc" + + result.color = color * color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/blendlightdebugdraw.decl b/bin/base/generated/decls/renderprog/blendlightdebugdraw.decl new file mode 100644 index 0000000..aba0060 --- /dev/null +++ b/bin/base/generated/decls/renderprog/blendlightdebugdraw.decl @@ -0,0 +1,20 @@ +{ + parms { + } + state { + blend GL_ONE GL_ONE + alphaMask + depthMask + //depthFunc GL_ALWAYS + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + result.color = float4( 1.0, 0.0, 0.0, 1.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/blendlightinvfilter.decl b/bin/base/generated/decls/renderprog/blendlightinvfilter.decl new file mode 100644 index 0000000..607b7d0 --- /dev/null +++ b/bin/base/generated/decls/renderprog/blendlightinvfilter.decl @@ -0,0 +1,25 @@ +{ + //inherit blendLight + parms { + lightColor lightColor * exposure + } + state { + blend GL_ZERO GL_ONE_MINUS_SRC_COLOR + alphaMask + depthMask + depthFunc GL_GREATER + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "blendLight_fragment.inc" + + result.color = color * color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/blendlightspotshadow.decl b/bin/base/generated/decls/renderprog/blendlightspotshadow.decl new file mode 100644 index 0000000..005c77e --- /dev/null +++ b/bin/base/generated/decls/renderprog/blendlightspotshadow.decl @@ -0,0 +1,34 @@ +{ + parms { + lightColor lightColor * exposure + } + state { + blend GL_DST_COLOR GL_ONE + alphaMask + depthMask + depthFunc GL_GREATER +#if 1 + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP +#endif + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "blendLight_fragment.inc" + + float4 viewColor = tex2Dlod( $viewColorMap, float4(window.xy, 0.0, 0.0) ); + + float shadow = viewColor.w; // from alpha channel + if ( shadow > 0.59 && shadow < 0.91 ) { + shadow = saturate((shadow - 0.6)*(1.0/0.3)); + color *= shadow; + } + + result.color = color * color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/blendnodraw.decl b/bin/base/generated/decls/renderprog/blendnodraw.decl new file mode 100644 index 0000000..a5f44ad --- /dev/null +++ b/bin/base/generated/decls/renderprog/blendnodraw.decl @@ -0,0 +1,6 @@ +{ + inherit empty + parms { + stageSort sortTrans + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/bloomthreshold.decl b/bin/base/generated/decls/renderprog/bloomthreshold.decl new file mode 100644 index 0000000..ca9449f --- /dev/null +++ b/bin/base/generated/decls/renderprog/bloomthreshold.decl @@ -0,0 +1,38 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // On the PC, fragment.position.xy will always have a 0.5, + // like 0.5, 1.5, 2.5 ... 1279.5 + // On the 360, it will always be an integer. + + float2 texcoord = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + float2 translate = $positionToViewTexture.zw; + + float4 luminance = tex2D( $adaptiveLuminance, texcoord.xy ); + float3 glare = tex2D( $glareMap, texcoord.xy ).xyz; + float3 total = tex2D( $viewColorMap, texcoord.xy ).xyz; + + // add our emissive glare objects + total = total * 0.5; + + const float minThreshold = $adaptiveGlareParms.x; + const float maxThreshold = $adaptiveGlareParms.y; + const float avgSceneBrightness = $adaptiveGlareParms.z; + + float threshold = lerp( minThreshold, maxThreshold, luminance.x ); + total *= ( avgSceneBrightness / threshold ); + float3 finalColor = saturate( total - _float3( threshold ) - _float3( $adaptiveGlareThreshold.x ) ); + + result.color.xyz = finalColor.xyz * $adaptiveGlareColor.xyz + glare * 4.0; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/brokenwindshield.decl b/bin/base/generated/decls/renderprog/brokenwindshield.decl new file mode 100644 index 0000000..220a88f --- /dev/null +++ b/bin/base/generated/decls/renderprog/brokenwindshield.decl @@ -0,0 +1,77 @@ +{ + + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "skinning_normals.inc" + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + result.texcoord0.x = texcoord0.x; + result.texcoord0.y = texcoord0.y; + result.texcoord0.z = dot4( texcoord0, $sMatrix ); + result.texcoord0.w = dot4( texcoord0, $tMatrix ); + + // transform the local space vectors to world space + result.texcoord1.x = dot3( tangent, $modelMatrixX ); + result.texcoord1.y = dot3( bitangent, $modelMatrixX ); + result.texcoord1.z = dot3( normal, $modelMatrixX ); + result.texcoord1.w = morphScale; + + result.texcoord2.x = dot3( tangent, $modelMatrixY ); + result.texcoord2.y = dot3( bitangent, $modelMatrixY ); + result.texcoord2.z = dot3( normal, $modelMatrixY ); + result.texcoord2.w = 0.0; + + result.texcoord3.x = dot3( tangent, $modelMatrixZ ); + result.texcoord3.y = dot3( bitangent, $modelMatrixZ ); + result.texcoord3.z = dot3( normal, $modelMatrixZ ); + result.texcoord3.w = 0.0; + + result.color = $color; + } + hlsl_fp { + half2 texcoord = fragment.htexcoord0.xy; + + half4 diffuseMap = tex2D( $transMap, texcoord ); + half4 bumpMap = tex2D( $spareBumpMap, texcoord ); + + // Note that the optimized derivation of the localNormal below results in a vector that is half-unit length! + half3 localNormal = bumpMap.wyz - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); + + // transform into global space + half3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord1.xyz ); + globalNormal.y = dot3( localNormal, fragment.htexcoord2.xyz ); + globalNormal.z = dot3( localNormal, fragment.htexcoord3.xyz ); + globalNormal = normalize( globalNormal ); + + half3 primeLight = $primeLightColor.xyz; + half3 lightColor = _half3( 0.0 ) + + + abs( globalNormal.x * $channelLight0.xyz ) + + abs( -globalNormal.x * $channelLight1.xyz ) + + abs( globalNormal.y * $channelLight2.xyz ) + + abs( -globalNormal.y * $channelLight3.xyz ) + + abs( globalNormal.z * $channelLight4.xyz ) + + abs( -globalNormal.z * $channelLight5.xyz ); + lightColor *= 0.85; + + half4 final = fragment.color * diffuseMap; + final.xyz *= lightColor + primeLight; + + result.color = saturate( final ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/brokenwindshieldspecular.decl b/bin/base/generated/decls/renderprog/brokenwindshieldspecular.decl new file mode 100644 index 0000000..726799b --- /dev/null +++ b/bin/base/generated/decls/renderprog/brokenwindshieldspecular.decl @@ -0,0 +1,127 @@ +{ + parms { + stageSort sortTrans+1 + } + + state { + depthFunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #include "skinning_normals.inc" + + // vertex position + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + // texture 0 takes the base coordinates + result.texcoord0.x = texcoord0.x; + result.texcoord0.y = texcoord0.y; + result.texcoord0.z = ( $modelAngles.y - 0.5 ) + dot4( texcoord0, $sMatrix ); + result.texcoord0.w = $modelAngles.w + dot4( texcoord0, $tMatrix ); + + // transform the local space vectors to world space + result.texcoord1.x = dot3( tangent, $modelMatrixX ); + result.texcoord1.y = dot3( bitangent, $modelMatrixX ); + result.texcoord1.z = dot3( normal, $modelMatrixX ); + result.texcoord1.w = morphScale; + + result.texcoord2.x = dot3( tangent, $modelMatrixY ); + result.texcoord2.y = dot3( bitangent, $modelMatrixY ); + result.texcoord2.z = dot3( normal, $modelMatrixY ); + result.texcoord2.w = 0.0; + + result.texcoord3.x = dot3( tangent, $modelMatrixZ ); + result.texcoord3.y = dot3( bitangent, $modelMatrixZ ); + result.texcoord3.z = dot3( normal, $modelMatrixZ );½ + result.texcoord3.w = 0.0; + + // texture 4 takes the dir to the viewer and the fog value + result.texcoord4.x = dot4( position, $modelMatrixX ); + result.texcoord4.y = dot4( position, $modelMatrixY ); + result.texcoord4.z = dot4( position, $modelMatrixZ ); + result.texcoord4.xyz -= $globalViewOrigin.xyz; + result.texcoord4.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + } + hlsl_fp { + + half specularPower1 = 25.0; + half specularPower2 = 60.0; + half specularPower3 = 100.0; + + half2 texcoord = fragment.htexcoord0.xy; + half2 texcoordAnim = fragment.htexcoord0.zw; + + half4 bumpMap = tex2D( $spareBumpMap, texcoord ); + half4 specularMap = tex2D( $spareSpecularMap, texcoord ); + + half3 localNormal = bumpMap.wyz - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); + + half4 fakeEnvMap = tex2D( $textureMap, texcoordAnim + ( localNormal.xy * 0.075 ) ); + + // transform into global space + half3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord1.xyz ); + globalNormal.y = dot3( localNormal, fragment.htexcoord2.xyz ); + globalNormal.z = dot3( localNormal, fragment.htexcoord3.xyz ); + globalNormal = normalize( globalNormal ); + + half3 fromViewer = normalize( fragment.htexcoord4.xyz ); + half3 toViewer = -fromViewer; + + //--------------------------------------------------------------- + // reflection vector + //--------------------------------------------------------------- + half3 reflection = fromViewer - ( globalNormal * dot3( fromViewer, globalNormal ) * 2.0 ); + + half primeShadow = saturate( ( abs( dot3( globalNormal, fromViewer ) ) - 0.2 ) * 1.5 ); + half cosd1 = saturate( dot3( globalNormal, reflection ) ); + + //--------------------------------------------------------------- + // Create a half vector where light points both from and to it's direction and then select + // maximum so we get a good highlight from both viewing directions + //--------------------------------------------------------------- + half3 halfVec2_1 = normalize( toViewer + $primeLightDir.xyz ); + half3 halfVec2_2 = normalize( toViewer - $primeLightDir.xyz ); + half cosd2 = max( dot3( halfVec2_1, globalNormal ), dot3( halfVec2_2, globalNormal ) ); + cosd2 = saturate( ( cosd2 - 0.2 ) * 1.25 ); + + //--------------------------------------------------------------- + // Add some fake specular using our view matrix so we basically always have something in the window + //--------------------------------------------------------------- + half3 halfVec3 = normalize( toViewer + $viewMatrixZ.xyz ); + half cosd3 = saturate( ( dot3( globalNormal, halfVec3 ) - 0.2 ) * 1.25 ); + + // Sum everything togheter + half cosd = 0.0; + cosd += pow( cosd1, specularPower1 ) * 4.0; + cosd += pow( cosd2, specularPower2 ); + cosd += pow( cosd3, specularPower3 ); + + half3 primeLight = $primeLightColor.xyz; + half3 lightColor = _half3( 0.0 ) + + abs( globalNormal.x * $channelLight0.xyz ) + + abs( -globalNormal.x * $channelLight1.xyz ) + + abs( globalNormal.y * $channelLight2.xyz ) + + abs( -globalNormal.y * $channelLight3.xyz ) + + abs( globalNormal.z * $channelLight4.xyz ) + + abs( -globalNormal.z * $channelLight5.xyz ); + lightColor *= 0.5; + + // Add everything togheter + half3 light = ( primeLight + lightColor ) * specularMap.xyz * cosd; + + result.color.xyz = saturate( light ); + result.color.xyz += fakeEnvMap.xyz * ( primeLight + lightColor ) * specularMap.w; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/buildgodrays.decl b/bin/base/generated/decls/renderprog/buildgodrays.decl new file mode 100644 index 0000000..3c2bfa2 --- /dev/null +++ b/bin/base/generated/decls/renderprog/buildgodrays.decl @@ -0,0 +1,66 @@ +{ + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + + hlsl_vp { + + result.position = vertex.position; + result.position.xy = ( result.position.xy * $godRayQuadScaleBias.xy ) + $godRaySourceScaleBias.zw; +#ifndef PS3 + result.texcoord1 = vertex.position; + result.texcoord1.xy = ( result.texcoord1.xy * $godRaySourceScaleBias.xy ) + $godRaySourceScaleBias.zw; + + result.texcoord1.zw = ( result.texcoord1.xy - $godRaySourceScaleBias.zw ); + +//#define DEBUG_MASK +#ifdef DEBUG_MASK + result.texcoord3.xy = result.position.xy; +#endif +#endif + } + + hlsl_fp { +#ifdef PS3 + result.hcolor = float4( 0, 0, 0, 0 ); +#else +#ifdef DEBUG_MASK + float4 debugMinMax = float4( $godRaySourceScaleBias.z - $godRaySourceScaleBias.x, $godRaySourceScaleBias.z + $godRaySourceScaleBias.x, $godRaySourceScaleBias.w - $godRaySourceScaleBias.y, $godRaySourceScaleBias.w + $godRaySourceScaleBias.y ); + if ( fragment.texcoord3.x > debugMinMax.x && fragment.texcoord3.x < debugMinMax.y && fragment.texcoord3.y > debugMinMax.z && fragment.texcoord3.y < debugMinMax.w ) { + result.hcolor = float4( 1, 0, 1, 1 ); + return; + } + result.hcolor = $godRayColor; + return; +#endif + +#ifdef PC + const int NUM_STEPS = 32; +#else + const int NUM_STEPS = 8; +#endif + + float2 depthMapCoord = ( fragment.texcoord1.xy * 0.5f ) + 0.5f; + const float2 depthMapStep = ( fragment.texcoord1.zw ) / NUM_STEPS; + + result.hcolor = float4( 0, 0, 0, 0 ); + for ( int i = 0; i < NUM_STEPS; i++ ) { +#ifdef XBOX + const float depth = tex2Ddepth( $viewDepthMap, float2( depthMapCoord.x, 1 - depthMapCoord.y ) ); +#else + const float depth = tex2Ddepth( $viewDepthMap, depthMapCoord.xy ); +#endif + float depthMul = saturate( sign( depth - 0.999999f ) ); + + float2 colorMapCoord = ( depthMapCoord - $godRayQuadScaleBias.zw ) / $godRaySourceScaleBias.xy; + colorMapCoord = saturate( colorMapCoord + float2( 0.5f, 0.5f ) ); + + result.hcolor.xyz += $godRayColor.xyz * h4tex2D( $transMap, colorMapCoord ).xyz * depthMul * $godRayColor.w; + + depthMapCoord += depthMapStep; + } +#endif + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/characterdecalvmtr.decl b/bin/base/generated/decls/renderprog/characterdecalvmtr.decl new file mode 100644 index 0000000..a0df46c --- /dev/null +++ b/bin/base/generated/decls/renderprog/characterdecalvmtr.decl @@ -0,0 +1,114 @@ +{ + parms { + stageSort sortCoverage + useClipSpheres 1 + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + +//#define FULL_WOUNDS + #define CLIP_SPHERES + + #include "includes/vertex.inc" + #include "includes/gore.inc" + + CALC_TEXCOORDS_BLEND( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + +#if defined( CLIP_SPHERES ) + result.texcoord7.xy = result.texcoord0.xy * $woundTexTile.xy * _half2( 256.0 ); + CALC_GORE_CLIP_SPHERES( result.texcoord6 ); +#elif defined( FULL_WOUNDS ) + CALC_GORE_VERTEX( result.texcoord6, result.texcoord7 ); +#endif + } + hlsl_fp { + +//#define FULL_WOUNDS +#define CLIP_SPHERES +//#define DMG_SKINS + + #include "includes/vmtr.inc" + #include "includes/gore.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half4 color; + + +#if defined( CLIP_SPHERES ) + // look up wound texture with arbitrary tiling value, will need to be a parameter + half4 woundMap3 = tex2D( $woundTexture, fragment.texcoord7.xy ); + APPLY_GORE_CLIP_SPHERES( fragment.texcoord6.w, woundMap3 ); +#endif + +#if defined( DMG_SKINS ) + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.htexcoord1.w ); +#elif defined( CLIP_SPHERES ) + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.htexcoord1.w ); +#else + FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.htexcoord1.w ); +#endif + + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + +#if defined( FULL_WOUNDS ) + APPLY_GORE_WOUNDS( diffuse, fragment.htexcoord6, fragment.htexcoord7, $skinSpecularScale.x, sampleSpecular.xyz ); +#elif defined( CLIP_SPHERES ) + + half decal = 1.0 - saturate( fragment.texcoord6.z ); + woundMap3.w *= 1.0 - saturate( fragment.texcoord6.z ); + woundMap3.w += smoothstep( 0.75, 1.2, decal ); + woundMap3.w = smoothstep( 0.15, 0.8, woundMap3.w ); + + // apply blood color to the diffuse + diffuse.xyz = lerp( diffuse.xyz, diffuse.xyz * half3( 1.0, 0.15, 0.0 ) + half3( 0.05, 0.0075, 0.0 ), _float3( woundMap3.w ) ); + + // lerp the spec so blood is shinier than the rest of the character + specular.xyz = lerp( specular.xyz, half3( 0.5f, 0.4f, 0.3f ), _float3( woundMap3.w ) ); + + // normal maps are not in local space so we have to bring them into local space, + // add them together then put them back into texture space. Should probably bring + // the normal maps into local space earlier than CALC_GLOBAL_NORMAL to make modifying + // them easier. + woundMap3.xy -= 0.5; + woundMap3.xy *= woundMap3.w; + sampleNormal.xy += woundMap3.xy; +#endif + + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + APPLY_HIGHLIGHT( color, fromViewerN, fragment.htexcoord1, fragment.htexcoord2, fragment.htexcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/charactervmtr.decl b/bin/base/generated/decls/renderprog/charactervmtr.decl new file mode 100644 index 0000000..fdfbd59 --- /dev/null +++ b/bin/base/generated/decls/renderprog/charactervmtr.decl @@ -0,0 +1,66 @@ +{ + parms { + stageSort sortCoverage + + fadePerturbProgram = modelFadePerturb; + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS_BLEND( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + APPLY_MODEL_FADE; + + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.htexcoord1.w ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.htexcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleNormal.x, globalNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.htexcoord1, fragment.htexcoord2, fragment.htexcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/clothvmtr.decl b/bin/base/generated/decls/renderprog/clothvmtr.decl new file mode 100644 index 0000000..7ec4baa --- /dev/null +++ b/bin/base/generated/decls/renderprog/clothvmtr.decl @@ -0,0 +1,53 @@ +{ + parms { + stageSort sortCoverage+1 + } + state { + depthfunc GL_LEQUAL + twosided + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS_BLEND( result.texcoord0 ); + CALC_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4 ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord ); + clip( sampleSpecular.w - 0.5 ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL_TWOSIDED( globalNormal, sampleNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + APPLY_HIGHLIGHT( color, fromViewerN, fragment.htexcoord1, fragment.htexcoord2, fragment.htexcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/coloronly.decl b/bin/base/generated/decls/renderprog/coloronly.decl new file mode 100644 index 0000000..8ab7650 --- /dev/null +++ b/bin/base/generated/decls/renderprog/coloronly.decl @@ -0,0 +1,22 @@ +{ + parms { + stageSort sortCoverage + } + state { + alphamask + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + result.color = swizzleColor( vertex.color ); + } + hlsl_fp { + result.color = fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/colorparmonly.decl b/bin/base/generated/decls/renderprog/colorparmonly.decl new file mode 100644 index 0000000..71bcb7a --- /dev/null +++ b/bin/base/generated/decls/renderprog/colorparmonly.decl @@ -0,0 +1,19 @@ +{ + parms { + stageSort sortCoverage + } + state { + alphamask + } + hlsl_vp { + #include "skinning.inc" + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + } + hlsl_fp { + result.color = $color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/cubeimageonly.decl b/bin/base/generated/decls/renderprog/cubeimageonly.decl new file mode 100644 index 0000000..39dd175 --- /dev/null +++ b/bin/base/generated/decls/renderprog/cubeimageonly.decl @@ -0,0 +1,19 @@ +{ + parms { + stageSort sortCoverage + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = vertex.normal * 2.0 - 1.0; + } + hlsl_fp { + float4 tc; + tc.xyz = fragment.texcoord0.xyz; + tc.w = $testEnvLOD.x; + + result.color = texCUBElod( $envMap, tc ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/cutdepthonly.decl b/bin/base/generated/decls/renderprog/cutdepthonly.decl new file mode 100644 index 0000000..e9325bb --- /dev/null +++ b/bin/base/generated/decls/renderprog/cutdepthonly.decl @@ -0,0 +1,39 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + colorMask + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + // Transform vertex + result.position.x = dot( position, $mvpMatrixX ); + result.position.y = dot( position, $mvpMatrixY ); + result.position.z = dot( position, $mvpMatrixZ ); + result.position.w = dot( position, $mvpMatrixW ); + + // Texture 0 takes the base coordinates modified by stScaleBias for 16 bit vertex elements + // Also store the distance from the camera in [0,1] range clamping at 1500 units. + result.texcoord0.xy = ( vertex.texcoord1.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw ).xy; + result.texcoord0.z = 0.0; + result.texcoord0.w = saturate( result.position.w * 0.000667 ); + } + hlsl_fp { + // Calculate clip alpha threshold (higher threshold the closer to the texture that we are) + // This isn't correct in any way, but it does make the texture 'pop' more in the distance but still + // look sharp and crisp when looking at it close-up. + half threshold = -0.3 * fragment.texcoord0.w + 0.5; + + // Clip pixels using physical none virtualized texture + half4 texel = tex2D( $textureMap, fragment.texcoord0.xy ); + clip( texel.a - threshold ); + + // Clear output + result.color0 = _half4( 0.0 ); + result.color1 = _half4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/cutterflareadditiveblend.decl b/bin/base/generated/decls/renderprog/cutterflareadditiveblend.decl new file mode 100644 index 0000000..56abebf --- /dev/null +++ b/bin/base/generated/decls/renderprog/cutterflareadditiveblend.decl @@ -0,0 +1,9 @@ +{ + inherit cutterFlareBlend + state { + blend GL_SRC_ALPHA GL_ONE + depthmask + alphamask + depthfunc GL_ALWAYS + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/cutterflareblend.decl b/bin/base/generated/decls/renderprog/cutterflareblend.decl new file mode 100644 index 0000000..d915403 --- /dev/null +++ b/bin/base/generated/decls/renderprog/cutterflareblend.decl @@ -0,0 +1,25 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + alphamask + depthfunc GL_ALWAYS + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + float2 tc = vertex.texcoord0.xy * $particleStScaleBias.x + $particleStScaleBias.y; + result.texcoord0 = tc.xyxy; + + result.color = swizzleColor( vertex.color ) * $color; + } + hlsl_fp { + result.color = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/cutuniquebumptrans.decl b/bin/base/generated/decls/renderprog/cutuniquebumptrans.decl new file mode 100644 index 0000000..bd7b6c3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/cutuniquebumptrans.decl @@ -0,0 +1,7 @@ +{ + inherit landUniqueBump + state { + depthfunc GL_EQUAL + depthMask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/decalblend.decl b/bin/base/generated/decls/renderprog/decalblend.decl new file mode 100644 index 0000000..548ffc6 --- /dev/null +++ b/bin/base/generated/decls/renderprog/decalblend.decl @@ -0,0 +1,84 @@ +{ + parms { + stageSort sortDecal + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthfunc GL_GREATER + alphamask + depthmask + backSided + } + hlsl_vp { + float4 snormal = vertex.normal * 2.0 - 1.0; + float4 stangent = vertex.tangent * 2.0 - 1.0; + float3 normal = normalize( snormal.xyz ); + float3 tangent = normalize( stangent.xyz - normal * dot( normal, stangent.xyz ) ); + float3 bitangent = cross( normal, tangent );// * stangent.w; + + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + float2 scaleBiasX; + scaleBiasX.x = floor( vertex.texcoord0.x / $transSortAtlasDim.x ); + scaleBiasX.y = vertex.texcoord0.x - ( scaleBiasX.x * $transSortAtlasDim.x ); + + float2 scaleBiasY; + scaleBiasY.x = floor( vertex.texcoord0.y / $transSortAtlasDim.y ); + scaleBiasY.y = vertex.texcoord0.y - ( scaleBiasY.x * $transSortAtlasDim.y ); + + result.texcoord0.xy = scaleBiasX / $transSortAtlasDim.x; + result.texcoord0.zw = scaleBiasY / $transSortAtlasDim.y; + + result.texcoord1.xyz = tangent; + result.texcoord1.w = 0.0; + + result.texcoord2.xyz = bitangent; + result.texcoord2.w = 0.0; + + result.texcoord3.xyz = normal; + result.texcoord3.w = 0.0; + + // Extract the sign flags + float s = vertex.normal.w * 255.1; // compensate for rounding issues + float3 signs; + signs.z = floor( s / 4 ); + signs.y = floor( s / 2 ) - ( signs.z * 2 ); + signs.x = s - ( signs.y * 2 ) - ( signs.z * 4 ); + signs = signs * 2.0 - 1.0; + + float4 col = swizzleColor( vertex.color ); + float3 sizes = col.xyz * 255.0f; + sizes *= signs; + + // Pass through the origin of the cube + float3 origin = vertex.position.xyz - sizes; + + result.texcoord4.x = origin.x; + result.texcoord4.y = origin.y; + result.texcoord4.z = origin.z; + result.texcoord4.w = saturate( exp2( -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ) ) ); + + float3 pos = vertex.position.xyz - origin; + float3 localPos; + localPos.x = dot3( pos, tangent ); + localPos.y = dot3( pos, bitangent ); + localPos.z = dot3( pos, normal ); + + col.xyz = 1.0 / abs( localPos ); + result.color = col; + } + hlsl_fp { + #include "decalMerged_fragment.inc" + + half4 final = tex2D( $transMap, texcoord ); + final.w *= fragment.color.w; // fade based on time + final.w *= edgefade; // apply edge fade + + final.xyz = lerp( $fogColor.xyz, final.xyz, fog ); + result.color.xyz = final.xyz * final.w; + result.color.w = final.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/decalblood.decl b/bin/base/generated/decls/renderprog/decalblood.decl new file mode 100644 index 0000000..a871712 --- /dev/null +++ b/bin/base/generated/decls/renderprog/decalblood.decl @@ -0,0 +1,26 @@ +{ + inherit decalBlend + parms { + stageSort sortDecal + } + state { + blend GL_ZERO GL_ONE_MINUS_SRC_COLOR + depthfunc GL_GREATER + alphamask + depthmask + backSided + } + hlsl_fp { + #include "decalMerged_fragment.inc" + + half4 final = tex2D( $transMap, texcoord ); + final.w *= fragment.color.w; // fade based on time + final.w *= edgefade; // apply edge fade + + // Apply fog + final.xyz = lerp( _half3( 1.0 ), final.xyz, fog ); + + result.color.xyz = ( _half3( 1.0 ) - final.xyz ) * ( final.w * 2.0 ); + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/decalfilter.decl b/bin/base/generated/decls/renderprog/decalfilter.decl new file mode 100644 index 0000000..55e34ef --- /dev/null +++ b/bin/base/generated/decls/renderprog/decalfilter.decl @@ -0,0 +1,24 @@ +{ + inherit decalBlend + parms { + stageSort sortDecal + } + state { + blend GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA + depthfunc GL_GREATER + alphamask + depthmask + backSided + } + hlsl_fp { + #include "decalMerged_fragment.inc" + + half4 final = tex2D( $transMap, texcoord ); + final.w *= fragment.color.w; // fade based on time + final.w *= edgefade; // apply edge fade + + final.xyz = lerp( _half3( 1.0 ) + $fogColor.xyz, final.xyz, fog ); + result.color.xyz = final.xyz * final.w; + result.color.w = final.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/decalquadadd.decl b/bin/base/generated/decls/renderprog/decalquadadd.decl new file mode 100644 index 0000000..738f899 --- /dev/null +++ b/bin/base/generated/decls/renderprog/decalquadadd.decl @@ -0,0 +1,20 @@ +{ + inherit decalQuadBlend + parms { + stageSort sortDecal + } + state { + blend GL_ONE GL_ONE + depthfunc GL_LEQUAL + alphamask + depthmask + twosided + } + hlsl_fp { + #include "decalQuadMerged_fragment.inc" + + final.w *= fog; + result.color.xyz = final.xyz * final.w; + result.color.w = final.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/decalquadblend.decl b/bin/base/generated/decls/renderprog/decalquadblend.decl new file mode 100644 index 0000000..cefc1f0 --- /dev/null +++ b/bin/base/generated/decls/renderprog/decalquadblend.decl @@ -0,0 +1,45 @@ +{ + parms { + stageSort sortDecal + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthfunc GL_LEQUAL + alphamask + depthmask + twosided + } + hlsl_vp { + + float4 temp = swizzleColor( vertex.color ); + + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + float2 scaleBiasX; + scaleBiasX.x = floor( vertex.texcoord0.x / $transSortAtlasDim.x ); + scaleBiasX.y = vertex.texcoord0.x - ( scaleBiasX.x * $transSortAtlasDim.x ); + + float2 scaleBiasY; + scaleBiasY.x = floor( vertex.texcoord0.y / $transSortAtlasDim.y ); + scaleBiasY.y = vertex.texcoord0.y - ( scaleBiasY.x * $transSortAtlasDim.y ); + + result.texcoord0.xy = scaleBiasX / $transSortAtlasDim.x; + result.texcoord0.zw = scaleBiasY / $transSortAtlasDim.y; + + result.texcoord1.xy = temp.xy; + result.texcoord1.z = 0.0; + result.texcoord1.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + + result.color = float4( 1.0, 1.0, 1.0, temp.w ); + } + hlsl_fp { + #include "decalQuadMerged_fragment.inc" + + final.xyz = lerp( $fogColor.xyz, final.xyz, fog ); + result.color.xyz = final.xyz * final.w; + result.color.w = final.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/decalreplace.decl b/bin/base/generated/decls/renderprog/decalreplace.decl new file mode 100644 index 0000000..6e2595d --- /dev/null +++ b/bin/base/generated/decls/renderprog/decalreplace.decl @@ -0,0 +1,24 @@ +{ + inherit decalBlend + parms { + stageSort sortDecal + } + state { + blend GL_ONE GL_ZERO + depthfunc GL_GREATER + alphamask + depthmask + backSided + } + hlsl_fp { + #include "decalMerged_fragment.inc" + + half4 final = tex2D( $transMap, texcoord ); + final.w *= fragment.color.w; // fade based on time + final.w *= edgefade; // apply edge fade + + final.xyz = lerp( $fogColor.xyz, final.xyz, fog ); + result.color.xyz = final.xyz * final.w; + result.color.w = final.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/deferredparallellight.decl b/bin/base/generated/decls/renderprog/deferredparallellight.decl new file mode 100644 index 0000000..11882d8 --- /dev/null +++ b/bin/base/generated/decls/renderprog/deferredparallellight.decl @@ -0,0 +1,54 @@ +{ + parms { + lightColor lightColor * exposure + } + state { + blend GL_ONE GL_ONE + alphaMask + depthMask + depthFunc GL_GREATER + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/deferredlighting.inc" + + float4 windowPosition; + windowPosition.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); +#if defined( PC ) && !defined( PC_D3D ) + windowPosition.z = texelFetch( $viewDepthStencilMap, ivec2( fragment.position.xy ), 0 ).x; +#else + windowPosition.z = tex2Ddepth_fast( $viewDepthMap, windowPosition.xy ); +#endif + windowPosition.w = 1.0; + + float4 shadowTexCoord; + shadowTexCoord.x = dot4( windowPosition, $windowPosToProjectedShadowS ); + shadowTexCoord.y = dot4( windowPosition, $windowPosToProjectedShadowT ); + shadowTexCoord.z = dot4( windowPosition, $windowPosToProjectedShadowR ); + shadowTexCoord.w = dot4( windowPosition, $windowPosToProjectedShadowQ ); + +#if defined( XBOX ) + float ndcZ = windowPosition.z; +#else + float ndcZ = windowPosition.z * 2.0 - 1.0; +#endif + float viewZ = ndcZ * $projectionMatrixZ.w / ( ndcZ + $projectionMatrixZ.z ); + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, shadowTexCoord, viewZ ); + + float3 color; + DEFERRED_LIGHTING( color, fragment.position, windowPosition, shadow ); + + result.color.xyz = color; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/deferredpointlight.decl b/bin/base/generated/decls/renderprog/deferredpointlight.decl new file mode 100644 index 0000000..d33b328 --- /dev/null +++ b/bin/base/generated/decls/renderprog/deferredpointlight.decl @@ -0,0 +1,47 @@ +{ + parms { + lightColor lightColor * exposure + } + state { + blend GL_ONE GL_ONE + alphaMask + depthMask + depthFunc GL_GREATER + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/deferredlighting.inc" + + float4 windowPosition; + windowPosition.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); +#if defined( PC ) && !defined( PC_D3D ) + windowPosition.z = texelFetch( $viewDepthStencilMap, ivec2( fragment.position.xy ), 0 ).x; +#else + windowPosition.z = tex2Ddepth_fast( $viewDepthMap, windowPosition.xy ); +#endif + windowPosition.w = 1.0; + + float4 shadowTexCoord; + shadowTexCoord.x = dot4( windowPosition, $windowPosToProjectedShadowS ); + shadowTexCoord.y = dot4( windowPosition, $windowPosToProjectedShadowT ); + shadowTexCoord.z = dot4( windowPosition, $windowPosToProjectedShadowR ); + shadowTexCoord.w = dot4( windowPosition, $windowPosToProjectedShadowQ ); + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, shadowTexCoord ); + + float3 color; + DEFERRED_LIGHTING( color, fragment.position, windowPosition, shadow ); + + result.color.xyz = color; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/deferredspotlight.decl b/bin/base/generated/decls/renderprog/deferredspotlight.decl new file mode 100644 index 0000000..ff341b3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/deferredspotlight.decl @@ -0,0 +1,47 @@ +{ + parms { + lightColor lightColor * exposure + } + state { + blend GL_ONE GL_ONE + alphaMask + depthMask + depthFunc GL_GREATER + stencilFunc EQUAL 1 255 // only draw on stencil = 1 + stencilOp KEEP KEEP KEEP + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/deferredlighting.inc" + + float4 windowPosition; + windowPosition.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); +#if defined( PC ) && !defined( PC_D3D ) + windowPosition.z = texelFetch( $viewDepthStencilMap, ivec2( fragment.position.xy ), 0 ).x; +#else + windowPosition.z = tex2Ddepth_fast( $viewDepthMap, windowPosition.xy ); +#endif + windowPosition.w = 1.0; + + float4 shadowTexCoord; + shadowTexCoord.x = dot4( windowPosition, $windowPosToProjectedShadowS ); + shadowTexCoord.y = dot4( windowPosition, $windowPosToProjectedShadowT ); + shadowTexCoord.z = dot4( windowPosition, $windowPosToProjectedShadowR ); + shadowTexCoord.w = dot4( windowPosition, $windowPosToProjectedShadowQ ); + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, shadowTexCoord ); + + float3 color; + DEFERRED_LIGHTING( color, fragment.position, windowPosition, shadow ); + + result.color.xyz = color; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/depthonly.decl b/bin/base/generated/decls/renderprog/depthonly.decl new file mode 100644 index 0000000..d89778e --- /dev/null +++ b/bin/base/generated/decls/renderprog/depthonly.decl @@ -0,0 +1,21 @@ +{ + parms { + stageSort sortCoverage + } + state { + colormask + alphamask + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + } + hlsl_fp { + result.color = float4( 0.0, 0.0, 0.0, 1.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/detail.decl b/bin/base/generated/decls/renderprog/detail.decl new file mode 100644 index 0000000..6d3fd4d --- /dev/null +++ b/bin/base/generated/decls/renderprog/detail.decl @@ -0,0 +1,57 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + depthmask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + // texture 0 takes the base coordinates + result.texcoord0.xy = vertex.texcoord0.xy; + result.texcoord0.z = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + result.texcoord0.w = 0.0; + + result.color = swizzleColor( vertex.color ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + + FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + + // FIXME: dimshadow contribution + float shadow = 1.0; + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + + // automatically scale newDiffuseScale by 2.0 to match the baked-in behavior + + half3 color = ( surfaceDiffuse * $newDiffuseScale.xyz * 2.0 ) * fragment.color.xyz; + + // calculate fog term + float fog = saturate( exp2( fragment.texcoord0.z ) ); + + // lerp towards the fog color by the fog factor + result.color0.xyz = lerp( $fogColor.xyz, color.xyz, fog ); + result.color0.w = sampleSpecular.w; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, _float3( 0.0 ), 0.0, _float3( 0.0 ) ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowcreate.decl b/bin/base/generated/decls/renderprog/dimshadowcreate.decl new file mode 100644 index 0000000..de9bbcc --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowcreate.decl @@ -0,0 +1,16 @@ +{ + parms { + } + state { + colormask + alphamask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + result.color = _float4( 1.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowcreatealpha.decl b/bin/base/generated/decls/renderprog/dimshadowcreatealpha.decl new file mode 100644 index 0000000..e4cd3a8 --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowcreatealpha.decl @@ -0,0 +1,29 @@ +{ + parms { + } + state { + colormask + alphamask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + float2 texcoord = fragment.texcoord0.xy; + BRANCH if ( $useVirtualMapping.x > 0.0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + + // coverMap is stored in specularPages.w + float cover = texPhys( $physicalVmtrPagesMap0, physCoord.xy ).w; + clip( cover - 0.5 ); + result.color = _float4( 1.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowcreatewound.decl b/bin/base/generated/decls/renderprog/dimshadowcreatewound.decl new file mode 100644 index 0000000..3c20640 --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowcreatewound.decl @@ -0,0 +1,27 @@ +{ + parms { + } + state { + colormask + alphamask + } + hlsl_vp { + #include "includes/vertex.inc" + #include "includes/gore.inc" + + float4 texcoord0; + + CALC_TEXCOORDS( texcoord0 ); + result.texcoord7 = texcoord0 * float4( $woundTexTile.xy, 1.0, 1.0 ); + CALC_SKINNED_POSITION( result.position ); + CALC_GORE_CLIP_SPHERES( result.texcoord6 ); + } + hlsl_fp { + #include "includes/gore.inc" + // look up wound texture with arbitrary tiling value, will need to be a parameter + half4 woundMap3 = tex2D( $woundTexture, fragment.texcoord7.xy ); + + APPLY_GORE_CLIP_SPHERES( fragment.texcoord6.w, woundMap3 ); + result.color = _float4( 1.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowdebugdraw.decl b/bin/base/generated/decls/renderprog/dimshadowdebugdraw.decl new file mode 100644 index 0000000..ae6df62 --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowdebugdraw.decl @@ -0,0 +1,23 @@ +{ + state { + depthFunc GL_ALWAYS + twosided + } + hlsl_vp { + float4 pos = vertex.position; + float3 normal = vertex.normal.xyz * 2.0 - 1.0; + if ( dot3( normal, $dimShadowExtrude ) > 0.0 ) { + float dist = dot4( pos, $dimShadowClipPlane ); + float closing = dot3( $dimShadowExtrude.xyz, $dimShadowClipPlane.xyz ); + pos.xyz -= $dimShadowExtrude.xyz * ( dist / closing ); + } + + result.position.x = dot4( pos, $mvpMatrixX ); + result.position.y = dot4( pos, $mvpMatrixY ); + result.position.z = dot4( pos, $mvpMatrixZ ); + result.position.w = dot4( pos, $mvpMatrixW ); + } + hlsl_fp { + result.color = float4( 0.8, 0.1, 0.8, 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowdraw.decl b/bin/base/generated/decls/renderprog/dimshadowdraw.decl new file mode 100644 index 0000000..0bc862a --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowdraw.decl @@ -0,0 +1,77 @@ +{ + parms { + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthFunc GL_GREATER // we are also relying on the stencil buffer already being set + depthMask + alphaMask + stencilFunc EQUAL 1 255 // only draw on stencil = STENCIL_SHADOW + stencilop KEEP KEEP KEEP + } + hlsl_vp { + float4 pos = vertex.position; + float3 normal = vertex.normal.xyz * 2.0 - 1.0; + if ( dot3( normal, $dimShadowExtrude ) > 0.0 ) { + float dist = dot4( pos, $dimShadowClipPlane ); + float closing = dot3( $dimShadowExtrude.xyz, $dimShadowClipPlane.xyz ); + pos.xyz -= $dimShadowExtrude.xyz * ( dist / closing ); + } + + result.position.x = dot4( pos, $mvpMatrixX ); + result.position.y = dot4( pos, $mvpMatrixY ); + result.position.z = dot4( pos, $mvpMatrixZ ); + result.position.w = dot4( pos, $mvpMatrixW ); + } + hlsl_fp { + // this is normalized window space, not strict openGL window space + // that uses integer viewport values. + float3 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // fetch the window space depth value + window.z = tex2Ddepth( $viewDepthMap, window.xy ); + + float4 wclip = float4( window.xyz, 1.0f ); + + // now transform to the light clip space + float4 light; + light.x = dot4( wclip, $windowPosToDimShadowBlurS ); + light.y = dot4( wclip, $windowPosToDimShadowBlurT ); + light.z = dot4( wclip, $windowPosToDimShadowBlurR ); + light.w = dot4( wclip, $windowPosToDimShadowBlurQ ); + + // divide by w to get to light device coordinates + light.xyz /= light.w; + + // move the -1.0 - 1.0 light device st to the 0.0 - 1.0 texture range +#if defined( XBOX ) + light.xy = ( light.xy * 0.5 ) + 0.5; // don't adjust z, it is already 0 - 1 +#else + light = ( light * 0.5 ) + 0.5; +#endif + +#if defined( XBOX ) || defined( PS3 ) + light.y = 1.0 - light.y; // image y origin adjust +#endif + // clamp before sampling, because the shadow depth map may have + // only been updated in a restricted viewport + light.xy = min( light.xy, 0.99 ); + light.xy = max( light.xy, 0.01 ); + + // make sure that the cleared z = 1.0 in the shadow buffer + // will always be farther away than any world surface + light.z = min( light.z, 0.9999999 ); + + float shadow = shadow2Ddepth( $dimShadowDepthMap, light.xyz ); + + // get the amount of shadow accepted by the surface from the alpha channel + float acceptShadow = tex2D( $viewColorMap, window.xy ).w; + + // only use a fraction of the dimshadow value, since we can't separate the + // contribution along the shadow from the remainder + shadow = ( 1.0 - shadow ) * acceptShadow * $dimshadowfade.x; + + result.color = float4( 0.0, 0.0, 0.0, shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowdrawhighquality.decl b/bin/base/generated/decls/renderprog/dimshadowdrawhighquality.decl new file mode 100644 index 0000000..f28abe4 --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowdrawhighquality.decl @@ -0,0 +1,112 @@ +{ + parms { + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthFunc GL_GREATER // we are also relying on the stencil buffer already being set + depthMask + alphaMask + stencilFunc EQUAL 1 255 // only draw on stencil = STENCIL_SHADOW + stencilop KEEP KEEP KEEP + } + hlsl_vp { + float4 pos = vertex.position; + + float3 normal = vertex.normal.xyz * 2.0 - 1.0; + if ( dot3( normal, $dimShadowExtrude ) > 0.0 ) { + float dist = dot4( pos, $dimShadowClipPlane ); + float closing = dot3( $dimShadowExtrude.xyz, $dimShadowClipPlane.xyz ); + pos.xyz -= $dimShadowExtrude.xyz * ( dist / closing ); + } + + result.position.x = dot4( pos, $mvpMatrixX ); + result.position.y = dot4( pos, $mvpMatrixY ); + result.position.z = dot4( pos, $mvpMatrixZ ); + result.position.w = dot4( pos, $mvpMatrixW ); + } + hlsl_fp { + // this is normalized window space, not strict openGL window space + // that uses integer viewport values. + float3 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // fetch the window space depth value + window.z = tex2Ddepth( $viewDepthMap, window.xy ); + + float4 wclip = float4( window.xyz, 1.0f ); + + // now transform to the light clip space + float4 light; + light.x = dot4( wclip, $windowPosToDimShadowBlurS ); + light.y = dot4( wclip, $windowPosToDimShadowBlurT ); + light.z = dot4( wclip, $windowPosToDimShadowBlurR ); + light.w = dot4( wclip, $windowPosToDimShadowBlurQ ); + + // divide by w to get to light device coordinates + light.xyz /= light.w; + + // move the -1.0 - 1.0 light device st to the 0.0 - 1.0 texture range +#if defined( XBOX ) + light.xy = ( light.xy * 0.5 ) + 0.5; // don't adjust z, it is already 0 - 1 +#else + light = ( light * 0.5 ) + 0.5; +#endif + +#if defined( XBOX ) || defined( PS3 ) + light.y = 1.0 - light.y; // image y origin adjust +#endif + + // Make sure that the cleared z = 1.0 in the shadow buffer + // will always be farther away than any world surface. This is necessary + // because the extruded box can contain areas that are outside the actual + // projection. + light.z = min( light.z, 0.9999999 ); + + float2 tc = fragment.position.xy * float2( 1.0/128, 1.0/128 ) + $viewRandom.xy; + float2 dither = tex2D( $dither256map, tc ).xw; + + const float step = 1.0 / 768.0; + float3 center; + // this biases by +1.5 on average, so we can test -3, -2, -1, 0 offsets + center.xy = light.xy + step + dither * step; + center.z = light.z; + +#if defined( XBOX ) + float shadow; + shadow = shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( 0*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -3*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -1*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -1*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( 0*step, -1*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -3*step, -1*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, 0*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, 0*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( 0*step, 0*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -3*step, 0*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -3*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -3*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( 0*step, -3*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -3*step, -3*step, 0 ) ); + shadow *= 0.0625; +#else + // the PC and PS3 takes advantage of hardware PCF + float shadow; + shadow = shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -2*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -2*step, -1*step, 0 ) ); + shadow += shadow2Ddepth( $dimShadowDepthMap, center + float3( -1*step, -1*step, 0 ) ); + shadow *= 0.25; +#endif + + // get the amount of shadow accepted by the surface from the alpha channel + float acceptShadow = tex2D( $viewColorMap, window.xy ).w; + + // only use a fraction of the dimshadow value, since we can't separate the + // contribution along the shadow from the remainder + shadow = ( 1.0 - shadow ) * acceptShadow * $dimshadowfade.x; + + result.color = float4( 0.0, 0.0, 0.0, shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/dimshadowstencil.decl b/bin/base/generated/decls/renderprog/dimshadowstencil.decl new file mode 100644 index 0000000..8feb156 --- /dev/null +++ b/bin/base/generated/decls/renderprog/dimshadowstencil.decl @@ -0,0 +1,27 @@ +{ + parms { + } + state { + depthFunc ALWAYS + depthMask + colorMask + alphaMask + } + hlsl_vp { + float4 pos = vertex.position; + float3 normal = vertex.normal.xyz * 2.0 - 1.0; + if ( dot3( normal, $dimShadowExtrude ) > 0.0 ) { + float dist = dot4( pos, $dimShadowClipPlane ); + float closing = dot3( $dimShadowExtrude.xyz, $dimShadowClipPlane.xyz ); + pos.xyz -= $dimShadowExtrude.xyz * ( dist / closing ); + } + + result.position.x = dot4( pos, $mvpMatrixX ); + result.position.y = dot4( pos, $mvpMatrixY ); + result.position.z = dot4( pos, $mvpMatrixZ ); + result.position.w = dot4( pos, $mvpMatrixW ); + } + hlsl_fp { + result.color = float4( 0.0, 0.0, 0.0, 1.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/drawgodray.decl b/bin/base/generated/decls/renderprog/drawgodray.decl new file mode 100644 index 0000000..8ce117f --- /dev/null +++ b/bin/base/generated/decls/renderprog/drawgodray.decl @@ -0,0 +1,23 @@ +{ + state { + blend GL_ONE GL_ONE + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + result.texcoord0.xy = vertex.texcoord0.xy; + +#ifdef XBOX + result.texcoord0.y = 1 - result.texcoord0.y; +#endif + } + hlsl_fp { +#ifdef PS3 + result.hcolor = float4( 0, 0, 0, 0 ); +#else + result.hcolor = h4tex2D( $postDistortionMap, fragment.texcoord0.xy ); +#endif + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/editordraw.decl b/bin/base/generated/decls/renderprog/editordraw.decl new file mode 100644 index 0000000..77f6fc6 --- /dev/null +++ b/bin/base/generated/decls/renderprog/editordraw.decl @@ -0,0 +1,18 @@ +{ + parms { + stageSort sortDecal + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.xy = vertex.texcoord0.xy; + result.texcoord0.zw = _float2( 0.0 ); + } + hlsl_fp { + // Get the alpha value from the coverMap + result.color = tex2D( $editorMap, fragment.texcoord0.xy ) * $editorColor; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/editorfeedbackvmtr.decl b/bin/base/generated/decls/renderprog/editorfeedbackvmtr.decl new file mode 100644 index 0000000..4c4cfb1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/editorfeedbackvmtr.decl @@ -0,0 +1,36 @@ +{ + parms { + } + state { + } + hlsl_vp { + #include "includes/vertex.inc" + + float4 localPosition; + CALC_SKINNED_POSITIONS( localPosition, result.position ); + CALC_TEXCOORDS_BLEND( result.texcoord0 ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + float2 texcoord; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( fragment.texcoord0.xy ) * $virtualMapping.xy + $virtualMapping.zw; + } else { + BRANCH if ( $useSkinBlending.x > 0.0 ) { + float2 fp = float2( fragment.position.x * $positionToFeedback.z, fragment.position.y * $positionToFeedback.w ); + float2 xy = frac( fp ) - 0.5; + texcoord = ( xy.x * xy.y < 0.0 ) ? fragment.texcoord0.xy : fragment.texcoord0.zw; + } else { + texcoord = fragment.texcoord0.xy; + } + } + + float4 feedback; + CALC_VMTR_FEEDBACK( feedback, texcoord ); + + result.color = feedback; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/empty.decl b/bin/base/generated/decls/renderprog/empty.decl new file mode 100644 index 0000000..f350463 --- /dev/null +++ b/bin/base/generated/decls/renderprog/empty.decl @@ -0,0 +1,10 @@ +{ + hlsl_vp { + result.position = _float4( 0.0 ); + } + hlsl_fp { + clip( -1 ); + result.color = _float4( 0.0 ); + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/environment.decl b/bin/base/generated/decls/renderprog/environment.decl new file mode 100644 index 0000000..7a952d3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/environment.decl @@ -0,0 +1,99 @@ +{ + // attached environment maps are added on to surfaces at all times, + // without changing + parms { + stageSort sortDecal + } + state { + blend GL_ONE GL_ONE + depthfunc GL_EQUAL + depthMask + } + + hlsl_vp { + #include "skinning_normals.inc" + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + // texture 1 takes the base coordinates + result.texcoord1 = texcoord0.xyxy; + + // texture 0 takes the dir to the viewer + result.texcoord0.x = dot4( position, $modelMatrixX ); + result.texcoord0.y = dot4( position, $modelMatrixY ); + result.texcoord0.z = dot4( position, $modelMatrixZ ); + result.texcoord0.xyz -= $globalViewOrigin.xyz; + result.texcoord0.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + + // transform the local space vectors to world space + result.texcoord2.x = dot3( tangent, $modelMatrixX ); + result.texcoord2.y = dot3( bitangent, $modelMatrixX ); + result.texcoord2.z = dot3( normal, $modelMatrixX ); + result.texcoord2.w = 1.0; + + result.texcoord3.x = dot3( tangent, $modelMatrixY ); + result.texcoord3.y = dot3( bitangent, $modelMatrixY ); + result.texcoord3.z = dot3( normal, $modelMatrixY ); + result.texcoord3.w = 1.0; + + result.texcoord4.x = dot3( tangent, $modelMatrixZ ); + result.texcoord4.y = dot3( bitangent, $modelMatrixZ ); + result.texcoord4.z = dot3( normal, $modelMatrixZ ); + result.texcoord4.w = 1.0; + } + hlsl_fp { + + half4 specularColor = tex2D( $spareSpecularMap, fragment.texcoord1.xy ); + half4 bump = tex2D( $spareBumpMap, fragment.texcoord1.xy ); + + float3 localNormal = float3( ( bump.xy * 2.0 ) - 1.0, 0.0 ); + // derive the localNormal z component + localNormal.z = sqrt( abs( 1.0 - dot3( localNormal, localNormal ) ) ); + + // transform into global space + float3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.texcoord2 ); + globalNormal.y = dot3( localNormal, fragment.texcoord3 ); + globalNormal.z = dot3( localNormal, fragment.texcoord4 ); + globalNormal = normalize( globalNormal ); + + //------------------------------------------- + + // normalize the direction to the viewer + float3 toViewer = normalize( -fragment.texcoord0.xyz ); + + // calculate the grazing fraction + float graze = saturate( dot3( toViewer, globalNormal ) ); + graze = saturate( ( $viewGraze.x - max( graze, -graze ) ) / ( $viewGraze.x + 0.0001 ) ); + + // the scale factor will be a lerp between envScale and envGrazingScale + graze = lerp( $envScale.x, $envGrazingScale.x, graze ); + + // calculate the specular reflection vector from viewer and globalNormal + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + reflection.w = 0; + + // load up the environment value from the reflection vector + half3 color = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + // modulate by the environment mask map (specular channel) + color *= specularColor.xyz; + color *= $exposure.xyz; + + // and the combined grazing scale + color *= graze; + + float fog = saturate( exp2( fragment.texcoord0.w ) ); + + // lerp towards 0.0 by the fog factor + result.color.xyz = lerp( _float3( 0.0 ), color.xyz, fog ); + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/environmentadd.decl b/bin/base/generated/decls/renderprog/environmentadd.decl new file mode 100644 index 0000000..c1ba40f --- /dev/null +++ b/bin/base/generated/decls/renderprog/environmentadd.decl @@ -0,0 +1,8 @@ +{ + inherit environment + state { + blend GL_ONE GL_ONE + depthfunc GL_LEQUAL + depthMask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/environmentblend.decl b/bin/base/generated/decls/renderprog/environmentblend.decl new file mode 100644 index 0000000..2e624e5 --- /dev/null +++ b/bin/base/generated/decls/renderprog/environmentblend.decl @@ -0,0 +1,26 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + twosided + depthfunc GL_ALWAYS + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0.x = dot3( vertex.position.xyz, $envSMatrix.xyz ); + result.texcoord0.y = dot3( vertex.position.xyz, $envTMatrix.xyz ); + result.texcoord0.z = dot3( vertex.position.xyz, $envRMatrix.xyz ); + result.texcoord0.w = $envBlendMip.x; // fixed mip level + result.color = $color; + } + hlsl_fp { + result.color = texCUBElod( $userEnvMap, fragment.texcoord0 ); + result.color.w = fragment.color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/environmentmodulateadd.decl b/bin/base/generated/decls/renderprog/environmentmodulateadd.decl new file mode 100644 index 0000000..2050243 --- /dev/null +++ b/bin/base/generated/decls/renderprog/environmentmodulateadd.decl @@ -0,0 +1,9 @@ +{ + inherit environmentSingleModulateAdd + state { + twosided + blend GL_ONE GL_SRC_ALPHA + depthfunc GL_LEQUAL + depthMask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/environmentsinglemodulateadd.decl b/bin/base/generated/decls/renderprog/environmentsinglemodulateadd.decl new file mode 100644 index 0000000..bd376e8 --- /dev/null +++ b/bin/base/generated/decls/renderprog/environmentsinglemodulateadd.decl @@ -0,0 +1,89 @@ +{ + // attached environment maps are added on to surfaces at all times, without changing + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_SRC_ALPHA + depthfunc GL_LEQUAL + depthMask + } + + hlsl_vp { + #include "skinning_normals.inc" + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + // texture 1 takes the base coordinates + result.texcoord1 = texcoord0.xyxy; + + // texture 0 takes the dir to the viewer + result.texcoord0.x = dot4( position, $modelMatrixX ); + result.texcoord0.y = dot4( position, $modelMatrixY ); + result.texcoord0.z = dot4( position, $modelMatrixZ ); + result.texcoord0.xyz -= $globalViewOrigin.xyz; + result.texcoord0.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + + // transform local normal to world space + result.texcoord2.x = dot3( normal, $modelMatrixX ); + result.texcoord2.y = dot3( normal, $modelMatrixY ); + result.texcoord2.z = dot3( normal, $modelMatrixZ ); + result.texcoord2.w = 1.0; + + result.color = $color; + } + hlsl_fp { + + // sample environment mask and modulate channel + half4 transColor = tex2D( $transMap, fragment.texcoord1.xy ); + + // normalize the normal + float3 globalNormal = normalize( fragment.texcoord2.xyz ); + + //------------------------------------------- + + // normalize the direction to the viewer + float3 toViewer = normalize( -fragment.texcoord0.xyz ); + + // calculate the grazing fraction + float graze = saturate( dot3( toViewer, globalNormal ) ); + graze = saturate( ( $viewGraze.x - max( graze, -graze ) ) / ( $viewGraze.x + 0.0001 ) ); + + // the scale factor will be a lerp between envScale and envGrazingScale + graze = lerp( $envScale.x, $envGrazingScale.x, graze ); + + // calculate the specular reflection vector from viewer and globalNormal + half4 reflection; + reflection.xyz = ( 2.0 * globalNormal * dot3( globalNormal, toViewer ) ) - toViewer; + reflection.w = 0; + + // load up the environment value from the reflection vector + half3 color = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + // modulate by the environment mask map + color *= transColor.xyz; + color *= $exposure.xyz; + color *= fragment.color.xyz; + + // and the combined grazing scale + color *= graze; + + // and then premultiply with modulate channel + color *= transColor.w * fragment.color.w; + + // figure out fog amount + float fog = saturate( exp2( fragment.texcoord0.w ) ); + + // lerp towards 0.0 by the fog factor so additive color rgb results in no changes to the backbuffer + result.color.xyz = lerp( _float3( 0.0 ), color.xyz, fog ); + + // lerp towards 1.0 by the fog factor so that the modulate results in no changes to the backuffer + result.color.w = lerp( 1.0, transColor.w * fragment.color.w, fog ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/eyehighquality.decl b/bin/base/generated/decls/renderprog/eyehighquality.decl new file mode 100644 index 0000000..adb7c0a --- /dev/null +++ b/bin/base/generated/decls/renderprog/eyehighquality.decl @@ -0,0 +1,50 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleDiffuse; + half4 sampleSpecular; + half4 sampleNormal; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + sampleDiffuse = tex2D( $spareDiffuseMap, fragment.texcoord0.xy ); + sampleSpecular = tex2D( $spareSpecularMap, fragment.texcoord0.xy ); + sampleNormal = tex2D( $spareBumpMap, fragment.texcoord0.xy ); + + half3 diffuse = sampleDiffuse.xyz; + half3 specular = sampleSpecular.xyz; + half power = 1.0; + + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + APPLY_SPECULAR_REFLECTION( specular, power, globalReflection ); + APPLY_SCALING( diffuse, specular ); + + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + + result.color0 = color; + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/eyehighqualitydiffuse.decl b/bin/base/generated/decls/renderprog/eyehighqualitydiffuse.decl new file mode 100644 index 0000000..d337223 --- /dev/null +++ b/bin/base/generated/decls/renderprog/eyehighqualitydiffuse.decl @@ -0,0 +1,64 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + + #include "includes/vmtr.inc" + + half4 sampleDiffuse; + half4 sampleNormal; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + sampleDiffuse = tex2D( $spareDiffuseMap, fragment.texcoord0.xy ); + + clip( sampleDiffuse.w - 0.5 ); + + sampleNormal = tex2D( $spareBumpMap, fragment.texcoord0.xy ); + + half3 diffuse = sampleDiffuse.xyz; + + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + APPLY_SCALING_DIFFUSE( diffuse ); + + { + half primeLightFactor = saturate( dot3( $primeLightDir, globalNormal ) - 0.2 ); + half3 primeLight = $primeLightColor.xyz * primeLightFactor; + half3 channelLight = + + max( globalNormal.x * $channelLight0.xyz, 0 ) + + max( -globalNormal.x * $channelLight1.xyz, 0 ) + + max( globalNormal.y * $channelLight2.xyz, 0 ) + + max( -globalNormal.y * $channelLight3.xyz, 0 ) + + max( globalNormal.z * $channelLight4.xyz, 0 ) + + max( -globalNormal.z * $channelLight5.xyz, 0 ); + half3 light = primeLight + channelLight; + + // Maximum amount of dim-shadowing based on the pime light contribution + float acceptDimShadow = primeLightFactor * ( 1.0 - saturate( 0.5 + $primeLightMin.x ) ); + + color.xyz = light * diffuse; + color.w = acceptDimShadow; + } + + result.color0 = color; + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/eyehighqualityspecular.decl b/bin/base/generated/decls/renderprog/eyehighqualityspecular.decl new file mode 100644 index 0000000..875a63e --- /dev/null +++ b/bin/base/generated/decls/renderprog/eyehighqualityspecular.decl @@ -0,0 +1,68 @@ +{ + parms { + stageSort sortLight + } + state { + blend GL_ONE GL_ONE + depthfunc GL_LEQUAL + depthmask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleNormal; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + sampleSpecular = tex2D( $spareSpecularMap, fragment.texcoord0.xy ); + sampleNormal = tex2D( $spareBumpMap, fragment.texcoord0.xy ); + + half3 specular = sampleSpecular.xyz; + half power = 1.0; + + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + APPLY_SPECULAR_REFLECTION( specular, power, globalReflection ); + { + half3 cameraLightV = normalize( -fragment.texcoord4.xyz + half3( 0.0, 0.0, 6.5 ) ); + half cameraDot = saturate( dot3( globalNormal, cameraLightV ) ); + specular += _half3( saturate( pow( cameraDot, $eyeHighlightPowLevel.x ) * $eyeHighlightPowLevel.y ) ); + } + APPLY_SCALING_SPECULAR( specular ); + + { + half primeLightFactor = saturate( dot3( $primeLightDir, globalNormal ) - 0.2 ); + half3 primeLight = $primeLightColor.xyz * primeLightFactor; + half3 channelLight = + + max( globalNormal.x * $channelLight0.xyz, 0 ) + + max( -globalNormal.x * $channelLight1.xyz, 0 ) + + max( globalNormal.y * $channelLight2.xyz, 0 ) + + max( -globalNormal.y * $channelLight3.xyz, 0 ) + + max( globalNormal.z * $channelLight4.xyz, 0 ) + + max( -globalNormal.z * $channelLight5.xyz, 0 ); + half3 light = primeLight + channelLight; + + color.xyz = light * specular; + color.w = 0.0; + } + + result.color = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/eyelowquality.decl b/bin/base/generated/decls/renderprog/eyelowquality.decl new file mode 100644 index 0000000..22ed502 --- /dev/null +++ b/bin/base/generated/decls/renderprog/eyelowquality.decl @@ -0,0 +1,55 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleDiffuse; + half4 sampleSpecular; + half4 sampleNormal; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + sampleDiffuse = tex2D( $spareDiffuseMap, fragment.texcoord0.xy ); + sampleSpecular = tex2D( $spareSpecularMap, fragment.texcoord0.xy ); + sampleNormal = tex2D( $spareBumpMap, fragment.texcoord0.xy ); + + half3 diffuse = sampleDiffuse.xyz; + half3 specular = sampleSpecular.xyz; + half power = 1.0; + + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + APPLY_SPECULAR_REFLECTION( specular, power, globalReflection ); + { + half3 cameraLightV = normalize( -fragment.texcoord4.xyz + half3( 0.0, 0.0, 6.5 ) ); + half cameraDot = saturate( dot3( globalNormal, cameraLightV ) ); + specular += _half3( saturate( pow( cameraDot, $eyeHighlightPowLevel.x ) * $eyeHighlightPowLevel.y ) ); + } + APPLY_SCALING( diffuse, specular ); + + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + + result.color0 = color; + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/fadingdecaladdtwosidedexp.decl b/bin/base/generated/decls/renderprog/fadingdecaladdtwosidedexp.decl new file mode 100644 index 0000000..76ca862 --- /dev/null +++ b/bin/base/generated/decls/renderprog/fadingdecaladdtwosidedexp.decl @@ -0,0 +1,33 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + depthFunc GL_LEQUAL + depthmask + polygonOffset + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + + result.color.xyz = saturate( swizzleColor( vertex.color ).xyz + _float3( 0.75 ) ); + result.color.xyz *= $exposure.xyz; + result.color.w = $color.w; + } + hlsl_fp { + half2 tc = ComputeTransAtlasCoord( fragment.texcoord0.xy, $transAtlasScaleBias ); + // Blend in edge fading and shadow contribution from vertex color + result.color = tex2D( $transMap, tc ) * fragment.color; + // FIXME: smoke system additive fading not currently set up properly + //result.color *= fragment.color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/feedbackdownsample.decl b/bin/base/generated/decls/renderprog/feedbackdownsample.decl new file mode 100644 index 0000000..bd276a1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/feedbackdownsample.decl @@ -0,0 +1,16 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + float2 texcoord = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + result.hcolor = h4tex2D( $viewColorMap, texcoord.xy ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/feedbackresolve.decl b/bin/base/generated/decls/renderprog/feedbackresolve.decl new file mode 100644 index 0000000..bf7df15 --- /dev/null +++ b/bin/base/generated/decls/renderprog/feedbackresolve.decl @@ -0,0 +1,25 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; +#if defined( PC ) && !defined( PC_D3D ) + result.texcoord0 = vertex.texcoord0.xyxy; +#endif + } + hlsl_fp { +#if defined( PC ) && !defined( PC_D3D ) + // texelFetch requires unnormalized texcoords + float2 texcoord = fragment.texcoord0.xy * float2( 1.0 / $positionToViewTexture.z, 1.0 / $positionToViewTexture.w ); + ivec2 texcoordi = ivec2( texcoord.x, texcoord.y ); + result.hcolor = texelFetch( $feedbackColorMap, texcoordi.xy, 0 ); +#else + result.hcolor = _half4( 0.0 ); +#endif + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/flarenodraw.decl b/bin/base/generated/decls/renderprog/flarenodraw.decl new file mode 100644 index 0000000..a269b9b --- /dev/null +++ b/bin/base/generated/decls/renderprog/flarenodraw.decl @@ -0,0 +1,15 @@ +{ + parms { + stageSort sortDecal + } + state { + depthmask + } + hlsl_vp { + result.position = _float4( 0.0 ); + } + hlsl_fp { + clip( -1 ); + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/flatshadereal.decl b/bin/base/generated/decls/renderprog/flatshadereal.decl new file mode 100644 index 0000000..1ac3a13 --- /dev/null +++ b/bin/base/generated/decls/renderprog/flatshadereal.decl @@ -0,0 +1,28 @@ +{ + parms { + stageSort sortCoverage + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + } + hlsl_fp { + // calculations in eye space + float3 pos; + pos.z = 1.0 / fragment.position.w; + pos.xy = pos.z * ( 2.0 * screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ) - 1.0 ); + float3 normal = -normalize( cross( ddx( pos ), ddy( pos ) ) ); + + // light is above and to the right in the eye plane + float3 L = normalize( float3( 1.0, 1.0, 0.0 ) - pos ); + + result.color0.xyz = _float3( dot3( normal, L ) * 0.75 ); + result.color0.w = 1.0; + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/fontbiasandgamma.decl b/bin/base/generated/decls/renderprog/fontbiasandgamma.decl new file mode 100644 index 0000000..440000f --- /dev/null +++ b/bin/base/generated/decls/renderprog/fontbiasandgamma.decl @@ -0,0 +1,37 @@ +{ + parms { + stageSort sortTrans + } + state { + blend SRC_ALPHA ONE_MINUS_SRC_ALPHA + depthmask + depthfunc GL_ALWAYS + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0, 0 ); + result.color = swizzleColor( vertex.color ); + } + hlsl_fp { + float2 upper = fragment.texcoord0.xy; + float2 delta; + delta.x = ddx( upper ).x * 0.25f; + delta.y = ddy( upper ).y * 0.25f; + + float4 color = 0.25 * ( + tex2Dbias( $transMap, float4( upper.x-delta.x, upper.y-delta.y, 0, -1 ) ) + + tex2Dbias( $transMap, float4( upper.x-delta.x, upper.y+delta.y, 0, -1 ) ) + + tex2Dbias( $transMap, float4( upper.x+delta.x, upper.y+delta.y, 0, -1 ) ) + + tex2Dbias( $transMap, float4( upper.x+delta.x, upper.y-delta.y, 0, -1 ) ) ); + + // gamma correct the anti-aliasing +// color.w = pow( color.w, 1.0 / 2.2 ); + + result.color = fragment.color; + result.color.w = color.w * fragment.color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/gauss15.decl b/bin/base/generated/decls/renderprog/gauss15.decl new file mode 100644 index 0000000..e238b67 --- /dev/null +++ b/bin/base/generated/decls/renderprog/gauss15.decl @@ -0,0 +1,49 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // writes result.hcolor as the result of a smeared bloom + // glareStep will be { 1, 0 } or { 0, 1 } for horizontal / vertical separation + + // gaussian 3 std dev + half bloom0 = 0.134598; + half bloom1 = 0.127325; + half bloom2 = 0.107778; + half bloom3 = 0.081638; + half bloom4 = 0.055335; + half bloom5 = 0.033562; + half bloom6 = 0.018216; + half bloom7 = 0.008847; + + // convert from 0,1,2,3,... coordinates to 0.0 - 1.0 + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + float2 step = $glareStep.xy * $positionToViewTexture.zw; + float2 dir = step; + + half4 total; + total = h4tex2D( $glareMap, tc ) * bloom0; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom1; + dir += step; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom2; + dir += step; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom3; + dir += step; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom4; + dir += step; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom5; + dir += step; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom6; + dir += step; + total += ( h4tex2D( $glareMap, tc + dir ) + h4tex2D( $glareMap, tc - dir ) ) * bloom7; + + result.hcolor = total * 2.0; // hack for range? + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/glarescale.decl b/bin/base/generated/decls/renderprog/glarescale.decl new file mode 100644 index 0000000..843989b --- /dev/null +++ b/bin/base/generated/decls/renderprog/glarescale.decl @@ -0,0 +1,35 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // convert from 0,1,2,3,... coordinates to 0.0 - 1.0 + float2 texcoord = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + + half4 glareTex = h4tex2D( $glareMap, texcoord.xy ); + + // scale for general glare brightness + glareTex *= $glareScale.x; + + // color normalize and get magnitude + glareTex.w = max( glareTex.x, glareTex.y ); + glareTex.w = max( glareTex.w, glareTex.z ); + + // don't divide by zero + glareTex.w = max( glareTex.w, 0.0001 ); + glareTex.xyz = glareTex.xyz / glareTex.w; + + // color clamp + glareTex.w = min( glareTex.w, $glareMax.x ); + + result.hcolor = glareTex * glareTex.w; + result.hcolor.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/globalfog.decl b/bin/base/generated/decls/renderprog/globalfog.decl new file mode 100644 index 0000000..2b6b541 --- /dev/null +++ b/bin/base/generated/decls/renderprog/globalfog.decl @@ -0,0 +1,38 @@ +{ + parms { + } + state { + blend GL_ONE_MINUS_SRC_ALPHA GL_SRC_ALPHA + depthfunc GL_ALWAYS + depthmask + alphamask + twosided + } + hlsl_vp { + result.position = vertex.position; + result.texcoord0 = vertex.texcoord0.xyxy; +#if defined( PS3 ) || defined( XBOX ) + result.texcoord0.y = 1.0 - vertex.texcoord0.y; +#endif + } + hlsl_fp { + float2 texcoord = fragment.texcoord0.xy; + + // Note that the sky box does not draw depth and we rely on reading + // a depth value of >= 1.0 such that no fog is applied to the sky. +#if defined( XBOX ) + float ndcZ = tex2Ddepth_fast( $viewDepthMap, texcoord.xy ); +#elif defined( PS3 ) + // add a tiny value to make sure we get a depth value of 1.0 at infinity + float ndcZ = tex2Ddepth_fast( $viewDepthMap, texcoord.xy ) * 2.0 - 1.0 + ( 2.0 / 16777216.0 ); +#else + float ndcZ = tex2Ddepth_fast( $viewDepthMap, texcoord.xy ) * 2.0 - 1.0; +#endif + float viewZ = ndcZ * $projectionMatrixZ.w / ( ndcZ + $projectionMatrixZ.z ); + const float fogDepth = clamp( viewZ - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x; + const float fog = saturate( exp2( -fogDepth ) ); + + result.color.xyz = $fogColor.xyz; + result.color.w = fog; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/guiblend.decl b/bin/base/generated/decls/renderprog/guiblend.decl new file mode 100644 index 0000000..9ac7732 --- /dev/null +++ b/bin/base/generated/decls/renderprog/guiblend.decl @@ -0,0 +1,28 @@ +{ + parms { + stageSort sortTrans + } + state { + depthmask + depthfunc GL_ALWAYS + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0.0, 0.0 ); + result.color = swizzleColor( vertex.color ); + result.texcoord1 = swizzleColor( vertex.tangent ) * _float4( 2.0 ) - _float4( 1.0 ); + } + hlsl_fp { + // black level adjustment + float scale = 1.0 - $cbBlackLevel.x; + float bias = $cbBlackLevel.x; + + float4 c = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color + fragment.texcoord1; + result.color.xyz = saturate( c.xyz * scale + bias ) * c.w; + result.color.w = c.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/guiblend_coacgy_premulalpha.decl b/bin/base/generated/decls/renderprog/guiblend_coacgy_premulalpha.decl new file mode 100644 index 0000000..30f235d --- /dev/null +++ b/bin/base/generated/decls/renderprog/guiblend_coacgy_premulalpha.decl @@ -0,0 +1,46 @@ +{ + parms { + stageSort sortTrans + } + state { + depthmask + depthfunc GL_ALWAYS + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0, 0 ); + result.color = swizzleColor( vertex.color ); + result.texcoord1 = swizzleColor( vertex.tangent ) * _float4( 2.0 ) - _float4( 1.0 ); + } + hlsl_fp { + half4 CoYCgA = tex2D( $transMap, fragment.texcoord0.xy ); + + // convert to RGBA + + // The 0 value for Co and Cg will be at DXT value 16 in the 0 - 31 + // range of 5 bits, which will be expanded to 10000100b in 32 bit + // color, or 132/255.0 in floating point. + CoYCgA.xz -= 132.0 / 255.0; + half4 rgba; + rgba.x = CoYCgA.w + CoYCgA.x - CoYCgA.z; + rgba.y = CoYCgA.w + CoYCgA.z; + rgba.z = CoYCgA.w - CoYCgA.x - CoYCgA.z; + rgba.w = CoYCgA.y; + + // black level adjustment + float scale = 1.0 - $cbBlackLevel.x; + float bias = $cbBlackLevel.x; + + // now that we are back in RGB space, apply the vertex color + rgba *= fragment.color; + rgba += fragment.texcoord1; + + // use fragment.color.w instead if rgba.w so we don't apply the premultipled alpha twice. + result.color.xyz = saturate( rgba.xyz * scale + bias ) * fragment.color.w; + result.color.w = rgba.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/guicopy.decl b/bin/base/generated/decls/renderprog/guicopy.decl new file mode 100644 index 0000000..3d5f6eb --- /dev/null +++ b/bin/base/generated/decls/renderprog/guicopy.decl @@ -0,0 +1,29 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ZERO + depthmask + depthfunc GL_ALWAYS + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + } + hlsl_fp { + // black level adjustment + float scale = 1.0 - $cbBlackLevel.x; + float bias = $cbBlackLevel.x; + + half4 color = tex2D( $transMap, fragment.texcoord0.xy ); + result.color.xyz = saturate( color.xyz * scale + bias ); + result.color.w = 0.5; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/guistencildecr.decl b/bin/base/generated/decls/renderprog/guistencildecr.decl new file mode 100644 index 0000000..e73b2c3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/guistencildecr.decl @@ -0,0 +1,22 @@ +{ + parms { + stageSort sortTrans + } + state { + colormask + alphamask + depthmask + depthfunc GL_ALWAYS + stencilOp keep decr decr + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/guistencilincr.decl b/bin/base/generated/decls/renderprog/guistencilincr.decl new file mode 100644 index 0000000..fdc3896 --- /dev/null +++ b/bin/base/generated/decls/renderprog/guistencilincr.decl @@ -0,0 +1,22 @@ +{ + parms { + stageSort sortTrans + } + state { + colormask + alphamask + depthmask + depthfunc GL_ALWAYS + stencilOp keep incr incr + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasic.decl b/bin/base/generated/decls/renderprog/interbasic.decl new file mode 100644 index 0000000..dc34f8d --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasic.decl @@ -0,0 +1,26 @@ +{ + interaction // load the _point / _parallel / _spot version + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #define NOSHADOW + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/interaction.inc" + + float shadow = 1.0; + INTERACTION_FRAGMENT_BASIC( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasic_parallel.decl b/bin/base/generated/decls/renderprog/interbasic_parallel.decl new file mode 100644 index 0000000..5176a69 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasic_parallel.decl @@ -0,0 +1,28 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + registerCount360 48 + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + INTERACTION_FRAGMENT_BASIC( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasic_point.decl b/bin/base/generated/decls/renderprog/interbasic_point.decl new file mode 100644 index 0000000..e9201cb --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasic_point.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_BASIC( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasic_spot.decl b/bin/base/generated/decls/renderprog/interbasic_spot.decl new file mode 100644 index 0000000..9511463 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasic_spot.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_BASIC( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasicnovmtr.decl b/bin/base/generated/decls/renderprog/interbasicnovmtr.decl new file mode 100644 index 0000000..a22fbc1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasicnovmtr.decl @@ -0,0 +1,30 @@ +{ + interaction // load the _point / _parallel / _spot version + + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #define NOSHADOW + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/interaction.inc" + + float shadow = 1.0; + INTERACTION_FRAGMENT_BASIC_NOVMTR( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasicnovmtr_parallel.decl b/bin/base/generated/decls/renderprog/interbasicnovmtr_parallel.decl new file mode 100644 index 0000000..1a4a25d --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasicnovmtr_parallel.decl @@ -0,0 +1,31 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + registerCount360 48 + } + + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + INTERACTION_FRAGMENT_BASIC_NOVMTR( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasicnovmtr_point.decl b/bin/base/generated/decls/renderprog/interbasicnovmtr_point.decl new file mode 100644 index 0000000..57b0b63 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasicnovmtr_point.decl @@ -0,0 +1,30 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_BASIC_NOVMTR( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interbasicnovmtr_spot.decl b/bin/base/generated/decls/renderprog/interbasicnovmtr_spot.decl new file mode 100644 index 0000000..b45153e --- /dev/null +++ b/bin/base/generated/decls/renderprog/interbasicnovmtr_spot.decl @@ -0,0 +1,30 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_BASIC_NOVMTR( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intereye.decl b/bin/base/generated/decls/renderprog/intereye.decl new file mode 100644 index 0000000..d468990 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intereye.decl @@ -0,0 +1,26 @@ +{ + interaction // load the _point / _parallel / _spot version + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #define NOSHADOW + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/interaction.inc" + + float shadow = 1.0; + INTERACTION_FRAGMENT_EYE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intereye_parallel.decl b/bin/base/generated/decls/renderprog/intereye_parallel.decl new file mode 100644 index 0000000..299a755 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intereye_parallel.decl @@ -0,0 +1,28 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + registerCount360 48 + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + INTERACTION_FRAGMENT_EYE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intereye_point.decl b/bin/base/generated/decls/renderprog/intereye_point.decl new file mode 100644 index 0000000..e68d618 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intereye_point.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_EYE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intereye_spot.decl b/bin/base/generated/decls/renderprog/intereye_spot.decl new file mode 100644 index 0000000..b41514f --- /dev/null +++ b/bin/base/generated/decls/renderprog/intereye_spot.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_EYE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intergrazing.decl b/bin/base/generated/decls/renderprog/intergrazing.decl new file mode 100644 index 0000000..6853331 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intergrazing.decl @@ -0,0 +1,26 @@ +{ + interaction // load the _point / _parallel / _spot version + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #define NOSHADOW + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/interaction.inc" + + float shadow = 1.0; + INTERACTION_FRAGMENT_GRAZING( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intergrazing_parallel.decl b/bin/base/generated/decls/renderprog/intergrazing_parallel.decl new file mode 100644 index 0000000..ada5186 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intergrazing_parallel.decl @@ -0,0 +1,28 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + registerCount360 48 + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + INTERACTION_FRAGMENT_GRAZING( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intergrazing_point.decl b/bin/base/generated/decls/renderprog/intergrazing_point.decl new file mode 100644 index 0000000..f2d1312 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intergrazing_point.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_GRAZING( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intergrazing_spot.decl b/bin/base/generated/decls/renderprog/intergrazing_spot.decl new file mode 100644 index 0000000..49ebd56 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intergrazing_spot.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_GRAZING( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskin.decl b/bin/base/generated/decls/renderprog/interskin.decl new file mode 100644 index 0000000..fe2e9ae --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskin.decl @@ -0,0 +1,30 @@ +{ + interaction // load the _point / _parallel / _spot / _invisible version + + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #define NOSHADOW + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/interaction.inc" + + float shadow = 1.0; + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskin_parallel.decl b/bin/base/generated/decls/renderprog/interskin_parallel.decl new file mode 100644 index 0000000..00d3f88 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskin_parallel.decl @@ -0,0 +1,38 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #ifndef PC + #define NOSHADOW + #endif + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/interaction.inc" + #ifdef PC + #include "includes/shadow.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + #else + float shadow = 1.0; + #endif + + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskin_point.decl b/bin/base/generated/decls/renderprog/interskin_point.decl new file mode 100644 index 0000000..07aaa48 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskin_point.decl @@ -0,0 +1,38 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #ifndef PC + #define NOSHADOW + #endif + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/interaction.inc" + #ifdef PC + #include "includes/shadow.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + #else + float shadow = 1.0; + #endif + + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskin_spot.decl b/bin/base/generated/decls/renderprog/interskin_spot.decl new file mode 100644 index 0000000..72424dd --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskin_spot.decl @@ -0,0 +1,38 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + + hlsl_vp { + #ifndef PC + #define NOSHADOW + #endif + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + + hlsl_fp { + #include "includes/interaction.inc" + #ifdef PC + #include "includes/shadow.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + #else + float shadow = 1.0; + #endif + + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskinwrinkle.decl b/bin/base/generated/decls/renderprog/interskinwrinkle.decl new file mode 100644 index 0000000..dcef064 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskinwrinkle.decl @@ -0,0 +1,11 @@ +{ + inherit interSkin + hlsl_fp { + #include "includes/interaction.inc" + #include "includes/wrinklemap.inc" + + #define INTERWRINKLE + float shadow = 1.0; + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskinwrinkle_parallel.decl b/bin/base/generated/decls/renderprog/interskinwrinkle_parallel.decl new file mode 100644 index 0000000..a0e3989 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskinwrinkle_parallel.decl @@ -0,0 +1,21 @@ +{ + inherit interSkin_parallel + hlsl_fp { + #include "includes/interaction.inc" + #include "includes/wrinklemap.inc" + + #define INTERWRINKLE + + #ifdef PC + #include "includes/shadow.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + #else + float shadow = 1.0; + #endif + + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskinwrinkle_point.decl b/bin/base/generated/decls/renderprog/interskinwrinkle_point.decl new file mode 100644 index 0000000..4918ec2 --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskinwrinkle_point.decl @@ -0,0 +1,20 @@ +{ + inherit interSkin_point + hlsl_fp { + #include "includes/interaction.inc" + #include "includes/wrinklemap.inc" + + #define INTERWRINKLE + + #ifdef PC + #include "includes/shadow.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + #else + float shadow = 1.0; + #endif + + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/interskinwrinkle_spot.decl b/bin/base/generated/decls/renderprog/interskinwrinkle_spot.decl new file mode 100644 index 0000000..124a96a --- /dev/null +++ b/bin/base/generated/decls/renderprog/interskinwrinkle_spot.decl @@ -0,0 +1,21 @@ +{ + inherit interSkin_spot + hlsl_fp { + #include "includes/interaction.inc" + #include "includes/wrinklemap.inc" + + #define INTERWRINKLE + + #ifdef PC + #include "includes/shadow.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + #else + float shadow = 1.0; + #endif + + INTERACTION_FRAGMENT_SKIN( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intertwoside.decl b/bin/base/generated/decls/renderprog/intertwoside.decl new file mode 100644 index 0000000..de6f00a --- /dev/null +++ b/bin/base/generated/decls/renderprog/intertwoside.decl @@ -0,0 +1,10 @@ +{ + inherit interBasic + interaction // load the _point / _parallel / _spot version + state { + twosided + depthfunc GL_EQUAL + depthMask + blend GL_ONE GL_ONE + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intertwoside_parallel.decl b/bin/base/generated/decls/renderprog/intertwoside_parallel.decl new file mode 100644 index 0000000..dd03589 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intertwoside_parallel.decl @@ -0,0 +1,9 @@ +{ + inherit interBasic_parallel + state { + twosided + depthfunc GL_EQUAL + depthMask + blend GL_ONE GL_ONE + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intertwoside_point.decl b/bin/base/generated/decls/renderprog/intertwoside_point.decl new file mode 100644 index 0000000..1cb80e1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intertwoside_point.decl @@ -0,0 +1,9 @@ +{ + inherit interBasic_point + state { + twosided + depthfunc GL_EQUAL + depthMask + blend GL_ONE GL_ONE + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/intertwoside_spot.decl b/bin/base/generated/decls/renderprog/intertwoside_spot.decl new file mode 100644 index 0000000..87786a5 --- /dev/null +++ b/bin/base/generated/decls/renderprog/intertwoside_spot.decl @@ -0,0 +1,9 @@ +{ + inherit interBasic_spot + state { + twosided + depthfunc GL_EQUAL + depthMask + blend GL_ONE GL_ONE + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/landunique.decl b/bin/base/generated/decls/renderprog/landunique.decl new file mode 100644 index 0000000..c078ac9 --- /dev/null +++ b/bin/base/generated/decls/renderprog/landunique.decl @@ -0,0 +1,35 @@ +{ + parms { + stageSort sortCoverage + newDiffuseScale exposure.x * newDiffuseScale + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot( position, $mvpMatrixX ); + result.position.y = dot( position, $mvpMatrixY ); + result.position.z = dot( position, $mvpMatrixZ ); + result.position.w = dot( position, $mvpMatrixW ); + + // texture 0 takes the base coordinates modified by stScaleBias + // for 16 bit vertex elements + result.texcoord0 = ( vertex.texcoord0.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw ).xyxy; + } + hlsl_fp { + #include "includes/unique.inc" + + result.color1 = PackFeedback( CalculateFeedback( fragment.texcoord0.xy, $virtualTextureFeedbackFloat, $physicalUniqueFilterParms ) ); + + half4 sampleYCoCg; + half4 color; + + FETCH_UNIQUE_YCOCG( sampleYCoCg ); + CALC_DIFFUSE_RGB( color, sampleYCoCg ); + + result.color0 = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/landuniquebump.decl b/bin/base/generated/decls/renderprog/landuniquebump.decl new file mode 100644 index 0000000..0b6ff1d --- /dev/null +++ b/bin/base/generated/decls/renderprog/landuniquebump.decl @@ -0,0 +1,65 @@ +{ + parms { + stageSort sortCoverage + newDiffuseScale exposure.x * newDiffuseScale + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot( position, $mvpMatrixX ); + result.position.y = dot( position, $mvpMatrixY ); + result.position.z = dot( position, $mvpMatrixZ ); + result.position.w = dot( position, $mvpMatrixW ); + + float4 normal = vertex.normal * 2.0 - 1.0; + float4 tangent = vertex.tangent * 2.0 - 1.0; + float3 bitangent = cross( normal.xyz, tangent.xyz ) * tangent.w; + + // texture 0 takes the base coordinates modified by stScaleBias + // for 16 bit vertex elements + result.texcoord0 = ( vertex.texcoord0.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw ).xyxy; + + // transform the local space vectors to world space + result.texcoord1.x = dot3( tangent, $modelMatrixX ); + result.texcoord1.y = dot3( bitangent, $modelMatrixX ); + result.texcoord1.z = dot3( normal, $modelMatrixX ); + result.texcoord1.w = 0.0; + + result.texcoord2.x = dot3( tangent, $modelMatrixY ); + result.texcoord2.y = dot3( bitangent, $modelMatrixY ); + result.texcoord2.z = dot3( normal, $modelMatrixY ); + result.texcoord2.w = 0.0; + + result.texcoord3.x = dot3( tangent, $modelMatrixZ ); + result.texcoord3.y = dot3( bitangent, $modelMatrixZ ); + result.texcoord3.z = dot3( normal, $modelMatrixZ ); + result.texcoord3.w = 0.0; + + // dir from the viewer to the vertex + result.texcoord4.x = dot4( position, $modelMatrixX ); + result.texcoord4.y = dot4( position, $modelMatrixY ); + result.texcoord4.z = dot4( position, $modelMatrixZ ); + result.texcoord4.xyz -= $globalViewOrigin.xyz; + result.texcoord4.w = 0.0; + } + hlsl_fp { + #include "includes/unique.inc" + + result.color1 = PackFeedback( CalculateFeedback( fragment.texcoord0.xy, $virtualTextureFeedbackFloat, $physicalUniqueFilterParms ) ); + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half4 color; + + FETCH_UNIQUE( sampleSpecular, sampleYCoCg, sampleNormal ); + CALC_DIFFUSE_RGB( color, sampleYCoCg ); + APPLY_SPECULAR( color, sampleSpecular, sampleNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz, fragment.htexcoord4.xyz ); + + result.color0 = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/landuniquebumptrans.decl b/bin/base/generated/decls/renderprog/landuniquebumptrans.decl new file mode 100644 index 0000000..f1862a6 --- /dev/null +++ b/bin/base/generated/decls/renderprog/landuniquebumptrans.decl @@ -0,0 +1,23 @@ +{ + inherit landUniqueBump + state { + depthfunc GL_LEQUAL + } + hlsl_fp { + #include "includes/unique.inc" + + result.color1 = PackFeedback( CalculateFeedback( fragment.texcoord0.xy, $virtualTextureFeedbackFloat, $physicalUniqueFilterParms ) ); + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half4 color; + + FETCH_UNIQUE( sampleSpecular, sampleYCoCg, sampleNormal ); + clip( sampleSpecular.w - 0.5 ); + CALC_DIFFUSE_RGB( color, sampleYCoCg ); + APPLY_SPECULAR( color, sampleSpecular, sampleNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz, fragment.htexcoord4.xyz ); + + result.color0 = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/landuniquediffuseonly.decl b/bin/base/generated/decls/renderprog/landuniquediffuseonly.decl new file mode 100644 index 0000000..231e28b --- /dev/null +++ b/bin/base/generated/decls/renderprog/landuniquediffuseonly.decl @@ -0,0 +1,35 @@ +{ + parms { + stageSort sortCoverage + newDiffuseScale exposure.x * newDiffuseScale + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot( position, $mvpMatrixX ); + result.position.y = dot( position, $mvpMatrixY ); + result.position.z = dot( position, $mvpMatrixZ ); + result.position.w = dot( position, $mvpMatrixW ); + + // texture 0 takes the base coordinates modified by stScaleBias + // for 16 bit vertex elements + result.texcoord0 = ( vertex.texcoord0.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw ).xyxy; + } + hlsl_fp { + #include "includes/unique.inc" + + result.color1 = PackFeedback( CalculateFeedback( fragment.texcoord0.xy, $virtualTextureFeedbackFloat, $physicalUniqueDiffuseOnlyFilterParms ) ); + + half4 sampleYCoCg; + half4 color; + + FETCH_DIFFUSE_ONLY( sampleYCoCg ); + CALC_DIFFUSE_RGB( color, sampleYCoCg ); + + result.color0 = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/landuniqueshowglobalshadows.decl b/bin/base/generated/decls/renderprog/landuniqueshowglobalshadows.decl new file mode 100644 index 0000000..5fa4930 --- /dev/null +++ b/bin/base/generated/decls/renderprog/landuniqueshowglobalshadows.decl @@ -0,0 +1,61 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot( position, $mvpMatrixX ); + result.position.y = dot( position, $mvpMatrixY ); + result.position.z = dot( position, $mvpMatrixZ ); + result.position.w = dot( position, $mvpMatrixW ); + } + hlsl_fp { + + // this is normalized window space, not strict openGL window space + // that uses integer viewport values. + float3 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // fetch the window space depth value + // this instruction does the 1.0 - depth calculation automatically + window.z = tex2Ddepth( $viewDepthMap, window.xy ); + +#ifndef PC + window.y = 1.0 - window.y; // image y origin adjust +#endif + + // move the window space 0.0 - 1.0 xyz to -1.0 - 1.0 + // normalized device coordinate, assumes a full depth range + float3 device = ( window.xyz * 2.0 ) - 1.0; +#ifdef XBOX + device.z = window.z; // D3D has a non-clipped Z range of 0 to W, while OpenGL/PS3 has -W to W +#endif + + float4 d; + d.xyz = device; + d.w = 1; + + float4 wclip; + wclip.x = dot4( d, $inverseMVPMatrixX ); + wclip.y = dot4( d, $inverseMVPMatrixY ); + wclip.z = dot4( d, $inverseMVPMatrixZ ); + wclip.w = dot4( d, $inverseMVPMatrixW ); + + wclip.xyzw /= wclip.w; + + // now transform to the light clip space + float4 light; + light.x = dot4( wclip, $lightProjectionS ); + light.y = dot4( wclip, $lightProjectionT ); + light.z = dot4( wclip, $lightProjectionR ); + light.w = dot4( wclip, $lightProjectionQ ); + + float shadowVal = tex2D( $globalShadows, light.xy ).x; + result.color = _float4( shadowVal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/laserbeam.decl b/bin/base/generated/decls/renderprog/laserbeam.decl new file mode 100644 index 0000000..5f5f08b --- /dev/null +++ b/bin/base/generated/decls/renderprog/laserbeam.decl @@ -0,0 +1,34 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + depthmask + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "skinning.inc" + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); + result.texcoord0.zw = _float2( 0.0 ); + + result.texcoord1.xyz = vertex.position.xyz; + } + hlsl_fp { + + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + float worldNoiseMap = tex2D( $transmap2, fragment.texcoord1.xy * 0.002 + ( $time.x * 0.025 ) + ( fragment.texcoord1.z * 0.002 ) ).x; + + float2 rampCoords = tex2D( $transMap, fragment.texcoord0.xy ).xy; + float3 finalColor = tex2D( $transMap1, rampCoords * saturate((worldNoiseMap + 0.1 )) ).xyz; + + result.color.xyz = finalColor; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/laserbeamfade.decl b/bin/base/generated/decls/renderprog/laserbeamfade.decl new file mode 100644 index 0000000..b21c9bf --- /dev/null +++ b/bin/base/generated/decls/renderprog/laserbeamfade.decl @@ -0,0 +1,29 @@ +{ + inherit laserBeam + hlsl_vp { + #include "skinning.inc" + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ) * $color.w; + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ) * $color.w; + result.texcoord0.zw = _float2( 0.0 ); + + result.color = swizzleColor( vertex.color ) * $color; + + result.texcoord1.xyz = vertex.position.xyz; + } + hlsl_fp { + + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + float worldNoiseMap = tex2D( $transmap2, fragment.texcoord1.xy * 0.002 + ( $time.x * 0.025 ) + ( fragment.texcoord1.z * 0.002 ) ).x; + + float2 rampCoords = tex2D( $transMap, fragment.texcoord0.xy ).xy; + float3 finalColor = tex2D( $transMap1, rampCoords * saturate((worldNoiseMap + 0.1 ) * fragment.color.w) ).xyz; + + result.color.xyz = finalColor; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/lasercutterbatteryadd.decl b/bin/base/generated/decls/renderprog/lasercutterbatteryadd.decl new file mode 100644 index 0000000..e7fe084 --- /dev/null +++ b/bin/base/generated/decls/renderprog/lasercutterbatteryadd.decl @@ -0,0 +1,14 @@ +{ + inherit basicBlend + parms { + stageSort sortEmit + } + state { + blend GL_ONE GL_ONE + depthmask + } + hlsl_fp { + // Diversity is used as relative battery charge + result.color = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color * $diversity; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/lasercutterincision.decl b/bin/base/generated/decls/renderprog/lasercutterincision.decl new file mode 100644 index 0000000..638d405 --- /dev/null +++ b/bin/base/generated/decls/renderprog/lasercutterincision.decl @@ -0,0 +1,52 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + depthFunc GL_ALWAYS + depthMask + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0 = vertex.texcoord0.xyxy; + result.texcoord1.xyz = vertex.position.xyz; + +#ifdef XBOX + result.texcoord2 = result.position; +#endif + result.color = swizzleColor( vertex.color ) * $color; + result.color.xyz *= $exposure.xyz; + } + hlsl_fp { +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord2.z / fragment.texcoord2.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + // sample the depth texture + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + const float depth = tex2Ddepth( $viewDepthMap, tc ); + + const float r1 = 1.0 / ( 1.0 - depth ); + const float r2 = 1.0 / ( 1.0 - interpolatedZOverW ); + const float depthDiff = abs( r1 - r2 ); + + // z-rejection + const float zReject = 0.1 - depthDiff; + clip( zReject ); + + float worldNoiseMap = tex2D( $transmap2, fragment.texcoord1.xy * 0.002 + ( $time.x * 0.025 ) + ( fragment.texcoord1.z * 0.002 ) ).x; + + float2 rampCoords = tex2D( $transMap, fragment.texcoord0.xy ).xy; + float3 finalColor = tex2D( $transMap1, rampCoords * saturate( worldNoiseMap + 0.1 ) ).xyz; + + result.color.xyz = finalColor * fragment.color.xyz; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/lensflareadditiveblend.decl b/bin/base/generated/decls/renderprog/lensflareadditiveblend.decl new file mode 100644 index 0000000..7192d6e --- /dev/null +++ b/bin/base/generated/decls/renderprog/lensflareadditiveblend.decl @@ -0,0 +1,12 @@ +{ + inherit lensFlareBlend + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE + depthmask + alphamask + depthfunc GL_ALWAYS + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/lensflareblend.decl b/bin/base/generated/decls/renderprog/lensflareblend.decl new file mode 100644 index 0000000..9391015 --- /dev/null +++ b/bin/base/generated/decls/renderprog/lensflareblend.decl @@ -0,0 +1,24 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + alphamask + depthfunc GL_ALWAYS + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0 = vertex.texcoord0.xyxy; + + result.color = swizzleColor( vertex.color ) * $color; + } + hlsl_fp { + result.color = tex2D( $transMap, fragment.texcoord0.xy ) * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/luminosity.decl b/bin/base/generated/decls/renderprog/luminosity.decl new file mode 100644 index 0000000..b9727a5 --- /dev/null +++ b/bin/base/generated/decls/renderprog/luminosity.decl @@ -0,0 +1,40 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + #include "includes/luminance.inc" + + float4 tc = float4( 0.5, -0.5, 0.0, 10.0 ); + + half3 total; + total = tex2Dlod( $viewColorMap, tc - float4( 0.5, 0.0, 0.0, 0.0 ) ).xyz; + total += tex2Dlod( $viewColorMap, tc + float4( 0.0, 0.0, 0.0, 0.0 ) ).xyz; + total += tex2Dlod( $viewColorMap, tc + float4( 0.5, 0.0, 0.0, 0.0 ) ).xyz; + tc.y += 0.5; + total += tex2Dlod( $viewColorMap, tc - float4( 0.5, 0.0, 0.0, 0.0 ) ).xyz; + total += tex2Dlod( $viewColorMap, tc + float4( 0.0, 0.0, 0.0, 0.0 ) ).xyz; + total += tex2Dlod( $viewColorMap, tc + float4( 0.5, 0.0, 0.0, 0.0 ) ).xyz; + tc.y += 0.5; + total += tex2Dlod( $viewColorMap, tc - float4( 0.5, 0.0, 0.0, 0.0 ) ).xyz; + total += tex2Dlod( $viewColorMap, tc + float4( 0.0, 0.0, 0.0, 0.0 ) ).xyz; + total += tex2Dlod( $viewColorMap, tc + float4( 0.5, 0.0, 0.0, 0.0 ) ).xyz; + + total *= ( 1.0 / 9.0 ); + + float newLuminance; + Luminance_BT601( newLuminance, total ); + float oldLuminance = tex2D( $adaptiveLuminance, float2( 0.5, 0.5 ) ).x; + + const float decay = $adaptiveGlareParms.w; + result.color.xyz = _float3( oldLuminance + ( newLuminance - oldLuminance ) * decay ); + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/modelfadeperturb.decl b/bin/base/generated/decls/renderprog/modelfadeperturb.decl new file mode 100644 index 0000000..f978290 --- /dev/null +++ b/bin/base/generated/decls/renderprog/modelfadeperturb.decl @@ -0,0 +1,45 @@ +{ + parms { + } + state { + polygonOffset + depthmask + depthfunc GL_EQUAL + blend GL_ONE_MINUS_DST_ALPHA GL_DST_ALPHA + } + hlsl_vp { + #include "skinning_normals.inc" + + float4 extrudedPos; + extrudedPos.xyz = position.xyz + ( normal.xyz * $modelFadeExtrude.x ); + extrudedPos.w = position.w; + + result.position.x = dot4( extrudedPos, $mvpMatrixX ); + result.position.y = dot4( extrudedPos, $mvpMatrixY ); + result.position.z = dot4( extrudedPos, $mvpMatrixZ ); + result.position.w = dot4( extrudedPos, $mvpMatrixW ); + +#ifdef XBOX + result.texcoord3 = result.position; +#endif + } + hlsl_fp { + +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord3.z / fragment.texcoord3.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + + // sample the depth texture + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + const float dstDepth = tex2Ddepth( $viewDepthMap, tc ); + const float srcDepth = interpolatedZOverW; + + // z-rejection + const float zReject = dstDepth - srcDepth + 0.002; + clip( zReject ); + + result.color = ComputeDistortion( _float2( 0.0 ), ( 0.5 - abs( $modelFade.x - 0.5 ) ) * 0.75 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludercloth.decl b/bin/base/generated/decls/renderprog/occludercloth.decl new file mode 100644 index 0000000..c8200cb --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludercloth.decl @@ -0,0 +1,37 @@ +{ + parms { + } + state { + colormask + alphamask + twosided + } + hlsl_vp { + float4 position = vertex.position; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + result.texcoord0.xy = vertex.texcoord0.xy; + result.texcoord0.zw = vertex.color.xy; + } + hlsl_fp { + float2 texcoord = clamp( fragment.texcoord0.xy, 0.01f, 0.99f ) * $virtualMapping.xy + $virtualMapping.zw; + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); +#else + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); +#endif + // coverMap is stored in specular.w + clip( specular.w - 0.5f - ( fragment.texcoord0.z * specular.y ) - ( fragment.texcoord0.w * specular.z ) ); + + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludercuttransunique.decl b/bin/base/generated/decls/renderprog/occludercuttransunique.decl new file mode 100644 index 0000000..5cc6390 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludercuttransunique.decl @@ -0,0 +1,34 @@ +{ + parms { + stageSort sortCoverage + depthFillFadeProgram occluderCutTransUniqueModelFade + } + state { + alphamask + colormask + twosided + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + CALC_POSITION( result.position ); + } + hlsl_fp { + float3 physCoord = UniqueVirtualToPhysical( fragment.texcoord0.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( fragment.texcoord0.xy ) * physCoord.z; + float2 dy = ddy( fragment.texcoord0.xy ) * physCoord.z; + + float4 specular = texPhys( $physicalUniquePagesMap0, physCoord.xy, dx, dy ); +#else + float4 specular = texPhys( $physicalUniquePagesMap0, physCoord.xy ); +#endif + + // coverMap is stored in specular.w + clip( specular.w - 0.5 ); + + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludercuttransuniquemodelfade.decl b/bin/base/generated/decls/renderprog/occludercuttransuniquemodelfade.decl new file mode 100644 index 0000000..e371ba4 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludercuttransuniquemodelfade.decl @@ -0,0 +1,45 @@ +{ + parms { + fadePerturbProgram = modelFadePerturb; + } + state { + alphamask + colormask + twosided + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + CALC_POSITION( result.position ); + } + hlsl_fp { + float2 screenTexcoord = fragment.position.xy * ( 1.0 / 128.0 ); + float dither = tex2D( $dither256Map, screenTexcoord ).x; + + // 1 - fully opaque - 0.8 - stippling - 0.2 - fully transparent - 0 + clip( $modelFade.x - 0.2 - dither * 0.6 ); + + float2 texcoord = fragment.texcoord0.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); +#else + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); +#endif + // coverMap is stored in specular.w + clip( specular.w - 0.5 ); + + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occluderdepthonly.decl b/bin/base/generated/decls/renderprog/occluderdepthonly.decl new file mode 100644 index 0000000..f02d244 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occluderdepthonly.decl @@ -0,0 +1,15 @@ +{ + state { + colormask + alphamask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_POSITION( result.position ); + } + hlsl_fp { + result.color0 = _float4( 0.0 ); + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occluderqueryonly.decl b/bin/base/generated/decls/renderprog/occluderqueryonly.decl new file mode 100644 index 0000000..d1f4f18 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occluderqueryonly.decl @@ -0,0 +1,17 @@ +{ + state { + colormask + alphamask + depthmask + twosided + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + result.color0 = _float4( 0.0 ); + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occluderqueryonlyflare.decl b/bin/base/generated/decls/renderprog/occluderqueryonlyflare.decl new file mode 100644 index 0000000..8f9ddc2 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occluderqueryonlyflare.decl @@ -0,0 +1,17 @@ +{ + state { + colormask + alphamask + depthmask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + result.color0 = _float4( 0.0 ); + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludershadowtransvmtr.decl b/bin/base/generated/decls/renderprog/occludershadowtransvmtr.decl new file mode 100644 index 0000000..80e3e92 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludershadowtransvmtr.decl @@ -0,0 +1,39 @@ +{ + parms { + } + state { + colormask + alphamask + twosided + } + + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + float2 texcoord = fragment.texcoord0.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( texcoord ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); +#else + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); +#endif + // coverMap is stored in specular.w + clip( specular.w - 0.5 ); + + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludershadowvmtr.decl b/bin/base/generated/decls/renderprog/occludershadowvmtr.decl new file mode 100644 index 0000000..8317619 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludershadowvmtr.decl @@ -0,0 +1,16 @@ +{ + parms { + } + state { + colormask + alphamask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludertransunique.decl b/bin/base/generated/decls/renderprog/occludertransunique.decl new file mode 100644 index 0000000..a6eeb4e --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludertransunique.decl @@ -0,0 +1,33 @@ +{ + parms { + stageSort sortCoverage + } + state { + colormask + alphamask + twosided + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + CALC_POSITION( result.position ); + } + hlsl_fp { + float3 physCoord = UniqueVirtualToPhysical( fragment.texcoord0.xy ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( fragment.texcoord0.xy ) * physCoord.z; + float2 dy = ddy( fragment.texcoord0.xy ) * physCoord.z; + + float4 specular = texPhys( $physicalUniquePagesMap0, physCoord.xy, dx, dy ); +#else + float4 specular = texPhys( $physicalUniquePagesMap0, physCoord.xy ); +#endif + + // coverMap is stored in specular.w + clip( specular.w - 0.5 ); + + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludertransvmtr.decl b/bin/base/generated/decls/renderprog/occludertransvmtr.decl new file mode 100644 index 0000000..228b9af --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludertransvmtr.decl @@ -0,0 +1,39 @@ +{ + parms { + fadePerturbProgram = modelFadePerturb; + } + state { + colormask + alphamask + twosided + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + float2 texcoord = fragment.texcoord0.xy; + BRANCH if ( $useVirtualMapping.x > 0 ) { + // this is basically only for non pre-lit levels, and shouldn't be used often. + // this doesn't attempt to get the derivative correct at the frac crossing point + texcoord = frac( fragment.texcoord0.xy ) * $virtualMapping.xy + $virtualMapping.zw; + } + + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy, dx, dy ); +#else + float4 specular = texPhys( $physicalVmtrPagesMap0, physCoord.xy ); +#endif + // coverMap is stored in specular.w + clip( specular.w - 0.5 ); + + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occluderunique.decl b/bin/base/generated/decls/renderprog/occluderunique.decl new file mode 100644 index 0000000..6645fd0 --- /dev/null +++ b/bin/base/generated/decls/renderprog/occluderunique.decl @@ -0,0 +1,17 @@ +{ + parms { + stageSort sortCoverage + } + state { + alphamask + colormask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_POSITION( result.position ); + } + hlsl_fp { + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/occludervmtr.decl b/bin/base/generated/decls/renderprog/occludervmtr.decl new file mode 100644 index 0000000..558563e --- /dev/null +++ b/bin/base/generated/decls/renderprog/occludervmtr.decl @@ -0,0 +1,17 @@ +{ + parms { + fadePerturbProgram = modelFadePerturb; + } + state { + colormask + alphamask + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_SKINNED_POSITION( result.position ); + } + hlsl_fp { + result.color = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/outside.decl b/bin/base/generated/decls/renderprog/outside.decl new file mode 100644 index 0000000..07d9619 --- /dev/null +++ b/bin/base/generated/decls/renderprog/outside.decl @@ -0,0 +1,62 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS_BLEND( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.texcoord1.w ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.texcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleNormal.x, globalNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.texcoord1, fragment.texcoord2, fragment.texcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/outsidenovmtr.decl b/bin/base/generated/decls/renderprog/outsidenovmtr.decl new file mode 100644 index 0000000..cafc9f5 --- /dev/null +++ b/bin/base/generated/decls/renderprog/outsidenovmtr.decl @@ -0,0 +1,156 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + depthmask +#ifdef PS3 + alphamask // the ps3 does not make a copy of the alpha buffer +#endif + } + hlsl_vp { + #include "skinning_normals.inc" + + // vertex position + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + // texture 0 takes the base and offseted coordinates + result.texcoord0.x = dot4( texcoord0, $sMatrix ); + result.texcoord0.y = dot4( texcoord0, $tMatrix ); + result.texcoord0.z = dot4( texcoord0, $rMatrix ); + result.texcoord0.w = dot4( texcoord0, $qMatrix ); + + // transform the local space vectors to world space + result.texcoord1.x = dot3( tangent, $modelMatrixX ); + result.texcoord1.y = dot3( bitangent, $modelMatrixX ); + result.texcoord1.z = dot3( normal, $modelMatrixX ); + result.texcoord1.w = morphScale; + + result.texcoord2.x = dot3( tangent, $modelMatrixY ); + result.texcoord2.y = dot3( bitangent, $modelMatrixY ); + result.texcoord2.z = dot3( normal, $modelMatrixY ); + result.texcoord2.w = 0.0; + + result.texcoord3.x = dot3( tangent, $modelMatrixZ ); + result.texcoord3.y = dot3( bitangent, $modelMatrixZ ); + result.texcoord3.z = dot3( normal, $modelMatrixZ ); + result.texcoord3.w = 0.0; + + // texture 4 takes the dir to the viewer and the fog value + result.texcoord4.x = dot4( position, $modelMatrixX ); + result.texcoord4.y = dot4( position, $modelMatrixY ); + result.texcoord4.z = dot4( position, $modelMatrixZ ); + result.texcoord4.xyz -= $globalViewOrigin.xyz; + result.texcoord4.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + } + hlsl_fp { + float2 texcoord = fragment.texcoord0.xy; + + float4 diffuse = tex2D( $spare1Map, texcoord ); + float4 specular = tex2D( $spareSpecularMap, texcoord ); + float4 bump = tex2D( $spareBumpMap, texcoord ); + + // blend in another texture based on the morph map + BRANCH if ( $useSkinBlending.x > 0.0 ) { // fragment.htexcoord1.w > 0.0 + float4 diffuse2 = tex2D( $spare2Map, texcoord ); + float4 specular2 = tex2D( $spareSpecularMap2, texcoord ); + float4 bump2 = tex2D( $spareBumpMap2, texcoord ); + + float morphScale = fragment.htexcoord1.w; + diffuse = lerp( diffuse, diffuse2, morphScale ); + specular = lerp( specular, specular2, morphScale ); + bump = lerp( bump, bump2, morphScale ); + } + + //--------- environment mapping ---------- + + // Note that the optimized derivation of the localNormal below results in a vector that is half-unit length! + half3 localNormal = bump.wyz - 0.5; + localNormal.z = sqrt( abs( dot( localNormal.xy, localNormal.xy ) - 0.25 ) ); + + // transform into global space + half3 globalNormal; + globalNormal.x = dot3( localNormal, fragment.htexcoord1.xyz ); + globalNormal.y = dot3( localNormal, fragment.htexcoord2.xyz ); + globalNormal.z = dot3( localNormal, fragment.htexcoord3.xyz ); + globalNormal = normalize( globalNormal ); + + // normalize the direction from the viewer + half3 fromViewer = normalize( fragment.htexcoord4.xyz ); + + // reflection vector + half4 reflection; + reflection.xyz = fromViewer - ( globalNormal * dot3( fromViewer, globalNormal ) * 2.0 ); + + // power factor is stored in bumpPage.x as 0.0 - 1.0, we want a 0 | 1 | 2 | 3 mip value + // we could probably skip the floor, but I am wary of hardware / api rounding + // the artists really prefer white to be shiny instead of dull, so invert it here + // reflection.w = floor( ( 1.0 - powerFactor ) * 4.0 + $newPowerScale.x ); + reflection.w = 0.0; + + half3 envColor = texCUBElod( $dynamicEnvMap, reflection ).xyz; + + //--------- read the dimshadow factor ---------- + + // this is normalized window space, not strict openGL window space + // that uses integer viewport values. + float4 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + window.z = 0.0; + window.w = 0.0; // blur factor + + float shadow = tex2Dlod( $viewColorMap, window ).w; // from alpha channel + + // only use half the dimshadow value, since we can't separate the + // contribution along the shadow from the remainder + shadow = saturate( shadow + $primeLightMin.x ); + + //--------------------------------------------------------------- + // calculate direct lighting, applying the shadow factor to the first + // light, which should be in the same direction as the dimshadow projection. + //--------------------------------------------------------------- + float3 primeLight = shadow * $primeLightColor.xyz * + saturate( dot3( $primeLightDir, globalNormal ) - 0.2 ); + float3 light = primeLight + + max( globalNormal.x * $channelLight0.xyz, 0 ) + + max( -globalNormal.x * $channelLight1.xyz, 0 ) + + max( globalNormal.y * $channelLight2.xyz, 0 ) + + max( -globalNormal.y * $channelLight3.xyz, 0 ) + + max( globalNormal.z * $channelLight4.xyz, 0 ) + + max( -globalNormal.z * $channelLight5.xyz, 0 ); + + //--------------------------------------------------------------- + // calculate the view grazing fraction + //--------------------------------------------------------------- + half graze = saturate( dot3( -fromViewer, globalNormal ) ); + graze = saturate( ( $viewGraze.x - max( graze, -graze ) ) / max( $viewGraze.x, 0.0001 ) ); + diffuse.xyz = lerp( diffuse.xyz, $grazingDiffuseColor.xyz, graze ); + specular.xyz = lerp( specular.xyz, $grazingSpecularColor.xyz, graze ); + + //--------------------------------------------------------------- + // sum everything up + //--------------------------------------------------------------- + + // automatically scale diffuseScale by 2.0 to match the baked-in behavior + + // only have specular with primeLight to avoid shiny ambient guys + half3 color = light * ( envColor * specular.xyz * $newSpecularScale.xyz ) + + light * ( diffuse.xyz * $newDiffuseScale.xyz * 2.0 ); + + // calculate fog term + half fog = saturate( exp2( fragment.htexcoord4.w ) ); + + // lerp towards the fog color by the fog factor + result.color.xyz = lerp( $fogColor.xyz, color.xyz, fog ); +#ifndef PS3 + result.color.w = specular.w; +#endif + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/outsidetrans.decl b/bin/base/generated/decls/renderprog/outsidetrans.decl new file mode 100644 index 0000000..82b8963 --- /dev/null +++ b/bin/base/generated/decls/renderprog/outsidetrans.decl @@ -0,0 +1,53 @@ +{ + inherit outside + parms { + stageSort sortCoverage+1 + } + state { + depthfunc GL_LEQUAL + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.texcoord1.w ); + clip( sampleSpecular.w - 0.5 ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.texcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleNormal.x, globalNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.texcoord1, fragment.texcoord2, fragment.texcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/outsidetwosided.decl b/bin/base/generated/decls/renderprog/outsidetwosided.decl new file mode 100644 index 0000000..1224af7 --- /dev/null +++ b/bin/base/generated/decls/renderprog/outsidetwosided.decl @@ -0,0 +1,54 @@ +{ + inherit outside + parms { + stageSort sortCoverage+1 + } + state { + depthfunc GL_LEQUAL + twosided + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.texcoord1.w ); + clip( sampleSpecular.w - 0.5 ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.texcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.texcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleNormal.x, globalNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.texcoord1, fragment.texcoord2, fragment.texcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/overlappeddownsample.decl b/bin/base/generated/decls/renderprog/overlappeddownsample.decl new file mode 100644 index 0000000..0b50b51 --- /dev/null +++ b/bin/base/generated/decls/renderprog/overlappeddownsample.decl @@ -0,0 +1,30 @@ +{ + parms { + } + state { + depthmask + depthfunc GL_ALWAYS + twosided + registerCountPS3 32 + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // On the PC, fragment.position.xy will always have a 0.5, + // like 0.5, 1.5, 2.5 ... 1279.5 + // On the 360, it will always be an integer. + + float2 texcoord = screenPosToTexcoord( fragment.position.xy - 0.5, $positionToViewTexture ); + float2 translate = $positionToViewTexture.zw; + + half4 total = h4tex2D( $viewColorMap, texcoord.xy ); + texcoord.x += translate.x; + total += h4tex2D( $viewColorMap, texcoord.xy ); + texcoord.y += translate.y; + total += h4tex2D( $viewColorMap, texcoord.xy ); + texcoord.x -= translate.x; + total += h4tex2D( $viewColorMap, texcoord.xy ); + result.hcolor = total * 0.25; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleadd.decl b/bin/base/generated/decls/renderprog/particleadd.decl new file mode 100644 index 0000000..cc94f3d --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleadd.decl @@ -0,0 +1,21 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + depthmask + } + hlsl_vp { + #include "particle_vp.inc" + result.color = vertColor * $exposure * fade * $color; + } + hlsl_fp { + #include "particle_fp.inc" + + // additive, so the global fog is just a modulate instead of a blend + color.xyz *= fogVal; + + result.color = color * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleaddalt.decl b/bin/base/generated/decls/renderprog/particleaddalt.decl new file mode 100644 index 0000000..5039186 --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleaddalt.decl @@ -0,0 +1,12 @@ +{ + inherit particleAdd + hlsl_fp { + #define PARTICLE_FP_ALT + #include "particle_fp.inc" + + // additive, so the global fog is just a modulate instead of a blend + color.xyz *= fogVal; + + result.color = color * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleaddaltemissive.decl b/bin/base/generated/decls/renderprog/particleaddaltemissive.decl new file mode 100644 index 0000000..2f25c48 --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleaddaltemissive.decl @@ -0,0 +1,22 @@ +{ + inherit particleAddAlt + parms { + stageSort sortEmitOnly + exposure exposure * glarePreScale + } + state { + blend GL_ONE GL_ONE + depthmask + } + + hlsl_fp { + #define PARTICLE_FP_ALT + #include "particle_fp.inc" + + // additive, so the fog is just a modulate instead of a blend + color.xyz *= fogVal; + + result.color.xyz = ( color.xyz * fragment.color.xyz ) * fragment.color.w; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleaddemissive.decl b/bin/base/generated/decls/renderprog/particleaddemissive.decl new file mode 100644 index 0000000..cceee52 --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleaddemissive.decl @@ -0,0 +1,12 @@ +{ + inherit particleAdd + parms { + stageSort sortEmitOnly + exposure exposure * glarePreScale + } + state { + blend GL_ONE GL_ONE + twosided + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleaddfirstpersonlaserbeam.decl b/bin/base/generated/decls/renderprog/particleaddfirstpersonlaserbeam.decl new file mode 100644 index 0000000..721e00c --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleaddfirstpersonlaserbeam.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + depthmask + depthfunc GL_LEQUAL + } + hlsl_vp { + #define VP_SINGLETEXCOORD + #include "particle_vp.inc" + result.color = vertColor * $exposure * fade * $color; + } + hlsl_fp { + + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + float noiseMap = tex2D( $transmap2, ( tc * $sMatrix.xy) + $tMatrix.xy ).x; + + float2 rampCoords = tex2D( $transMap, fragment.texcoord0.xy ).xy; + float3 finalColor = tex2D( $transMap1, rampCoords * saturate( noiseMap * 0.98 + 0.03 ) ).xyz; + + result.color.xyz = finalColor * fragment.color.xyz; + result.color.w = 1.0; + + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleaddtwosided.decl b/bin/base/generated/decls/renderprog/particleaddtwosided.decl new file mode 100644 index 0000000..b83835a --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleaddtwosided.decl @@ -0,0 +1,11 @@ +{ + inherit particleAdd + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ONE + twosided + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleblend.decl b/bin/base/generated/decls/renderprog/particleblend.decl new file mode 100644 index 0000000..f8132be --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleblend.decl @@ -0,0 +1,24 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + } + hlsl_vp { + #include "particle_vp.inc" + result.color = vertColor * $exposure; + result.color.w *= fade; + } + hlsl_fp { + #include "particle_fp.inc" + + color *= fragment.color; + + // apply global fog + color.xyz = lerp( $fogColor.xyz, color.xyz, fogVal ); + + result.color = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleblendnoalphaexposure.decl b/bin/base/generated/decls/renderprog/particleblendnoalphaexposure.decl new file mode 100644 index 0000000..0092351 --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleblendnoalphaexposure.decl @@ -0,0 +1,8 @@ +{ + inherit ParticleBlend + hlsl_vp { + #include "particle_vp.inc" + result.color.xyz = vertColor.xyz * $exposure.xyz; + result.color.w = vertColor.w * fade; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleblendnofog.decl b/bin/base/generated/decls/renderprog/particleblendnofog.decl new file mode 100644 index 0000000..9edeeb4 --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleblendnofog.decl @@ -0,0 +1,7 @@ +{ + inherit particleBlend + hlsl_fp { + #include "particle_fp.inc" + result.color = color * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleblendtwosided.decl b/bin/base/generated/decls/renderprog/particleblendtwosided.decl new file mode 100644 index 0000000..bf93e06 --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleblendtwosided.decl @@ -0,0 +1,11 @@ +{ + inherit particleBlend + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + twosided + depthmask + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particledistortion.decl b/bin/base/generated/decls/renderprog/particledistortion.decl new file mode 100644 index 0000000..1a119be --- /dev/null +++ b/bin/base/generated/decls/renderprog/particledistortion.decl @@ -0,0 +1,82 @@ +{ + parms { + stageSort sortPerturber + } + state { + depthMask + depthfunc GL_ALWAYS + blend GL_ONE_MINUS_DST_ALPHA GL_DST_ALPHA + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + float4 worldPosition; + worldPosition.x = dot4( vertex.position, $modelMatrixX ); + worldPosition.y = dot4( vertex.position, $modelMatrixY ); + worldPosition.z = dot4( vertex.position, $modelMatrixZ ); + worldPosition.w = dot4( vertex.position, $modelMatrixW ); + + float eyeDistance = abs( dot4( worldPosition, $viewMatrixZ ) ); + float nearFade = saturate( ( eyeDistance - $distortionFade.x ) / ( $distortionFade.y - $distortionFade.x ) ); + float farFade = saturate( ( eyeDistance - $distortionFade.z ) / ( $distortionFade.w - $distortionFade.z ) ); + float fade = nearFade * ( 1.0 - farFade ); + + // Convert back from 16 bit vertex elements. + float4 tc = vertex.texcoord0.xyxy * $particleStScaleBias.x + $particleStScaleBias.y; + + result.texcoord0.xy = tc.xy; + result.texcoord0.z = fade; + result.texcoord0.w = 0.0; + + result.texcoord1.x = dot4( tc, $sMatrix ); + result.texcoord1.y = dot4( tc, $tMatrix ); +#ifdef XBOX + result.texcoord1.zw = result.position.zw; +#else + result.texcoord1.zw = _float2( 0.0 ); +#endif + + //result.texcoord2 = vertex.normal; + + result.color = swizzleColor( vertex.color ); + //result.color.w *= fade; + } + hlsl_fp { + // Load the mask map + float4 texel = tex2D( $transMap, fragment.texcoord0.xy ); + + // Fade mask and blur depending on vertex alpha and distance + float blur = texel.z * fragment.color.w * fragment.texcoord0.z; + float mask = texel.w * fragment.color.w * fragment.texcoord0.z; + + // Kill the pixel if the blur or distortion is very small + clip( ( blur + mask ) - 0.01 ); + +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord1.z / fragment.texcoord1.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + + // sample the depth texture + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + const float dstDepth = tex2Ddepth( $viewDepthMap, tc ); + const float srcDepth = interpolatedZOverW; + + // z-rejection + const float zReject = dstDepth - srcDepth; + //clip( zReject - $particleDepthClipRange.x ); + clip( zReject ); + + // scale/bias the distortion map + float2 distortion = 2.0 * texel.xy - 1.0; + + // Scale distortion and blur + distortion *= ( $distortionScale.xy * mask ); + + result.color = ComputeDistortion( distortion, blur ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleenvadd.decl b/bin/base/generated/decls/renderprog/particleenvadd.decl new file mode 100644 index 0000000..b1d231c --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleenvadd.decl @@ -0,0 +1,84 @@ +{ + parms { + stageSort sortTrans+1 + } + state { + blend GL_SRC_ALPHA GL_ONE + depthmask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + result.texcoord0 = vertex.texcoord0.xyxy * $particleStScaleBias.x + $particleStScaleBias.y; + + float3 globalPos; + globalPos.x = dot3( vertex.position, $modelMatrixX ); + globalPos.y = dot3( vertex.position, $modelMatrixY ); + globalPos.z = dot3( vertex.position, $modelMatrixZ ); + result.texcoord1.xyz = $globalViewOrigin.xyz - globalPos; + result.texcoord1.w = 1.0; + + // Fade particle based on distance to near clip + //float fade = saturate( abs( result.position.w ) * $particleFade.x ); + + result.color = swizzleColor( vertex.color ); + result.color.xyz *= $exposure.xyz;// * fade; + } + hlsl_fp { + /* + Our particles do not compute or store normals, tangents, etc which makes for fast CPU computation. + If we want to calcuate the tangent space then for the particle, we can do so by making a + a few assumptions: + - The surface is planar + - Texture coordinates are interpolated across the surface + + If true, the partial derivatives are constant across each surface and the tangent vectors + can be computed as: + - T partial derivative of U with respect to the global space position + - B partial derivative of V with respect to the global space position + + The view vector is used as our normal. + */ + + half4 envMask = tex2D( $spareSpecularMap, fragment.texcoord0.xy ); + + float3 toViewer = normalize( fragment.texcoord1.xyz ); + + // calculate the edge differences over the 2x2 pixel area + float3 dp1 = ddx( fragment.texcoord1.xyz ); + float3 dp2 = ddy( fragment.texcoord1.xyz ); + float2 duv1 = ddx( fragment.texcoord0.xy ); + float2 duv2 = ddy( fragment.texcoord0.xy ); + + float3 T = normalize( float3( duv1.x * dp1.x + duv2.x * dp2.x, duv1.x * dp1.y + duv2.x * dp2.y, duv1.x * dp1.z + duv2.x * dp2.z ) ); + float3 B = normalize( float3( duv1.y * dp1.x + duv2.y * dp2.x, duv1.y * dp1.y + duv2.y * dp2.y, duv1.y * dp1.z + duv2.y * dp2.z ) ); + float3 N = cross( T, B ); + + float3 localNormal = tex2D( $spareBumpMap, fragment.texcoord0.xy ).wyz; + localNormal = float3( localNormal.xy * 2.0 - 1.0, 0.0 ); + localNormal.z = sqrt( 1.0 - min( dot3( localNormal, localNormal ), 1.0 ) ); + + float3 globalNormal; + globalNormal.x = dot3( localNormal, T ); + globalNormal.y = dot3( localNormal, B ); + globalNormal.z = dot3( localNormal, N ); + globalNormal = normalize( globalNormal ); + + // calculate the specular reflection vector from viewer and globalNormal + float4 reflection; + reflection.xyz = ( globalNormal * dot3( toViewer, globalNormal ) * 2.0 ) - toViewer; + reflection.w = 0.0; + + // load up the environment value from the reflection vector + half4 color = texCUBElod( $dynamicEnvMap, reflection ); + color.w = envMask.g; + + //test the specular map alpha with the vertex alpha + //fragment.color.w = step( 1 - fragment.color.w, envMask.a ); + result.color = fragment.color * color; // * ( envMask * fragment.color.w ); //color * envMask * fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particleliquidblend.decl b/bin/base/generated/decls/renderprog/particleliquidblend.decl new file mode 100644 index 0000000..43e75cd --- /dev/null +++ b/bin/base/generated/decls/renderprog/particleliquidblend.decl @@ -0,0 +1,36 @@ +{ + parms { + stageSort sortTrans + //*x Specular Scale + //*z Step Threshold + //*w Step Value + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + twosided + } + hlsl_vp { + #include "particle_vp.inc" + + result.color = vertColor; + result.color.xyz *= $exposure.xyz; + + result.texcoord3 = vertex.normal; + } + hlsl_fp { + #include "particle_fp.inc" + + half3 final = color.x * fragment.color.xyz; + + final += color.z * fragment.texcoord3.x * 2; //add spec to base color; + + // apply global fog + final.xyz = lerp( $fogColor.xyz, final.xyz, fogVal ); + + float alphaStep = smoothstep( fragment.texcoord3.w, fragment.texcoord3.w + fragment.texcoord3.z, color.w ); + + result.color.xyz = final; + result.color.w = alphaStep * fragment.color.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/particlereplace.decl b/bin/base/generated/decls/renderprog/particlereplace.decl new file mode 100644 index 0000000..9ae636d --- /dev/null +++ b/bin/base/generated/decls/renderprog/particlereplace.decl @@ -0,0 +1,20 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_ONE GL_ZERO + depthmask + } + hlsl_vp { + #include "particle_vp.inc" + } + hlsl_fp { + #include "particle_fp.inc" + + // apply global fog + color.xyz = lerp( $fogColor.xyz, color.xyz, fogVal ); + + result.color = color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/postprocess.decl b/bin/base/generated/decls/renderprog/postprocess.decl new file mode 100644 index 0000000..a826abc --- /dev/null +++ b/bin/base/generated/decls/renderprog/postprocess.decl @@ -0,0 +1,227 @@ +{ + parms { + overlayOpacity.x showOverlay.x * overlayOpacity.x + overlayOpacity.y 1.0 - overlayOpacity.x + } + state { + blend GL_ONE GL_ZERO + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; +#ifdef PS3 + result.texcoord0 = vertex.texcoord0.xyxy; + result.texcoord0.y = 1.0 - vertex.texcoord0.y; +#endif + } + hlsl_fp { +#ifdef PS3 + float2 texcoord = fragment.texcoord0.xy; +#else + // Convert from [0,1,2,3,..., N-1] coordinates to [0.0,1.0] + float2 texcoord = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); +#endif + + // Fix so that screen overlay can be sampled properly (ie not upside down etc) + float2 texcoord2 = texcoord; +#if defined( PC ) && !defined( PC_D3D ) + texcoord2.y = 1.0 - texcoord2.y; +#endif + +#ifdef PC + // TODO GK: Optimize me + float2 scale = 2.0 * texcoord.xy - 1.0; + float2 blah = saturate( float2( 0.8 - scale.x * scale.x, 0.8 - scale.y * scale.y ) ); + texcoord.xy += $doubleVision.xy * blah; +#endif + + // Load the glare texture + const half4 glareTex = h4tex2D( $glareMap, texcoord.xy ); + + //-------------------------------- + // Depth Of Field - calculate depth-of-field offset + +#ifdef XBOX + float ndcZ = tex2Ddepth_fast( $viewDepthMap, texcoord.xy ); +#else + float ndcZ = tex2Ddepth_fast( $viewDepthMap, texcoord.xy ) * 2.0 - 1.0; +#endif + float clipZ = ndcZ * $projectionMatrixZ.w / ( ndcZ + $projectionMatrixZ.z ); + + half dof = clipZ - $depthOfField2.x; + dof *= ( dof < 0.0 ) ? $depthOfField2.y : $depthOfField2.z; + dof = saturate( abs( dof ) ) * $depthOfField2.w + $globalBlur.x; + +/* +if ( dof < 0.1 ) { + result.hcolor = float4( 0, 0, 0, 1 ); +} else if ( dof < 0.2 ) { + result.hcolor = float4( 1, 0, 0, 1 ); +} else if ( dof < 0.3 ) { + result.hcolor = float4( 0, 1, 0, 1 ); +} else if ( dof < 0.4 ) { + result.hcolor = float4( 1, 1, 0, 1 ); +} else if ( dof < 0.5 ) { + result.hcolor = float4( 0, 0, 1, 1 ); +} else if ( dof < 0.6 ) { + result.hcolor = float4( 1, 0, 1, 1 ); +} else if ( dof < 0.7 ) { + result.hcolor = float4( 0, 1, 1, 1 ); +} else if ( dof < 0.8 ) { + result.hcolor = float4( 1, 1, 1, 1 ); +} else if ( dof < 0.9 ) { + result.hcolor = float4( .5, 0, .5, 1 ); +} +return; +*/ + //-------------------------------- + // Distortion Effects + + half2 perturb = _half2( 0.0 ); + half blur = 0.0; + { + //-------------------------------- + // Apply distortions accumulated while rendering the scene ( i.e. heat distortion ) + //half4 distortion = h4tex2D( $postDistortionMap, texcoord.xy ) - 127.0 / 255.0; + //perturb += distortion.xy * distortion.z; + //blur += saturate( distortion.w ) * 16; + + half4 distortion = h4tex2D( $postDistortionMap, texcoord.xy ) - 0.5; + perturb += distortion.xy * 0.1; // distortion is multiplied by an arbitrary value + blur += saturate( distortion.w ) * 16.0; // can make sharper or blurrier based on shaders + } + + //-------------------------------- + // Apply perturbation to texcoord + { + // TODO: If necessary, avoid perturbation artifacts on borders by falling-off to zero + texcoord.xy += perturb.xy; + } + +#ifdef PC + half4 final; + BRANCH if ( $radialBlurEnable.x != 0.0 ) { +#if 1 // Slow.... Radial blur for Qcon demo + const int numsamples = 32; + half4 col = _half4( 0.0 ); + for ( int i = 0; i < numsamples; ++i ) { + float scale = 1.0 - ( $radialBlurMaxScale.x ) * ( i / float( numsamples - 1.0 ) ); + col += tex2D( $viewColorMap, scale * texcoord.xy + ( 1.0 - scale ) * $radialBlurCenter.xy ) * ( numsamples - i ) * ( numsamples - i ); + } + col = col / ( numsamples * numsamples * numsamples / 4 ); + float luminance = saturate( dot3( col.xyz, half3( 0.33, 0.59, 0.11 ) ) ) * $radialBlurScale.x; + final = tex2Dlod( $viewColorMap, float4( texcoord.xy, 0.0, dof + blur ) ); + final = lerp( final, col, sqrt( luminance ) ); +#else +// const int numsamples = 16; +// half4 col = 0; +// for ( int i = 0; i < numsamples; i++ ) { +// float scale = 1.0 - 0.25 * ( i / (float)( numsamples - 1.0 ) ); +// float2 v = ( texcoord - $radialBlurCenter.xy ); +// col += tex2D( $viewColorMap, v * scale + $radialBlurCenter.xy ); +// } +// final = col / numsamples; + + // use anisotropic filtering - on the PS3, this can take up to 5ms ) + // TODO: fall off to zero at edges to prevent border from being blended in + // TODO: pass in dof+blur + // assumes: viewColorImage has aniso set and lodmaxclamp = 0 + float2 v = normalize( $radialBlurCenter.xy - texcoord.xy ); + // dx, dy need to be orthogonal + float2 dx = v * 0.02; + float2 dy = float2( v.y, -v.x ) * 0.0001; // change this for tiny line effect, minimum footprint width + final = tex2D( $viewColorMap, texcoord.xy, dx, dy ); +#endif + } else { + + //-------------------------------- + // Load the original screen value + final = tex2Dlod( $viewColorMap, float4( texcoord.xy, 0.0, dof + blur ) ); + } +#else + //-------------------------------- + // Load the original screen value + + half4 final = tex2Dlod( $viewColorMap, float4( texcoord.xy, 0.0, dof + blur ) ); +#endif + final = final * $screenScale + glareTex; + +#ifdef PC + //--------------------------------- + // Double Vision + BRANCH if ( anyNotEqual( $doubleVision.xy, _float2( 0.0 ) ) ) { + // Convert from [0,1,2,3,..., N-1] coordinates to [0.0,1.0] + float2 tc2 = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + // GK TODO: Optimize me + float2 scale = 2.0 * texcoord.xy - 1.0; + float2 blah = saturate( float2( 0.8 - scale.x * scale.x, 0.8 - scale.y * scale.y ) ); + tc2 -= $doubleVision.xy * blah; + half4 glareTex2 = tex2D( $glareMap, tc2.xy ); + // See if we need to compute a new dof at this location - might be ok to just use previous location's dof + half4 final2 = tex2Dlod( $viewColorMap, float4( tc2.xy, 0.0, dof + blur ) ) * $screenScale + glareTex; + final = lerp( final, final2, 0.5 ); + } +#endif + + //--------------------------------- + // Color Grading - desaturation, color balance, dodge, burn, multiply, screen, brightness, etc. + + half3 tmpCol = _half3( dot3( final.xyz, half3( 0.33, 0.59, 0.11 ) ) ); + final.xyz = lerp( final.xyz, tmpCol, $cbDesaturate.x ); + + tmpCol.x = h4tex2D( $cbConversionLUT, float2( final.x, 0.0 ) ).x; + tmpCol.y = h4tex2D( $cbConversionLUT, float2( final.y, 0.0 ) ).y; + tmpCol.z = h4tex2D( $cbConversionLUT, float2( final.z, 0.0 ) ).z; + + // Apply other cb ops not stored in LUT + tmpCol *= $cbBrightness.x; + + // Blend in color grading based on depth ( just use the dof value ) + tmpCol.xyz = lerp( tmpCol.xyz, final.xyz, min( $depthBasedColorGrading.x * dof, 1.0 ) ); + + // Screen border overlay +#if 1 + tmpCol.xyz *= $overlayOpacity.y + h4tex2D( $screenOverlay, texcoord2 ).xyz * $overlayOpacity.x; + // test for recompositing a whole overlay based on one corner - gives us 2x more resolution + //float2 stc = 1.0 - abs( 2.0 * texcoord - 1.0 ); + //tmpCol.xyz *= $overlayOpacity.y + h4tex2D( $screenOverlay1, stc ).xyz * $overlayOpacity.x; +#endif + + //--------------------------------- + // Grain + + // Calculate UV coordinate for grain and sample texture + float2 graincoord = ( texcoord.xy * $postGrainScaleBias.xy ) + $postGrainScaleBias.zw; + half3 grain = h4tex2D( $grainMap, graincoord ).xyz * $postGrainParms.x + $postGrainParms.y; + + // Sloppy grayscale conversion used as luminance to determine amount of grain + half tempLum = dot( tmpCol.xyz, half3( 0.3, 0.59, 0.11 ) ); + + // Bias and scale luminance value + tempLum = saturate( ( tempLum * $postGrainParms.z ) + $postGrainParms.w ); + + // Scale grain amount using screen luminance + grain *= tempLum; + + // Apply grain on final color + tmpCol.xyz += grain; + + //--------------------------------- + // Result + + result.hcolor.xyz = tmpCol.xyz; + result.hcolor.w = 1.0; + +#ifdef PC // DEBUG + if ( $showDepthOfField.x == 1.0 ) { + result.hcolor.xyz = _half3( dof ); + } + + if ( $showGrainLevels.x == 1.0 ) { + result.hcolor.xyz = _half3( tempLum ); + } +#endif + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/postprocesshq.decl b/bin/base/generated/decls/renderprog/postprocesshq.decl new file mode 100644 index 0000000..801d174 --- /dev/null +++ b/bin/base/generated/decls/renderprog/postprocesshq.decl @@ -0,0 +1,220 @@ +{ + parms { + overlayOpacity.x showOverlay.x * overlayOpacity.x + overlayOpacity.y 1.0 - overlayOpacity.x + } + state { + blend GL_ONE GL_ZERO + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // Convert from [0,1,2,3,..., N-1] coordinates to [0.0,1.0] + float2 texcoord = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // Fix so that screen overlay can be sampled properly (ie not upside down etc) + float2 texcoord2 = texcoord; + texcoord2.y = 1.0 - texcoord2.y; + + // TODO GK: Optimize me + float2 scale = 2.0 * texcoord.xy - 1.0; + float2 blah = saturate( float2( 0.8 - scale.x * scale.x, 0.8 - scale.y * scale.y ) ); + texcoord.xy += $doubleVision.xy * blah; + + // Load the glare texture + const half4 glareTex = h4tex2D( $glareMap, texcoord.xy ); + + //-------------------------------- + // Depth Of Field - calculate depth-of-field offset + + float ndcZ = tex2Ddepth_fast( $viewDepthMap, texcoord.xy ) * 2.0 - 1.0; + float clipZ = ndcZ * $projectionMatrixZ.w / ( ndcZ + $projectionMatrixZ.z ); + + half dof = clipZ - $depthOfField2.x; + dof *= ( dof < 0.0 ) ? $depthOfField2.y : $depthOfField2.z; + dof = saturate( abs( dof ) ) * $depthOfField2.w + $globalBlur.x; + + //-------------------------------- + // Distortion Effects + + half2 perturb = _half2( 0.0 ); + half blur = 0.0; + { + //-------------------------------- + // Apply distortions accumulated while rendering the scene ( i.e. heat distortion ) + //half4 distortion = h4tex2D( $postDistortionMap, texcoord.xy ) - 127.0 / 255.0; + //perturb += distortion.xy * distortion.z; + //blur += saturate( distortion.w ) * 16; + + half4 distortion = h4tex2D( $postDistortionMap, texcoord.xy ) - 0.5; + perturb += distortion.xy * 0.1; // distortion is multiplied by an arbitrary value + blur += saturate( distortion.w ) * 16.0; // can make sharper or blurrier based on shaders + } + + //-------------------------------- + // Apply perturbation to texcoord + { + // TODO: If necessary, avoid perturbation artifacts on borders by falling-off to zero + texcoord.xy += perturb.xy; + } + + half4 final; + + //-------------------------------- + // Load the original screen value + float pixelZ = clipZ; // ndcZ; // tex2Ddepth_fast( $viewDepthMap, texcoord.xy ) * 2.0 - 1.0; + float pixelDof = dof; + half4 colorSum = _half4( 0.0 ); + + const int knum = 2; // [-k..k] + float2 kscale = float2( 0.000781, 0.001838 ) * 10; // <- scale kernel size with resolution (assume 1280x544) +// float2 kscale = $positionToViewTexture.zw * 10; // <- kernel size will not change with resolution + pixelDof = 0.0; + int sampleCount = 0; + for ( int ky = -knum; ky <= knum; ++ky ) { + for ( int kx = -knum; kx <= knum; ++kx ) { + + float2 oxy = float2( kx, ky ) * kscale; + float2 txy = texcoord.xy + oxy; + + float sample_ndcZ = tex2Ddepth_fast( $viewDepthMap, txy ) * 2.0 - 1.0; + float sampleZ = sample_ndcZ * $projectionMatrixZ.w / ( sample_ndcZ + $projectionMatrixZ.z ); + half sampleDof = sampleZ - $depthOfField2.x; + sampleDof *= ( sampleDof < 0.0 ) ? $depthOfField2.y : $depthOfField2.z; + sampleDof = saturate( abs( sampleDof ) ) * $depthOfField2.w + $globalBlur.x; + + // don't let background objects blur focused foreground objects + //float diffZ = (sampleZ - pixelZ) / pixelZ; + float diffZ = (sample_ndcZ - ndcZ) / ndcZ; + if ( diffZ > 0.01 && sampleDof > dof ) { + //if ( diffZ < -0.01 ) { + continue; + } + + pixelDof += sampleDof; + sampleCount++; + } + } + pixelDof = pixelDof / float( sampleCount ); + //final = float4(sampleCount * 0.04); + + + const int knum2 = 4; + sampleCount = 0; +// kscale = $positionToViewTexture.zw * pixelDof * 0.5; + kscale = float2( 0.000781, 0.001838 ) * pixelDof * 0.5; + for ( int ky = -knum2; ky <= knum2; ++ky ) { + for ( int kx = -knum2; kx <= knum2; ++kx ) { + float2 oxy = float2( kx, ky ); + float d = length( oxy ); + float2 txy = texcoord.xy + oxy * kscale; + + float sample_ndcZ = tex2Ddepth_fast( $viewDepthMap, txy ) * 2.0 - 1.0; + float sampleZ = sample_ndcZ * $projectionMatrixZ.w / ( sample_ndcZ + $projectionMatrixZ.z ); + half sampleDof = sampleZ - $depthOfField2.x; + sampleDof *= ( sampleDof < 0.0 ) ? $depthOfField2.y : $depthOfField2.z; + sampleDof = saturate( abs( sampleDof ) ) * $depthOfField2.w + $globalBlur.x; + + // don't use foreground objects when blurring background + //float diffZ = (sampleZ - pixelZ) / pixelZ; + float diffZ = (sample_ndcZ - ndcZ) / ndcZ; + // if ( diffZ > 0.1 && sampleDof > pixelDof ) { + if ( diffZ < -0.01 && sampleDof < dof ) { + // continue; + } + + // colorSum += tex2Dlod( $viewColorMap, float4( txy, 0.0, pixelDof ) ); + // colorSum += tex2Dlod( $viewColorMap, float4( txy, 0.0, 0.0) ); + colorSum += tex2Dlod( $viewColorMap, float4( txy, 0.0, pixelDof - 2 ) ); + sampleCount++; + } + } + + final = colorSum / float( sampleCount ); + //final.x = 1; + + + +//////////// + + final = final * $screenScale + glareTex; + + //--------------------------------- + // Double Vision + BRANCH if ( anyNotEqual( $doubleVision.xy, _float2( 0.0 ) ) ) { + // Convert from [0,1,2,3,..., N-1] coordinates to [0.0,1.0] + float2 tc2 = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + // GK TODO: Optimize me + float2 scale = 2.0 * texcoord.xy - 1.0; + float2 blah = saturate( float2( 0.8 - scale.x * scale.x, 0.8 - scale.y * scale.y ) ); + tc2 -= $doubleVision.xy * blah; + half4 glareTex2 = tex2D( $glareMap, tc2.xy ); + // See if we need to compute a new dof at this location - might be ok to just use previous location's dof + half4 final2 = tex2Dlod( $viewColorMap, float4( tc2.xy, 0.0, dof + blur ) ) * $screenScale + glareTex; + final = lerp( final, final2, 0.5 ); + } + + //--------------------------------- + // Color Grading - desaturation, color balance, dodge, burn, multiply, screen, brightness, etc. + + half3 tmpCol = _half3( dot3( final.xyz, half3( 0.33, 0.59, 0.11 ) ) ); + final.xyz = lerp( final.xyz, tmpCol, $cbDesaturate.x ); + + tmpCol.x = h4tex2D( $cbConversionLUT, float2( final.x, 0.0 ) ).x; + tmpCol.y = h4tex2D( $cbConversionLUT, float2( final.y, 0.0 ) ).y; + tmpCol.z = h4tex2D( $cbConversionLUT, float2( final.z, 0.0 ) ).z; + + // Apply other cb ops not stored in LUT + tmpCol *= $cbBrightness.x; + + // Blend in color grading based on depth ( just use the dof value ) + tmpCol.xyz = lerp( tmpCol.xyz, final.xyz, min( $depthBasedColorGrading.x * dof, 1.0 ) ); + + // Screen border overlay +#if 1 + tmpCol.xyz *= $overlayOpacity.y + h4tex2D( $screenOverlay, texcoord2 ).xyz * $overlayOpacity.x; + // test for recompositing a whole overlay based on one corner - gives us 2x more resolution + //float2 stc = 1.0 - abs( 2.0 * texcoord - 1.0 ); + //tmpCol.xyz *= $overlayOpacity.y + h4tex2D( $screenOverlay1, stc ).xyz * $overlayOpacity.x; +#endif + + //--------------------------------- + // Grain + + // Calculate UV coordinate for grain and sample texture + float2 graincoord = ( texcoord.xy * $postGrainScaleBias.xy ) + $postGrainScaleBias.zw; + half3 grain = h4tex2D( $grainMap, graincoord ).xyz * $postGrainParms.x + $postGrainParms.y; + + // Sloppy grayscale conversion used as luminance to determine amount of grain + half tempLum = dot( tmpCol.xyz, half3( 0.3, 0.59, 0.11 ) ); + + // Bias and scale luminance value + tempLum = saturate( ( tempLum * $postGrainParms.z ) + $postGrainParms.w ); + + // Scale grain amount using screen luminance + grain *= tempLum; + + // Apply grain on final color + tmpCol.xyz += grain; + + //--------------------------------- + // Result + + result.hcolor.xyz = tmpCol.xyz; + result.hcolor.w = 1.0; + +#ifdef PC // DEBUG + if ( $showDepthOfField.x == 1.0 ) { + result.hcolor.xyz = _half3( dof ); + } + + if ( $showGrainLevels.x == 1.0 ) { + result.hcolor.xyz = _half3( tempLum ); + } +#endif + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/radiositypreview.decl b/bin/base/generated/decls/renderprog/radiositypreview.decl new file mode 100644 index 0000000..ab5b9a1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/radiositypreview.decl @@ -0,0 +1,72 @@ +{ + parms { + stageSort sortCoverage + newDiffuseScale exposure.x * newDiffuseScale + } + state { + } + hlsl_vp { + #include "skinning_normals.inc" + + result.position.x = dot( position, $mvpMatrixX ); + result.position.y = dot( position, $mvpMatrixY ); + result.position.z = dot( position, $mvpMatrixZ ); + result.position.w = dot( position, $mvpMatrixW ); + + // texture projection into the preview texture + float4 v; + v.x = dot( position, $modelMatrixX ); + v.y = dot( position, $modelMatrixY ); + v.z = dot( position, $modelMatrixZ ); + v.w = dot( position, $modelMatrixW ); + + result.texcoord1.x = dot( v, $radiosityPreviewX ); + result.texcoord1.y = dot( v, $radiosityPreviewY ); + result.texcoord1.z = dot( v, $radiosityPreviewZ ); + result.texcoord1.w = dot( v, $radiosityPreviewW ); + + // fog factor in texture 0 + result.texcoord0.xy = _float2( 0.0 ); + result.texcoord0.z = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + result.texcoord0.w = 0.0; + } + hlsl_fp { + float2 tc; + tc.x = fragment.texcoord1.x / fragment.texcoord1.w; + tc.y = fragment.texcoord1.y / fragment.texcoord1.w; + + tc = ( tc + 1.0 ) * 0.5; + float4 color = tex2D( $radiosityPreviewMap, tc ); + +// color.xyz *= $newDiffuseScale.xyz; + + //--------------------------------------------------------------- + // read the dimshadow factor, apply before fog + //--------------------------------------------------------------- + // this is normalized window space, not strict openGL window space + // that uses integer viewport values. + float4 window; + window.xy = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + window.z = 0.0; + window.w = 0.0; // blur factor + float shadow = tex2Dlod( $viewColorMap, window ).w; // from alpha channel + + // only use half the dimshadow value, since we can't separate the + // contribution along the shadow from the remainder + shadow = saturate( shadow + 0.5 ); + + + +// color = tex2D( $radiosityPreviewMap, (float2)window ); +// color.xyz *= $newDiffuseScale.xyz; + + color.xyz *= shadow; + + // --------- calculate fog + half fog = saturate( exp2( fragment.texcoord0.z ) ); + + // lerp towards the fog color by the fog factor + result.color = lerp( $fogColor, color, fog ); + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/ribbondistort.decl b/bin/base/generated/decls/renderprog/ribbondistort.decl new file mode 100644 index 0000000..bb4070b --- /dev/null +++ b/bin/base/generated/decls/renderprog/ribbondistort.decl @@ -0,0 +1,52 @@ +{ + parms { + stageSort sortPerturber + } + state { + depthMask + depthfunc GL_LEQUAL + blend GL_ONE_MINUS_DST_ALPHA GL_DST_ALPHA + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + float4 worldPosition; + worldPosition.x = dot4( vertex.position, $modelMatrixX ); + worldPosition.y = dot4( vertex.position, $modelMatrixY ); + worldPosition.z = dot4( vertex.position, $modelMatrixZ ); + worldPosition.w = dot4( vertex.position, $modelMatrixW ); + + float eyeDistance = abs( dot4( worldPosition, $viewMatrixZ ) ); + float nearFade = saturate( ( eyeDistance - $distortionFade.x ) / ( $distortionFade.y - $distortionFade.x ) ); + float farFade = saturate( ( eyeDistance - $distortionFade.z ) / ( $distortionFade.w - $distortionFade.z ) ); + float fade = nearFade * ( 1.0 - farFade ); + + result.texcoord0.x = dot4( vertex.texcoord0, $sMatrix ); + result.texcoord0.y = dot4( vertex.texcoord0, $tMatrix ); + result.texcoord0.z = fade; + result.texcoord0.w = -( clamp( result.position.w - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + + float4 color = swizzleColor( vertex.color ) * $color; + + result.color = color; + } + hlsl_fp { + // Sample normal map + float4 texel = tex2D( $distortionMap, fragment.texcoord0.xy ); + + float blur = texel.z * fragment.color.w * fragment.texcoord0.z; + float mask = texel.w * fragment.color.w * fragment.texcoord0.z; + + // Convert from [0,1] to [-1,1] + float2 distortion = ( texel.xy * _float2( 2.0 ) ) - _float2( 1.0 ); + + // Scale normals by globals multiplied with color + distortion *= $distortionScale.xy * fragment.color.xy * _float2( mask ); + + // Compute and store distortion normals + result.color = ComputeDistortion( distortion, blur ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/shadedcolorparmonly.decl b/bin/base/generated/decls/renderprog/shadedcolorparmonly.decl new file mode 100644 index 0000000..67eea25 --- /dev/null +++ b/bin/base/generated/decls/renderprog/shadedcolorparmonly.decl @@ -0,0 +1,24 @@ +{ + parms { + stageSort sortCoverage + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + polygonOffset + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + float3 normal = vertex.normal.xyz * 2.0 - _float3( 1.0 ); + float r0 = dot3( normal, float3( 0.42, 0.57, 0.71 ) ); + result.color.xyz = _float3( r0 * 0.4 + 0.5 ); + result.color.w = 1.0; + } + hlsl_fp { + result.color = fragment.color * $color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/showcracks.decl b/bin/base/generated/decls/renderprog/showcracks.decl new file mode 100644 index 0000000..5532ed5 --- /dev/null +++ b/bin/base/generated/decls/renderprog/showcracks.decl @@ -0,0 +1,117 @@ +{ + parms { +#ifdef PS3 + projectionMatrixZ.z projectionMatrixZ.z * 0.5 - 0.5 +#endif + } + state { + depthfunc GL_ALWAYS + depthmask + alphamask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + + const float MAX_FLAT_DEPTH = 10.0; // maximum depth for two adjacent pixels to be considered in the same plane + const float MIN_CRACK_DEPTH = 100.0; // a pixel is considered a crack if it's depth increases this much between two adjacent pixels + const float MAX_CRACK_DISTANCE = 500.0; // don't look for cracks beyond this point because small far away adjacent geometry will appear as cracks + + float3 foundCrack = _float3( 0.0 ); + for ( float x = -4.0; x <= 4.0; x += 1.0 ) { + for ( float y = -4.0; y <= 4.0; y += 1.0 ) { + float2 localTC = tc + float2( x, y ) * $positionToViewTexture.zw; + + float centerDepth = tex2Ddepth( $spare1Map, localTC ); + float4 surroundingDepth; + surroundingDepth.x = tex2Ddepth( $spare1Map, localTC + float2( +1, 0 ) * $positionToViewTexture.zw ); + surroundingDepth.y = tex2Ddepth( $spare1Map, localTC + float2( 0, +1 ) * $positionToViewTexture.zw ); + surroundingDepth.z = tex2Ddepth( $spare1Map, localTC + float2( -1, 0 ) * $positionToViewTexture.zw ); + surroundingDepth.w = tex2Ddepth( $spare1Map, localTC + float2( 0, -1 ) * $positionToViewTexture.zw ); + +#if defined( PS3 ) + float centerClipZ = ( centerDepth - 0.5 ) * $projectionMatrixZ.w / ( centerDepth + $projectionMatrixZ.z ); + float4 surroundingClipZ = ( surroundingDepth - 0.5 ) * $projectionMatrixZ.w / ( surroundingDepth + $projectionMatrixZ.z ); +#elif defined( XBOX ) + float centerClipZ = -( $projectionMatrixZ.w / ( -centerDepth - $projectionMatrixZ.z ) ) * centerDepth; + float4 surroundingClipZ = -( $projectionMatrixZ.w / ( -surroundingDepth - $projectionMatrixZ.z ) ) * surroundingDepth; +#else + centerDepth = centerDepth * 2.0 - 1.0; + surroundingDepth = surroundingDepth * 2.0 - 1.0; + float centerClipZ = -( $projectionMatrixZ.w / ( -centerDepth - $projectionMatrixZ.z ) ) * centerDepth; + float4 surroundingClipZ = -( $projectionMatrixZ.w / ( -surroundingDepth - $projectionMatrixZ.z ) ) * surroundingDepth; +#endif + + float minClipX = min( surroundingClipZ.x, surroundingClipZ.z ); + float minClipY = min( surroundingClipZ.y, surroundingClipZ.w ); + float minClipZ = min( minClipX, minClipY ); + + float2 averageSurroundingClipZ = ( surroundingClipZ.xy + surroundingClipZ.zw ) * 0.5; + + if ( abs( averageSurroundingClipZ.x - surroundingClipZ.x ) < MAX_FLAT_DEPTH && + centerClipZ - averageSurroundingClipZ.x > MIN_CRACK_DEPTH && averageSurroundingClipZ.x < MAX_CRACK_DISTANCE ) { + foundCrack = float3( localTC.x, localTC.y, minClipZ ); + } + if ( abs( averageSurroundingClipZ.y - surroundingClipZ.y ) < MAX_FLAT_DEPTH && + centerClipZ - averageSurroundingClipZ.y > MIN_CRACK_DEPTH && averageSurroundingClipZ.y < MAX_CRACK_DISTANCE ) { + foundCrack = float3( localTC.x, localTC.y, minClipZ ); + } + } + } + + if ( foundCrack.z != 0.0 ) { + for ( float x = -16.0; x <= 16.0; x += 4.0 ) { + for ( float y = -16.0; y <= 16.0; y += 4.0 ) { + float2 localTC = foundCrack.xy + float2( x, y ) * $positionToViewTexture.zw; + float centerDepth = tex2Ddepth( $spare1Map, localTC ); + float4 surroundingDepth; + surroundingDepth.x = tex2Ddepth( $spare1Map, localTC + float2( +1, 0 ) * $positionToViewTexture.zw ); + surroundingDepth.y = tex2Ddepth( $spare1Map, localTC + float2( 0, +1 ) * $positionToViewTexture.zw ); + surroundingDepth.z = tex2Ddepth( $spare1Map, localTC + float2( -1, 0 ) * $positionToViewTexture.zw ); + surroundingDepth.w = tex2Ddepth( $spare1Map, localTC + float2( 0, -1 ) * $positionToViewTexture.zw ); + +#if defined( PS3 ) + float centerClipZ = ( centerDepth - 0.5 ) * $projectionMatrixZ.w / ( centerDepth + $projectionMatrixZ.z ); + float4 surroundingClipZ = ( surroundingDepth - 0.5 ) * $projectionMatrixZ.w / ( surroundingDepth + $projectionMatrixZ.z ); +#elif defined( XBOX ) + float centerClipZ = -( $projectionMatrixZ.w / ( -centerDepth - $projectionMatrixZ.z ) ) * centerDepth; + float4 surroundingClipZ = -( $projectionMatrixZ.w / ( -surroundingDepth - $projectionMatrixZ.z ) ) * surroundingDepth; +#else + centerDepth = centerDepth * 2.0 - 1.0; + surroundingDepth = surroundingDepth * 2.0 - 1.0; + float centerClipZ = -( $projectionMatrixZ.w / ( -centerDepth - $projectionMatrixZ.z ) ) * centerDepth; + float4 surroundingClipZ = -( $projectionMatrixZ.w / ( -surroundingDepth - $projectionMatrixZ.z ) ) * surroundingDepth; +#endif + + float2 averageSurroundingClipZ = ( surroundingClipZ.xy + surroundingClipZ.zw ) * 0.5; + + if ( abs( averageSurroundingClipZ.x - surroundingClipZ.x ) < MAX_FLAT_DEPTH && + centerClipZ - averageSurroundingClipZ.x > MIN_CRACK_DEPTH && averageSurroundingClipZ.x < MAX_CRACK_DISTANCE ) { + } else if ( abs( averageSurroundingClipZ.y - surroundingClipZ.y ) < MAX_FLAT_DEPTH && + centerClipZ - averageSurroundingClipZ.y > MIN_CRACK_DEPTH && averageSurroundingClipZ.y < MAX_CRACK_DISTANCE ) { + } else if ( centerClipZ > foundCrack.z + MIN_CRACK_DEPTH ) { + foundCrack.z = 0.0; + } + } + } + } + + if ( foundCrack.z != 0.0 ) { + result.color = float4( 1.0, 0.25, 0.25, 1.0 ); + } else { + float centerDepth = tex2Ddepth( $spare1Map, tc ); +#if defined( PS3 ) + float centerClipZ = ( centerDepth - 0.5 ) * $projectionMatrixZ.w / ( centerDepth + $projectionMatrixZ.z ); +#elif defined( XBOX ) + float centerClipZ = -( $projectionMatrixZ.w / ( -centerDepth - $projectionMatrixZ.z ) ) * centerDepth; +#else + centerDepth = centerDepth * 2.0 - 1.0; + float centerClipZ = -( $projectionMatrixZ.w / ( -centerDepth - $projectionMatrixZ.z ) ) * centerDepth; +#endif + result.color = _float4( centerClipZ / 1000 ); + } + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/showdepth.decl b/bin/base/generated/decls/renderprog/showdepth.decl new file mode 100644 index 0000000..772e45e --- /dev/null +++ b/bin/base/generated/decls/renderprog/showdepth.decl @@ -0,0 +1,33 @@ +{ + parms { +#ifdef PS3 + projectionMatrixZ.z projectionMatrixZ.z * 0.5 - 0.5 +#endif + } + state { + depthfunc GL_ALWAYS + depthmask + alphamask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + float2 tc = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + float depth = tex2Ddepth( $spare1Map, tc ); + +#if defined( PS3 ) + float clipZ = ( depth - 0.5 ) * $projectionMatrixZ.w / ( depth + $projectionMatrixZ.z ); +#elif defined( XBOX ) + float clipZ = -( $projectionMatrixZ.w / ( -depth - $projectionMatrixZ.z ) ) * depth; +#else + depth = depth * 2.0 - 1.0; + float clipZ = -( $projectionMatrixZ.w / ( -depth - $projectionMatrixZ.z ) ) * depth; +#endif + + result.color = _float4( clipZ / 1000.0 ); + //result.color = depth; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/showguioverdraw.decl b/bin/base/generated/decls/renderprog/showguioverdraw.decl new file mode 100644 index 0000000..1e4a128 --- /dev/null +++ b/bin/base/generated/decls/renderprog/showguioverdraw.decl @@ -0,0 +1,21 @@ +{ + parms { + stageSort sortTrans + } + state { + twosided + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthfunc GL_ALWAYS + depthmask + alphamask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + } + hlsl_fp { + result.color = float4( 1.0, 0.0, 0.0, 0.2 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/showintensity.decl b/bin/base/generated/decls/renderprog/showintensity.decl new file mode 100644 index 0000000..bd5ba3d --- /dev/null +++ b/bin/base/generated/decls/renderprog/showintensity.decl @@ -0,0 +1,24 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + depthmask + alphamask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + float2 tc = screenPosToTexcoord( fragment.position.xy, $positionToViewTexture ); + + float4 color = tex2D( $spare1Map, tc ); + float maxComp = max( max( color.r, color.g ), color.b ); + + result.color.rgb = ( maxComp < 0.5 ) ? + half3( 2.0 * ( 0.5 - maxComp ), 2.0 * maxComp, 0.0 ) : + half3( 0.0, 2.0 * ( 1.0 - maxComp ), 2.0 * ( maxComp - 0.5 )); + result.color.a = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/showtangentspace.decl b/bin/base/generated/decls/renderprog/showtangentspace.decl new file mode 100644 index 0000000..f07f91c --- /dev/null +++ b/bin/base/generated/decls/renderprog/showtangentspace.decl @@ -0,0 +1,26 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + } + hlsl_vp { + float3 normal = vertex.normal.xyz * 2.0 - 1.0; + float4 tangent = vertex.tangent * 2.0 - 1.0; + float3 bitangent = cross( normal, tangent.xyz ) * tangent.w; + + float3 r0 = ( normal * $color.x ) + ( tangent.xyz * $color.y ) + ( bitangent * $color.z ); + result.color.xyz = r0 + 0.5; + result.color.w = 0.5; + + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + } + hlsl_fp { + result.color = fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/showtexturespace.decl b/bin/base/generated/decls/renderprog/showtexturespace.decl new file mode 100644 index 0000000..5147255 --- /dev/null +++ b/bin/base/generated/decls/renderprog/showtexturespace.decl @@ -0,0 +1,19 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.color = float4( vertex.texcoord0.xy, 0.0, 1.0 ); + } + hlsl_fp { + result.color = fragment.color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/simpleshade.decl b/bin/base/generated/decls/renderprog/simpleshade.decl new file mode 100644 index 0000000..7ef7b75 --- /dev/null +++ b/bin/base/generated/decls/renderprog/simpleshade.decl @@ -0,0 +1,26 @@ +{ + interaction // load the _point / _parallel / _spot version + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #define NOSHADOW + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/interaction.inc" + + float shadow = 1.0; + INTERACTION_FRAGMENT_SIMPLE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/simpleshade_parallel.decl b/bin/base/generated/decls/renderprog/simpleshade_parallel.decl new file mode 100644 index 0000000..71b00dc --- /dev/null +++ b/bin/base/generated/decls/renderprog/simpleshade_parallel.decl @@ -0,0 +1,28 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + registerCount360 48 + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_PARALLEL_LIGHT_SHADOW( shadow, fragment.texcoord5, fragment.texcoord2.w ); + + INTERACTION_FRAGMENT_SIMPLE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/simpleshade_point.decl b/bin/base/generated/decls/renderprog/simpleshade_point.decl new file mode 100644 index 0000000..e4d3269 --- /dev/null +++ b/bin/base/generated/decls/renderprog/simpleshade_point.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_POINT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_SIMPLE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/simpleshade_spot.decl b/bin/base/generated/decls/renderprog/simpleshade_spot.decl new file mode 100644 index 0000000..eea243d --- /dev/null +++ b/bin/base/generated/decls/renderprog/simpleshade_spot.decl @@ -0,0 +1,27 @@ +{ + parms { + stageSort sortLight + lightColor lightColor * exposure * lightFade + } + state { + depthfunc GL_LEQUAL + depthMask + alphaMask + blend GL_ONE GL_ONE + } + hlsl_vp { + #include "includes/interaction.inc" + + #include "skinning_normals.inc" + INTERACTION_VERTEX; + } + hlsl_fp { + #include "includes/shadow.inc" + #include "includes/interaction.inc" + + float shadow; + SAMPLE_SPOT_LIGHT_SHADOW( shadow, fragment.texcoord5 ); + + INTERACTION_FRAGMENT_SIMPLE( shadow ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/skinvmtr.decl b/bin/base/generated/decls/renderprog/skinvmtr.decl new file mode 100644 index 0000000..5bbe240 --- /dev/null +++ b/bin/base/generated/decls/renderprog/skinvmtr.decl @@ -0,0 +1,90 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + // pw-note: We must frac final texture coordinates in vertex program before applying skin offset in case we have any wrapping coordinates. + // In the fragment program we then do custom vmtr fetch where we skip the default fractioning of the texture coordinates since we can + // garuantee we don't wrap over into any unmapped space and still get virtual mapped non-generic materials to work properly with skin blending. + //CALC_TEXCOORDS_BLEND( result.texcoord0 ); + result.texcoord0 = frac( vertex.texcoord0.xyxy * $vertexStScaleBias.xyxy + $vertexStScaleBias.zwzw ) + skinOffsets.xyzw; + + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + + result.texcoord5.xy = vertex.texcoord0.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + } + hlsl_fp { + #define VMTR_TEXCOORD_SKIP_FRAC + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleSpecularNormal; + half2 feedbackTexCoord; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 globalDiffuseNormal; + half3 globalSpecularNormal; + half3 fromViewerN; + half4 globalReflection; + half4 color; + float4 feedback; + + //FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleSpecularNormal, feedbackTexCoord ); + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleSpecularNormal, feedbackTexCoord, fragment.htexcoord1.w ); + + // ------- custom textures ------- + + // Fetch none virtual material texture coordinate + float2 texCoord2 = fragment.texcoord5.xy; + + // Sample diffuse normal and ambient occlusion from none virtual materials + half4 sampleDiffuseNormal = tex2D( $spareBumpMap, texCoord2 ); + half sampleAmbientOcclusion = tex2D( $transMap, texCoord2 ).g; + + // ------------------------------- + + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleSpecularNormal.z ); + CALC_GLOBAL_NORMAL( globalDiffuseNormal, sampleDiffuseNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalSpecularNormal, sampleSpecularNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalSpecularNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.htexcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleSpecularNormal.x, globalSpecularNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZINGS( diffuse, globalDiffuseNormal, specular, globalSpecularNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleSpecularNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + + APPLY_LIGHTING_SKIN( color, diffuse, specular, sampleAmbientOcclusion, globalDiffuseNormal, globalReflection); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.htexcoord1, fragment.htexcoord2, fragment.htexcoord3 ); + + //color.xyz *= _half3( 0.00001 ); + //color.xyz += _half3( fragment.htexcoord1.w ); + + // Output + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleSpecularNormal.x, globalSpecularNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/skinvmtrwrinkle.decl b/bin/base/generated/decls/renderprog/skinvmtrwrinkle.decl new file mode 100644 index 0000000..c2dfece --- /dev/null +++ b/bin/base/generated/decls/renderprog/skinvmtrwrinkle.decl @@ -0,0 +1,95 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + // pw-note: We must frac final texture coordinates in vertex program before applying skin offset in case we have any wrapping coordinates. + // In the fragment program we then do custom vmtr fetch where we skip the default fractioning of the texture coordinates since we can + // garuantee we don't wrap over into any unmapped space and still get virtual mapped non-generic materials to work properly with skin blending. + //CALC_TEXCOORDS_BLEND( result.texcoord0 ); + result.texcoord0 = frac( vertex.texcoord0.xyxy * $vertexStScaleBias.xyxy + $vertexStScaleBias.zwzw ) + skinOffsets.xyzw; + + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + + result.texcoord5.xy = vertex.texcoord0.xy * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + } + hlsl_fp { + #define VMTR_TEXCOORD_SKIP_FRAC + #include "includes/vmtr.inc" + #include "includes/wrinklemap.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleSpecularNormal; + half2 feedbackTexCoord; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 globalDiffuseNormal; + half3 globalSpecularNormal; + half3 fromViewerN; + half4 globalReflection; + half4 color; + float4 feedback; + + //FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleSpecularNormal, feedbackTexCoord ); + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleSpecularNormal, feedbackTexCoord, fragment.htexcoord1.w ); + + // ------- custom textures ------- + + // Fetch none virtual material texture coordinate + float2 texCoord2 = fragment.texcoord5.xy; + + // Sample diffuse normal and ambient occlusion from none virtual materials + half4 sampleDiffuseNormal = tex2D( $spareBumpMap, texCoord2 ); + half4 sampleAmbientOcclusion = tex2D( $transMap, texCoord2 ); + + + // apply wrinkle maps + float occlusionRes; + half4 bumpRes; + SAMPLE_WRINKLEMAPS( occlusionRes, bumpRes, sampleAmbientOcclusion, sampleDiffuseNormal, texCoord2 ); + + // ------------------------------- + + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleSpecularNormal.z ); + CALC_GLOBAL_NORMAL( globalDiffuseNormal, bumpRes, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalSpecularNormal, sampleSpecularNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalSpecularNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.htexcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleSpecularNormal.x, globalSpecularNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZINGS( diffuse, globalDiffuseNormal, specular, globalSpecularNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleSpecularNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + + APPLY_LIGHTING_SKIN( color, diffuse, specular, occlusionRes, globalDiffuseNormal, globalReflection); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.htexcoord1, fragment.htexcoord2, fragment.htexcoord3 ); + + + // Output + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleSpecularNormal.x, globalSpecularNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/skydrawandscroll.decl b/bin/base/generated/decls/renderprog/skydrawandscroll.decl new file mode 100644 index 0000000..f5e857c --- /dev/null +++ b/bin/base/generated/decls/renderprog/skydrawandscroll.decl @@ -0,0 +1,84 @@ +{ + state { + twosided // this allows skyboxes to be a simple cube dynamic model + } + parms { + stageSort sortSkybox+1 + forceOpaque 1 // we want dmap to consider this opaque + + localViewOrigin.x dot4( globalViewOrigin, inverseModelMatrixX ) + localViewOrigin.y dot4( globalViewOrigin, inverseModelMatrixY ) + localViewOrigin.z dot4( globalViewOrigin, inverseModelMatrixZ ) + localViewOrigin.w dot4( globalViewOrigin, inverseModelMatrixW ) + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + float2 texcoord0 = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + + result.texcoord0.xy = texcoord0; + result.texcoord0.zw = _float2( 0.0 ); + + result.texcoord1.x = dot4( texcoord0, $sMatrix ); + result.texcoord1.y = dot4( texcoord0, $tMatrix ); + result.texcoord1.zw = _float2( 0.0 ); + + result.texcoord2.x = dot4( texcoord0, $sMatrix1 ); + result.texcoord2.y = dot4( texcoord0, $tMatrix1 ); + result.texcoord2.zw = _float2( 0.0 ); + + result.texcoord3.xyz = position.xyz - $localViewOrigin.xyz; + result.texcoord3.w = 0.0; + } + hlsl_fp { + float4 YCoCg = tex2D( $spare1Map, fragment.texcoord0.xy ); + + // convert the diffuse from YCoCg to RGB + half4 skyCol; + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + skyCol.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + skyCol.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + skyCol.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + skyCol.w = 1.0; + skyCol *= $exposure; + + // fog distance is fog altitude / normalized Z component + float dist = ( $skyFogCutoffHeight.x / normalize( fragment.texcoord3.xyz ).z ) * $fogScale.x; // combine fogScale with fogCutoffHeight? + dist = saturate( exp2( -dist )); + + half3 final = skyCol.xyz; + + // add the scrolling second cloud layer + half4 cloudCol = tex2D( $transMap, fragment.texcoord1.xy ) * $cloudScale; + final += cloudCol.xyz * dist; + + // Apply additional additive pass + half4 mask = tex2D( $fadeMap, fragment.texcoord2.xy ); + half4 cloudCol1 = tex2D( $transMap1, fragment.texcoord2.xy ) * $cloudScale1; + +#if 1 // cloud test for Justin + final = lerp( final, cloudCol1.xyz, mask.x * dist ); +#else + final += cloudCol1.xyz * mask.xyz * dist; +#endif + result.color0.xyz = final; + + // store fog factor in alpha so additive passes can be blended on + //result.color0.w = dist; + + // make sure alpha is always 1.0 so the radiosity programs + // don't think they are seeing back sides of surfaces + result.color0.w = 1.0; + + result.color1 = _float4( 0.0f ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/skydrawandscrolladd.decl b/bin/base/generated/decls/renderprog/skydrawandscrolladd.decl new file mode 100644 index 0000000..6ab0a43 --- /dev/null +++ b/bin/base/generated/decls/renderprog/skydrawandscrolladd.decl @@ -0,0 +1,54 @@ +{ + inherit skyDrawAndScroll + parms { + stageSort sortEmitOnly + exposure exposure * skyGlarePreScale + } + state { + blend GL_ONE GL_ONE + depthmask + twosided + } + hlsl_fp { + float4 YCoCg = tex2D( $spare1Map, fragment.texcoord0.xy ); + + // convert the diffuse from YCoCg to RGB + half4 skyCol; + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + skyCol.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + skyCol.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + skyCol.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + skyCol.w = 1.0; + skyCol *= $exposure; + + // fog distance is fog altitude / normalized Z component + float dist = ( $skyFogCutoffHeight.x / normalize( fragment.texcoord3.xyz ).z ) * $fogScale.x; // combine fogScale with fogCutoffHeight? + dist = saturate( exp2( -dist )); + + half3 final = skyCol.xyz; + + // add the scrolling second cloud layer + half4 cloudCol = tex2D( $transMap, fragment.texcoord1.xy ) * $cloudScale; + final += cloudCol.xyz * dist; + + // Apply additional additive pass + half4 mask = tex2D( $fadeMap, fragment.texcoord2.xy ); + half4 cloudCol1 = tex2D( $transMap1, fragment.texcoord2.xy ) * $cloudScale1; + +#if 1 // cloud test for Justin + final = lerp( final, cloudCol1.xyz, mask.x * dist ); +#else + final += cloudCol1.xyz * mask.xyz * dist; +#endif + result.color0.xyz = final; + + // store fog factor in alpha so additive passes can be blended on + //result.color0.w = dist; + + // make sure alpha is always 1.0 so the radiosity programs + // don't think they are seeing back sides of surfaces + result.color0.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/sobelfilter.decl b/bin/base/generated/decls/renderprog/sobelfilter.decl new file mode 100644 index 0000000..997ca0d --- /dev/null +++ b/bin/base/generated/decls/renderprog/sobelfilter.decl @@ -0,0 +1,39 @@ +{ + parms { + stageSort sortCoverage + color color * sobelOpacity + } + state { + blend GL_ONE GL_ONE + depthfunc GL_ALWAYS + depthmask + alphamask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + // Convert from [0,1,2,3,..., N-1] coordinates to [0.0,1.0] + float2 tc = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + float2 translate = $renderPositionToViewTexture.zw * 1.5; + + half s_00 = tex2D( $transMap, tc + float2( -translate.x, -translate.y ) ).x; + half s_01 = tex2D( $transMap, tc + float2( 0.0, -translate.y ) ).x; + half s_02 = tex2D( $transMap, tc + float2( translate.x, -translate.y ) ).x; + + half s_10 = tex2D( $transMap, tc + float2( -translate.x, 0.0 ) ).x; + half s_12 = tex2D( $transMap, tc + float2( translate.x, 0.0 ) ).x; + + half s_20 = tex2D( $transMap, tc + float2( -translate.x, translate.y ) ).x; + half s_21 = tex2D( $transMap, tc + float2( 0.0, translate.y ) ).x; + half s_22 = tex2D( $transMap, tc + float2( translate.x, translate.y ) ).x; + + half sx = s_00 + 2.0 * s_10 + s_20 - s_02 - 2.0 * s_12 - s_22; + half sy = s_00 + 2.0 * s_01 + s_02 - s_20 - 2.0 * s_21 - s_22; + + float edge = sx * sx + sy * sy; + float fade = max( edge - $sobelThreshold.x, 0.0 ) * 0.1; + result.color = fade * $color; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/softparticleaddemissive.decl b/bin/base/generated/decls/renderprog/softparticleaddemissive.decl new file mode 100644 index 0000000..51597ab --- /dev/null +++ b/bin/base/generated/decls/renderprog/softparticleaddemissive.decl @@ -0,0 +1,7 @@ +{ + inherit softParticleAdditiveBlend + parms { + stageSort sortEmit + exposure exposure * glarePreScale + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/softparticleadditiveblend.decl b/bin/base/generated/decls/renderprog/softparticleadditiveblend.decl new file mode 100644 index 0000000..5831cc3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/softparticleadditiveblend.decl @@ -0,0 +1,26 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE + depthmask + } + hlsl_vp { + #include "softparticle_vp.inc" + + result.color = vertColor * $exposure; + result.color.w *= fade; + } + hlsl_fp { + #include "softparticle_fp.inc" + + color *= fragment.color; + + // additive, so the global fog is just a modulate instead of a blend + color.xyz *= fogVal; + + result.color.xyz = color.xyz; + result.color.w = color.w * scale; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/softparticleblend.decl b/bin/base/generated/decls/renderprog/softparticleblend.decl new file mode 100644 index 0000000..174f8a2 --- /dev/null +++ b/bin/base/generated/decls/renderprog/softparticleblend.decl @@ -0,0 +1,25 @@ +{ + parms { + stageSort sortTrans + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + } + hlsl_vp { + #include "softparticle_vp.inc" + + result.color = vertColor * $color * $exposure; + result.color.w *= fade; + } + hlsl_fp { + #include "softparticle_fp.inc" + + color *= fragment.color; + // apply global fog + color.xyz = lerp( $fogColor.xyz, color.xyz, fogVal ); + + result.color = color; + result.color.w *= scale; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/softparticleblendnoalphaexposure.decl b/bin/base/generated/decls/renderprog/softparticleblendnoalphaexposure.decl new file mode 100644 index 0000000..42ceb42 --- /dev/null +++ b/bin/base/generated/decls/renderprog/softparticleblendnoalphaexposure.decl @@ -0,0 +1,9 @@ +{ + inherit softParticleBlend + hlsl_vp { + #include "softparticle_vp.inc" + + result.color.xyz = vertColor.xyz * $color.xyz * $exposure.xyz; + result.color.w = vertColor.w * $color.w * fade; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/softparticleblendnoalphaexposurealpha4.decl b/bin/base/generated/decls/renderprog/softparticleblendnoalphaexposurealpha4.decl new file mode 100644 index 0000000..4ad217b --- /dev/null +++ b/bin/base/generated/decls/renderprog/softparticleblendnoalphaexposurealpha4.decl @@ -0,0 +1,9 @@ +{ + inherit softParticleBlend + hlsl_vp { + #include "softparticle_vp.inc" + + result.color.xyz = vertColor.xyz * $color.xyz * $exposure.xyz; + result.color.w = ( vertColor.w * $color.w * 4.0 ) * fade; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/testimage.decl b/bin/base/generated/decls/renderprog/testimage.decl new file mode 100644 index 0000000..fcd91a1 --- /dev/null +++ b/bin/base/generated/decls/renderprog/testimage.decl @@ -0,0 +1,41 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_ALWAYS + depthmask + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ) * $testImageFlip.x; + result.position.y = dot4( vertex.position, $mvpMatrixY ) * $testImageFlip.y; + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.xy = vertex.texcoord0.xy; + result.texcoord0.zw = _float2( 0.0 ); + } + hlsl_fp { + float4 tc; + tc.xyz = fragment.texcoord0.xyz; + tc.w = $testImageLOD.x; + + result.color = tex2Dlod( $textureMap, tc ); + result.color.w = $testImageAlpha.x; +/* + result.color = _float4( tex2Ddepth_fast( $textureMap, fragment.texcoord0.xy ) ); + result.color.w = 1.0; +*/ +/* + half4 YCoCg = tex2Dlod( $textureMap, tc ); + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //YCoCg.z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + result.color.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + result.color.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + result.color.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + result.color.w = 1.0; +*/ + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/testimagemultisample.decl b/bin/base/generated/decls/renderprog/testimagemultisample.decl new file mode 100644 index 0000000..3cceb63 --- /dev/null +++ b/bin/base/generated/decls/renderprog/testimagemultisample.decl @@ -0,0 +1,30 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_ALWAYS + depthmask + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ) * $testImageFlip.x; + result.position.y = dot4( vertex.position, $mvpMatrixY ) * $testImageFlip.y; + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.xy = vertex.texcoord0.xy; + result.texcoord0.zw = _float2( 0.0 ); + } + hlsl_fp { +#if defined( PC ) && !defined( PC_D3D ) + // texelFetch requires unnormalized texcoords + float2 texcoord = fragment.texcoord0.xy * float2( 1.0 / $positionToViewTexture.z, 1.0 / $positionToViewTexture.w ); + ivec2 texcoordi = ivec2( texcoord.x, texcoord.y ); + result.color.xyz = texelFetch( $textureMapMultisample, texcoordi.xy, 0 ).xyz; +#else + result.color = tex2D( $textureMapMultisample, fragment.texcoord0.xy ); +#endif + result.color.w = $testImageAlpha.x; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/testimageshadow.decl b/bin/base/generated/decls/renderprog/testimageshadow.decl new file mode 100644 index 0000000..4f9283f --- /dev/null +++ b/bin/base/generated/decls/renderprog/testimageshadow.decl @@ -0,0 +1,23 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_ALWAYS + depthmask + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ) * $testImageFlip.x; + result.position.y = dot4( vertex.position, $mvpMatrixY ) * $testImageFlip.y; + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + result.texcoord0.xy = vertex.texcoord0.xy; + result.texcoord0.zw = _float2( 0.0 ); + } + hlsl_fp { + result.color = _float4( tex2Ddepth_fast( $textureMapShadow, fragment.texcoord0.xy ) ); + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/textureonly.decl b/bin/base/generated/decls/renderprog/textureonly.decl new file mode 100644 index 0000000..70174a3 --- /dev/null +++ b/bin/base/generated/decls/renderprog/textureonly.decl @@ -0,0 +1,22 @@ +{ + parms { + stageSort sortCoverage + } + hlsl_vp { + // Convert back from 16 bit vertex elements. + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + + // Convert back from 16 bit vertex elements. + result.texcoord0.xy = vertex.texcoord0 * $vertexStScaleBias.xy + $vertexStScaleBias.zw; + result.texcoord0.zw = _float2( 0.0 ); + } + hlsl_fp { + result.color0 = tex2D( $textureMap, fragment.texcoord0.xy ); + result.color1 = _float4( 0.0 ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/transsortblend.decl b/bin/base/generated/decls/renderprog/transsortblend.decl new file mode 100644 index 0000000..cba64c9 --- /dev/null +++ b/bin/base/generated/decls/renderprog/transsortblend.decl @@ -0,0 +1,86 @@ +{ + parms { + stageSort sortTransSort + } + state { + blend GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA + depthmask + alphamask + twosided // need this for foliage shapes + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + const float eyeDist = result.position.w; + const float frameFrac = vertex.tangent.z; + const float alphascale = vertex.tangent.w; + + const float fogTerm = -( clamp( eyeDist - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + // moving the fogVal calculation to the vert shader for particles/foliage does not appear to cause any artifacts + const float fogVal = saturate( exp2( fogTerm ) ); + + // create thickness based on alpha scale + float thickness = ( ( 1.0 - alphascale ) * 127.0 ) / eyeDist; + + // Convert back from 16 bit vertex elements. + result.texcoord0.xy = vertex.texcoord0.xy * $particleStScaleBias.x + $particleStScaleBias.y; + result.texcoord0.z = fogVal; + result.texcoord0.w = alphascale; + + // Anim Cross-fade information + // Convert back from 16 bit vertex elements. + result.texcoord1.xy = vertex.texcoord1.xy * $particleStScaleBias.x + $particleStScaleBias.y; + result.texcoord1.z = frameFrac; + result.texcoord1.w = 0.0; + + result.texcoord2.x = vertex.normal.x * 10.0 + 1.0; + result.texcoord2.y = vertex.normal.y * 10.0 + 1.0; + result.texcoord2.z = 1.0 - vertex.normal.z; + result.texcoord2.w = vertex.normal.w; + + // adding half of the alpha scale to create a fake thickness to the particle + // makes particles that are flat against surfaces show up much better, result: need fewer particles. + result.position.z -= thickness; + +#ifdef XBOX + result.texcoord3 = result.position; +#endif + + // foliage fading based on distance to viewer is stored in vertex.color.w + + // fade particles based on distance to near clip and thickness + float particleFade = saturate( abs( eyeDist ) / ( ( 1.0 - alphascale ) * 127.0 ) ); + + float f = vertex.tangent.x; // foliage or static model flag (ie, don't apply particle fading) + float fade = f + ( 1.0 - f ) * particleFade; + result.color = swizzleColor( vertex.color ); + result.color.w *= fade; + } + hlsl_fp { +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord3.z / fragment.texcoord3.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + float2 tc = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + float scale = ComputeSoftParticleScale( $viewDepthMap, tc, interpolatedZOverW, fragment.texcoord0.w ); + half4 final = ComputeAnimCrossFadeColor( $transMap, fragment.texcoord0.xy, fragment.texcoord1.xy, fragment.texcoord1.z ); + + final.xyz = _float3( 1.0 ) - ( _float3( 1.0 ) - final.xyz ) * _float3( fragment.texcoord2.z ); + final.xyz *= _float3( fragment.texcoord2.x ); + final.w = saturate( final.w - ( 1.0 - scale ) ); + //final.w *= scale; + final.w *= fragment.texcoord2.y; + final *= fragment.color; + + // apply global fog + half fogVal = fragment.texcoord0.z; + final.xyz = lerp( $fogColor.xyz, final.xyz, fogVal ); + + result.color = final; + result.color.w = saturate( result.color.w ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/transsortglare.decl b/bin/base/generated/decls/renderprog/transsortglare.decl new file mode 100644 index 0000000..e3898b8 --- /dev/null +++ b/bin/base/generated/decls/renderprog/transsortglare.decl @@ -0,0 +1,88 @@ +{ + parms { + stageSort sortEmitOnly + exposure exposure * glarePreScale + } + state { + blend GL_SRC_ALPHA GL_ONE + depthmask + alphamask + twosided + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + + const float eyeDist = result.position.w; + const float frameFrac = vertex.tangent.z; + const float alphascale = vertex.tangent.w; + + const float fogTerm = -( clamp( eyeDist - $fogStart.x, 0.0, $fogEnd.x ) * $fogScale.x ); + // moving the fogVal calculation to the vert shader for particles/foliage does not appear to cause any artifacts + const float fogVal = saturate( exp2( fogTerm ) ); + + // create thickness based on alpha scale + float thickness = ( ( 1.0 - alphascale ) * 127.0 ) / eyeDist; + + // Convert back from 16 bit vertex elements. + result.texcoord0.xy = vertex.texcoord0.xy * $particleStScaleBias.x + $particleStScaleBias.y; + result.texcoord0.z = fogVal; + result.texcoord0.w = alphascale; + + // Anim Cross-fade information + // Convert back from 16 bit vertex elements. + result.texcoord1.xy = vertex.texcoord1.xy * $particleStScaleBias.x + $particleStScaleBias.y; + result.texcoord1.z = frameFrac; + result.texcoord1.w = 0.0; + + result.texcoord2.x = vertex.normal.x * 10.0 + 1.0; + result.texcoord2.y = vertex.normal.y * 10.0 + 1.0; + result.texcoord2.z = 1.0 - vertex.normal.z; + result.texcoord2.w = vertex.normal.w; + + // adding half of the alpha scale to create a fake thickness to the particle + // makes particles that are flat against surfaces show up much better, result: need fewer particles. + result.position.z -= thickness; + +#ifdef XBOX + result.texcoord3 = result.position; +#endif + + // foliage fading based on distance to viewer is stored in vertex.color.w + + // fade particles based on distance to near clip and thickness + float particleFade = saturate( abs( eyeDist ) / ( ( 1.0 - alphascale ) * 127.0 ) ); + + float f = vertex.tangent.x; // foliage or static model flag (ie, don't apply particle fading) + float fade = f + ( 1.0 - f ) * particleFade; + result.color = swizzleColor( vertex.color ) * fade; + } + hlsl_fp { +#ifdef XBOX + float interpolatedZOverW = fragment.texcoord3.z / fragment.texcoord3.w; +#else + float interpolatedZOverW = fragment.position.z; +#endif + float2 tc = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + float scale = ComputeSoftParticleScale( $viewDepthMap, tc, interpolatedZOverW, fragment.texcoord0.w ); + half4 final = ComputeAnimCrossFadeColor( $transMap, fragment.texcoord0.xy, fragment.texcoord1.xy, fragment.texcoord1.z ); + + final.xyz = _float3( 1.0 ) - ( _float3( 1.0 ) - final.xyz ) * _float3( fragment.texcoord2.z ); + final.xyz *= _float3( fragment.texcoord2.x ); + final.w = saturate( final.w - ( 1.0 - scale ) ); + //final.w *= scale; + final.w *= fragment.texcoord2.y; + final *= fragment.color; + final.xyz -= _float3( 1.0 ); + + // apply global fog + half fogVal = fragment.texcoord0.z; + final.xyz *= fogVal; + + result.color = final; + + //result.color = float4(1,0,1,1); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/varianceshadowmap.decl b/bin/base/generated/decls/renderprog/varianceshadowmap.decl new file mode 100644 index 0000000..cbdc060 --- /dev/null +++ b/bin/base/generated/decls/renderprog/varianceshadowmap.decl @@ -0,0 +1,46 @@ +{ + parms { + } + state { + depthfunc GL_ALWAYS + alphamask + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + } + hlsl_fp { + float2 texCoord = screenPosToTexcoord( fragment.position.xy, $renderPositionToViewTexture ); + + // Fetch the depth. + float depth = tex2Ddepth_fast( $lightDepthMap, texCoord ); + + // Compute partial derivatives of depth. + float dx = ddx( depth ); + float dy = ddy( depth ); + + float moment1 = depth; + float moment2 = depth * depth; + + float s = $renderPositionToViewTexture.z; + + float d0 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.0 * float2( -0.375, -0.125 ) ); + float d1 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.0 * float2( -0.125, 0.375 ) ); + float d2 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.0 * float2( 0.125, -0.375 ) ); + float d3 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.0 * float2( 0.375, 0.125 ) ); + + float d4 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.5 * float2( -0.125, -0.375 ) ); + float d5 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.5 * float2( 0.375, -0.125 ) ); + float d6 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.5 * float2( -0.375, 0.125 ) ); + float d7 = tex2Ddepth_fast( $lightDepthMap, texCoord + s * 2.5 * float2( 0.125, 0.375 ) ); + + moment1 = ( moment1 * 0.5 ) + ( d0 + d1 + d2 + d3 ) * 0.25 * 0.25 + ( d4 + d5 + d6 + d7 ) * 0.25 * 0.25; + moment2 = ( moment2 * 0.5 ) + ( d0 * d0 + d1 * d1 + d2 * d2 + d3 * d3 ) * 0.25 * 0.25 + ( d4 * d4 + d5 * d5 + d6 * d6 + d7 * d7 ) * 0.25 * 0.25; + + result.color.x = moment1; + result.color.y = moment2 + 100 * ( dx * dx + dy * dy ); + result.color.z = 0.0; + result.color.a = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/vehiclevmtr.decl b/bin/base/generated/decls/renderprog/vehiclevmtr.decl new file mode 100644 index 0000000..eae3cb7 --- /dev/null +++ b/bin/base/generated/decls/renderprog/vehiclevmtr.decl @@ -0,0 +1,56 @@ +{ + parms { + stageSort sortCoverage + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS_BLEND( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + half4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + FETCH_VMTR_BLEND( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord, fragment.htexcoord1.w ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.htexcoord1.xyz, fragment.htexcoord2.xyz, fragment.htexcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + APPLY_HIGHLIGHT( color, fromViewerN, fragment.htexcoord1, fragment.htexcoord2, fragment.htexcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/viewcoloridentity.decl b/bin/base/generated/decls/renderprog/viewcoloridentity.decl new file mode 100644 index 0000000..7dae5f2 --- /dev/null +++ b/bin/base/generated/decls/renderprog/viewcoloridentity.decl @@ -0,0 +1,23 @@ +{ + parms { + } + state { + blend GL_ONE GL_ZERO + depthfunc GL_ALWAYS + depthmask + twosided + } + hlsl_vp { + result.position = vertex.position; + result.texcoord0 = vertex.texcoord0.xyxy; + } + hlsl_fp { +#ifndef PC + float2 tc = float2( fragment.texcoord0.x, 1.0 - fragment.texcoord0.y ); +#else + float2 tc = fragment.texcoord0.xy; +#endif + result.hcolor = h4tex2D( $viewColorMap, tc ); + //result.hcolor.w = 0.5; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/vieweffectdamageoverlayfilter.decl b/bin/base/generated/decls/renderprog/vieweffectdamageoverlayfilter.decl new file mode 100644 index 0000000..58af071 --- /dev/null +++ b/bin/base/generated/decls/renderprog/vieweffectdamageoverlayfilter.decl @@ -0,0 +1,32 @@ +{ + parms { + stageSort sortTrans + } + state { + depthmask + blend GL_ZERO GL_SRC_COLOR + depthfunc GL_ALWAYS + twosided + alphamask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0, 0 ); + result.color = swizzleColor( vertex.color ); + } + hlsl_fp { + float alphaRamp = clamp( $alphaScale.x * fragment.color.w, 0.0f, 1.0f ); + + float3 overlayMap = tex2D( $transMap, fragment.texcoord0.xy ).xyz; + float3 overlayColor = lerp( _float3( 1.0 ), overlayMap, alphaRamp ); + + // clip pixels + //clip( overlayColor > 0.995f ? -1:1 ); + + result.color.xyz = _float3( overlayColor ); + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/vieweffectdamageoverlayinvfilter.decl b/bin/base/generated/decls/renderprog/vieweffectdamageoverlayinvfilter.decl new file mode 100644 index 0000000..b05b2ad --- /dev/null +++ b/bin/base/generated/decls/renderprog/vieweffectdamageoverlayinvfilter.decl @@ -0,0 +1,32 @@ +{ + parms { + stageSort sortTrans + } + state { + depthmask + blend GL_ZERO GL_ONE_MINUS_SRC_COLOR + depthfunc GL_ALWAYS + twosided + alphamask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0, 0 ); + result.color = swizzleColor( vertex.color ); + } + hlsl_fp { + float alphaRamp = clamp( $alphaScale.x * fragment.color.w, 0.0f, 1.0f ); + + float overlayMap = tex2D( $transMap, fragment.texcoord0.xy ).w; + float overlayColor = overlayMap * alphaRamp; + + // clip pixels + clip( overlayColor < 0.005f ? -1:1 ); + + result.color.xyz = _float3( overlayColor ); + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/vieweffectdamageoverlayscreen.decl b/bin/base/generated/decls/renderprog/vieweffectdamageoverlayscreen.decl new file mode 100644 index 0000000..38572eb --- /dev/null +++ b/bin/base/generated/decls/renderprog/vieweffectdamageoverlayscreen.decl @@ -0,0 +1,33 @@ +{ + parms { + stageSort sortTrans + } + state { + depthmask + blend GL_ONE GL_ONE_MINUS_SRC_COLOR + depthfunc GL_ALWAYS + twosided + alphamask + } + hlsl_vp { + result.position.x = dot4( vertex.position, $mvpMatrixX ); + result.position.y = dot4( vertex.position, $mvpMatrixY ); + result.position.z = dot4( vertex.position, $mvpMatrixZ ); + result.position.w = dot4( vertex.position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x, vertex.texcoord0.y, 0, 0 ); + result.color = swizzleColor( vertex.color ); + } + hlsl_fp { + float alphaRamp = clamp( $alphaScale.x * fragment.color.w, 0.0f, 1.0f ); + + float3 overlayMap = tex2D( $transMap, fragment.texcoord0.xy ).xyz; + float3 overlayColor = overlayMap * _float3( alphaRamp ); + + // clip pixels + float alphaClip = overlayColor.x + overlayColor.y + overlayColor.z; + clip( alphaClip < 0.005f ? -1:1 ); + + result.color.xyz = overlayColor; + result.color.w = 1.0; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/virtualguiblend.decl b/bin/base/generated/decls/renderprog/virtualguiblend.decl new file mode 100644 index 0000000..84de5ac --- /dev/null +++ b/bin/base/generated/decls/renderprog/virtualguiblend.decl @@ -0,0 +1,74 @@ +{ + parms { + stageSort sortTrans + } + state { + depthmask + depthfunc GL_ALWAYS + twosided + } + hlsl_vp { + float4 position = vertex.position * $vertexXYZScale + $vertexXYZBias; + + result.position.x = dot4( position, $mvpMatrixX ); + result.position.y = dot4( position, $mvpMatrixY ); + result.position.z = dot4( position, $mvpMatrixZ ); + result.position.w = dot4( position, $mvpMatrixW ); + result.texcoord0 = float4( vertex.texcoord0.x * $vertexStScaleBias.x + $vertexStScaleBias.z, vertex.texcoord0.y * $vertexStScaleBias.y + $vertexStScaleBias.w, 0, 0 ); + result.color = swizzleColor( vertex.color ); + result.texcoord1 = swizzleColor( vertex.tangent ) * _float4( 2.0 ) - _float4( 1.0 ); + } + hlsl_fp { + //-------- non-wrapping virtual texture lookup ------------ + float2 texcoord = saturate( fragment.texcoord0.xy ) * $virtualMapping.xy + $virtualMapping.zw; + float3 physCoord = VmtrVirtualToPhysical( texcoord ); + + //--------------------------------------------------------------- + // load the virtual textures + //--------------------------------------------------------------- +#ifdef XBOX + // Weird, low-level hardware issues give occasional horizontal and vertical + // quad-lines of crap with the virtualized gui images if the anisotropic + // filter isn't explicitly disabled. + half4 YCoCg; + half4 bumpPage; + asm { + tfetch2D YCoCg, physCoord.xy, $physicalVmtrPagesMap1, AnisoFilter = disabled + tfetch2D bumpPage, physCoord.xy, $physicalVmtrPagesMap2, AnisoFilter = disabled + }; +#else + +#ifdef USE_VIRTUAL_ANISO_FOOTPRINT + float2 dx = ddx( texcoord.xy ) * physCoord.z; + float2 dy = ddy( texcoord.xy ) * physCoord.z; + half4 YCoCg = tex2D( $physicalVmtrPagesMap1, physCoord.xy, dx, dy ); + half4 bumpPage = tex2D( $physicalVmtrPagesMap2, physCoord.xy, dx, dy ); +#else + half4 YCoCg = tex2D( $physicalVmtrPagesMap1, physCoord.xy ); + half4 bumpPage = tex2D( $physicalVmtrPagesMap2, physCoord.xy ); +#endif + +#endif + + YCoCg.z = ( YCoCg.z * 31.875 ) + 1.0; //z = z * 255.0/8.0 + 1.0 + YCoCg.z = 1.0 / YCoCg.z; + YCoCg.xy *= YCoCg.z; + + half4 diffuse; + diffuse.x = dot4( YCoCg, matrixCoCg1YtoRGB1X ); + diffuse.y = dot4( YCoCg, matrixCoCg1YtoRGB1Y ); + diffuse.z = dot4( YCoCg, matrixCoCg1YtoRGB1Z ); + diffuse.w = bumpPage.w; // virtualTransImage stores this here for best results + + // black level adjustment + float scale = 1.0 - $cbBlackLevel.x; + float bias = $cbBlackLevel.x; + + diffuse *= fragment.color; + diffuse += fragment.texcoord1; + + // use fragment.color.w instead if diffuse.w so we don't apply the premultipled alpha twice. + result.color.xyz = saturate( diffuse.xyz * scale + bias ) * fragment.color.w; + result.color.w = diffuse.w; + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/weaponvmtr.decl b/bin/base/generated/decls/renderprog/weaponvmtr.decl new file mode 100644 index 0000000..792d1e6 --- /dev/null +++ b/bin/base/generated/decls/renderprog/weaponvmtr.decl @@ -0,0 +1,68 @@ +{ + parms { + stageSort sortCoverage + + fadePerturbProgram = modelFadePerturb; + } + state { + depthfunc GL_LEQUAL + } + hlsl_vp { + #include "includes/vertex.inc" + + CALC_TEXCOORDS( result.texcoord0 ); + float4 position; + float4 normal; + float4 tangent; + float3 worldPosition; + CALC_PNT( position, normal, tangent ); + CALC_SKINNED_POSITION_NORMALS( result.position, result.texcoord1, result.texcoord2, result.texcoord3, result.texcoord4, position, normal, tangent, worldPosition ); + CALC_MUZZLE_FLASH_VECTOR( $muzzleFlashOffset, result.texcoord5 ) + } + hlsl_fp { + #include "includes/vmtr.inc" + + half4 sampleSpecular; + half4 sampleYCoCg; + half4 sampleNormal; + half2 feedbackTexCoord; + float4 feedback; + half3 surfaceDiffuse; + half3 surfaceSpecular; + half3 fromViewerN; + half3 globalNormal; + half4 globalReflection; + half4 color; + + APPLY_MODEL_FADE; + + FETCH_VMTR( sampleSpecular, sampleYCoCg, sampleNormal, feedbackTexCoord ); + CALC_VMTR_FEEDBACK( feedback, feedbackTexCoord ); + CALC_DIFFUSE_RGB( surfaceDiffuse, sampleYCoCg ); + CALC_SPECULAR_RGB( surfaceSpecular, sampleSpecular, sampleNormal.z ); + CALC_FROM_VIEWER( fromViewerN, fragment.htexcoord4.xyz ); + CALC_GLOBAL_NORMAL( globalNormal, sampleNormal, fragment.texcoord1.xyz, fragment.texcoord2.xyz, fragment.texcoord3.xyz ); + CALC_GLOBAL_REFLECTION( globalReflection, globalNormal, fromViewerN ); + + half3 diffuse = surfaceDiffuse; + half3 specular = surfaceSpecular; + + BRANCH if ( $lightingModel.x > 0 ) { + float3 fragmentXYZ; + CALC_FRAGMENT_POS( fragmentXYZ, fragment.htexcoord4.xyz ); + APPLY_LIGHTING_LOCAL( color, diffuse, specular, sampleNormal.x, globalNormal, fragmentXYZ, globalReflection ); + } else { + APPLY_GRAZING( diffuse, specular, globalNormal, fromViewerN ); + APPLY_SPECULAR_REFLECTION( specular, sampleNormal.x, globalReflection ); + APPLY_SCALING( diffuse, specular ); + APPLY_LIGHTING( color, diffuse, specular, globalNormal ); + APPLY_MUZZLE_FLASH( color, surfaceDiffuse, globalNormal, fragment.texcoord5.xyz ); + } + APPLY_HIGHLIGHT( color, fromViewerN, fragment.texcoord1, fragment.texcoord2, fragment.texcoord3 ); + + result.color0 = color; + result.color1 = feedback; + + OUTPUT_SURFACE_ATTRIBUTES( surfaceDiffuse, surfaceSpecular, sampleNormal.x, globalNormal ); + } +} \ No newline at end of file diff --git a/bin/base/generated/decls/renderprog/wireframe.decl b/bin/base/generated/decls/renderprog/wireframe.decl new file mode 100644 index 0000000..a4a3156 --- /dev/null +++ b/bin/base/generated/decls/renderprog/wireframe.decl @@ -0,0 +1,7 @@ +{ + inherit colorParmOnly + state { + alphamask + wireframe + } +} \ No newline at end of file diff --git a/bin/base/script/debug_drawtext.script b/bin/base/script/debug_drawtext.script new file mode 100644 index 0000000..0192e5a --- /dev/null +++ b/bin/base/script/debug_drawtext.script @@ -0,0 +1,25 @@ +/*********************************************************************** + +debug_drawtext.script + +Tool for drawing text in world. + +***********************************************************************/ + +object debug_drawtext { + void onTrigger( entity activator ); + + string text; // text to draw + float scale; // size of text + vector color; // color of text + float align; // 0-left, 1-center, 2-right +}; + +/* +================ +debug_drawtext::onTrigger +================ +*/ +void debug_drawtext::onTrigger( entity activator ) { + sys.drawText( text, getOrigin(), scale * 0.0545, color, align, 0.5 ); +} diff --git a/bin/base/script/script_defs.script b/bin/base/script/script_defs.script new file mode 100644 index 0000000..08dfee0 --- /dev/null +++ b/bin/base/script/script_defs.script @@ -0,0 +1,51 @@ + +#ifndef __SCRIPT_DEFS__ +#define __SCRIPT_DEFS__ + +/* +=============================================================================== + + Defines some common values and expressions used in script. + +=============================================================================== +*/ + + +#define BIT( num ) ( 1 << ( num ) ) +#define eachFrame for( 0; 1; waitFrame() ) +#define waitUntil( x ) while( !( x ) ) { waitFrame(); } + +#define GAME_FPS 60 // number of game frames per second. rendering framerate is independent of game frames. +#define GAME_FRAMETIME 0.016 // 16 milliseconds + +#define NULL 0 + +#define TRUE 1 +#define FALSE 0 +#define true 1 +#define false 0 + +#define EAST 0 +#define NORTH 90 +#define WEST 180 +#define SOUTH 270 + +#define X_AXIS 0 +#define Y_AXIS 1 +#define Z_AXIS 2 + +#define YAW 0 +#define PITCH 1 +#define ROLL 2 + +#define M_PI 3.14159265358979323846 +#define DEG2RAD( a ) ( (a) * (M_PI / 180.0f ) ) +#define RAD2DEG( a ) ( (a) * (180.0f / M_PI ) ) + +#define ALL_PARTICLES -1 // used with setSmokeVisibility + +#define JOBRESULT_OK 0 +#define JOBRESULT_PLAYER_LEFT 1 +#define JOBRESULT_ERROR 2 + +#endif diff --git a/bin/base/script/script_events.script b/bin/base/script/script_events.script new file mode 100644 index 0000000..3c87f34 --- /dev/null +++ b/bin/base/script/script_events.script @@ -0,0 +1,6306 @@ +/* +================================================================================================ +CONFIDENTIAL AND PROPRIETARY INFORMATION/NOT FOR DISCLOSURE WITHOUT WRITTEN PERMISSION +Copyright 2010 id Software LLC, a ZeniMax Media company. All Rights Reserved. +================================================================================================ +*/ +// This file has been generated with the Type Info Generator v2.6 + + +#ifndef __SCRIPT_EVENTS_SCRIPT__ +#define __SCRIPT_EVENTS_SCRIPT__ + +/* +================================================================================================ + + Script Events + +================================================================================================ +*/ + +/* ++- idEntity + |- idAASObstacle + |- idAIInteraction + |- idAIScriptedAnimWeb + |- idAITest + | +- idAITest_Rotation + |- idActionNode + |- idAnimatedEntity + | |- idAFEntity_Dummy + | |- idAFEntity_Generic + | |- idActor + | | |- idAI2 + | | +- idPlayer + | |- idAlignedEntity + | |- idAnimated + | |- idAnimatedInteractable + | |- idAnimatedSimple + | | |- idAnimatedSimplePhysics + | | +- idModifiedPlayerMovement + | |- idAnimated_AnimWeb + | | +- idPanzerHund + | |- idBinaryAnimation + | |- idDoor_Base + | | |- idDoor_Animated + | | +- idDoor_Parametric + | |- idDrone + | |- idDropShip + | |- idEditorModelEntity + | |- idMoverAttachment + | |- idMoverMM + | |- idPlayerControlled + | |- idProjectile + | | |- idProjectile_Arrow + | | | +- idProjectile_Dagger + | | |- idProjectile_DragonBreath + | | |- idProjectile_Grenade + | | | |- idProjectile_BouncyBomb + | | | +- idProjectile_EventPulser + | | |- idProjectile_Rocket + | | | +- idProjectile_Homing + | | +- idProjectile_StickyBomb + | |- idProp + | | |- idProp_MissionBoard + | | +- idProp_Usable + | | |- idProp_BreakableLoot + | | |- idProp_ContinuallyUsed + | | | +- idProp_BatteryChargePoint + | | |- idProp_JobPosting + | | |- idProp_Moveable + | | | |- idProp_AIArmor + | | | | +- idProp_ElectricArmor + | | | |- idProp_AmmoRefill + | | | |- idProp_Breakable + | | | | +- idProp_VehicleJump + | | | |- idProp_CombineItem + | | | |- idProp_Explosive + | | | |- idProp_ExplosivePlunger + | | | |- idProp_GameStateInt + | | | |- idProp_HealthPickup + | | | |- idProp_Loot + | | | |- idProp_Noticable + | | | |- idProp_OnlineCollectible + | | | |- idProp_Secret + | | | |- idProp_Spawnable + | | | +- idProp_VehiclePickup + | | | |- idProp_Boost + | | | |- idProp_VehicleAmmo + | | | +- idProp_VehicleArmor + | | |- idProp_PlayerInteraction + | | |- idProp_Static + | | | +- idProp_WeaponStatic + | | +- idProp_Zipline + | |- idRaceSpectator + | |- idRobot + | |- idSplineFollower + | |- idSpringEntity + | |- idTestAnimWeb + | |- idTestModel2 + | |- idTestRollBones + | |- idTurret + | | |- idRailTurret + | | +- idTowerTurret + | |- idTurretGunner + | |- idVehicle + | | +- idVehicle_Car + | |- idVehicleMountedTurret + | +- idVehicleOccupant + | |- idVehicleOccupant_ATV + | |- idVehicleOccupant_Car + | +- idVehicleOccupant_Event + |- idAnnouncementManager + |- idBinaryModel + |- idBreakable + |- idCamera + | |- idCameraView + | | |- idAnimCamera + | | |- idDeathCamera + | | | +- idOnlineVehicleDeathCamera + | | |- idFreeCamera + | | |- idRCBombDeathCamera + | | |- idRaceCamera + | | |- idRaceCountdownCamera + | | |- idRaceDeathCamera + | | |- idReviveCamera + | | |- idSpectatorCamera + | | +- idThrownCamera + | |- idInteractionCamera + | |- idSpringCamera + | +- idUtilityCamera + | |- idEntityCamera + | | |- idAIDebugCamera + | | |- idCinematicCamera + | | |- idSlowMotionCamera + | | |- idTownGarageCamera + | | +- idTrailerCamera + | +- idRotatableCamera + |- idCaptureController + |- idCollisionStreamArea + |- idCoopStartingInventory + |- idCoverBlocker + |- idCuttable + |- idDamageableEntity + |- idDoor_Blocker + |- idDummyGarbageDontUse + |- idDynamicEntity + | |- idAlarm + | |- idDebrisEntity + | |- idElectricBoltEmitter + | |- idEntityFx + | |- idEntityImposter + | |- idGuiEntity + | |- idLensFlare + | |- idParticleEmitter + | |- idRegimeTile + | |- idRibbonEmitter + | |- idTumbleWeed + | +- idWaterRippleEmitter + |- idDynamicJob + |- idDynamicSceneEntity + |- idEncounterGroupMgr + |- idEntityEmitter + |- idEntityParticle + |- idExplodable + |- idFirstPersonEvent + | +- idFirstPersonPickup + |- idFuncChain + |- idFuncChainGroup + |- idFuncCloth + |- idFuncRotate + |- idFuncShadowCaster + |- idFuncSwing + |- idFuncWind + |- idGameChallenge + | |- idGameChallenge_Coop + | +- idGameChallenge_PVP + | +- idGameChallenge_DM + | |- idGameChallenge_DM_FFA + | +- idGameChallenge_DM_TDM + |- idGodRays + |- idHorizonScale + |- idInfo + | |- idAIHint + | | |- idAIAASHint + | | | |- idAISearchHintAnimation + | | | +- idAISearchHintAuto + | | |- idAIBackStandHint + | | +- idAICombatHint + | | +- idAICombatHint_SuppressionFirePoint + | |- idAIHintGroup + | | |- idAISearchHintGroup + | | +- idTurretSpawnerControlGroup + | |- idInfoAmbient + | |- idInfoCloudShot + | |- idInfoCover + | |- idInfoDebugMarker + | |- idInfoDebugText + | | +- idInfoDebugMapName + | |- idInfoDevComment + | |- idInfoExportHint + | |- idInfoGarageBay + | |- idInfoLinkSegment + | |- idInfoLookTarget + | |- idInfoLookTargetGroup + | |- idInfoNavExclusionVolume + | |- idInfoNavFlightVolume + | |- idInfoNavInclusionVolume + | |- idInfoNavIslandMarker + | |- idInfoNavObstacle + | |- idInfoNavRepulsor + | |- idInfoOrbit + | |- idInfoPath + | |- idInfoRoam + | |- idInfoSpawnPoint + | |- idInfoSplineChild + | |- idInfoStaticReflection + | |- idInfoTexLod + | |- idInfoTowLocation + | |- idInfoTraversal + | |- idInfoTraversalEndPoint + | |- idInfoVehicleObstacle + | |- idInfoZiplineTarget + | |- idInfo_TraversalPoint + | | +- idInfo_TraversalChain + | |- idInfo_Trigger_Facing_Target + | |- idScenePoint + | | |- idScenePoint_Arc + | | | |- idScenePoint_Combat + | | | |- idScenePoint_Look + | | | +- idScenePoint_Search + | | +- idScenePoint_Roam + | |- idScenePoint_UserGroup + | +- idTownGarageManager + |- idInfoAAS + |- idInfoFocus + |- idInfoLevelFadeIn + |- idInformationEntity + |- idInventoryStorage + |- idLaserGate + |- idLight + | |- idBuildArea + | +- idEnvArea + |- idLoot_Blocker + |- idLoot_ItemCase + |- idMover + |- idMoverModifier + |- idPathCorner + |- idPieceEmitter + |- idProgressionEntity + |- idRandomLoot + |- idReferenceMap + |- idRoamSpawn + |- idScriptMapEntity + |- idSound + |- idSoundDoor + |- idSoundEnvironment + |- idSpawnNode + | |- idPlayerStart + | |- idSpawnArea + | |- idSpawnNodeSplines + | +- idSpawnPoint + |- idSplinePath + | |- idLedge + | |- idNavSplinePath + | | |- idAISplinePath + | | +- idQuestNavSplinePath + | +- idSplinePathWithOrientation + |- idSplinePathMM + |- idStaticEntity + |- idTarget_AICommand + |- idTarget_AIEvent + |- idTarget_Achievement + |- idTarget_ActionNode + |- idTarget_ActionScript + |- idTarget_AddAggression + |- idTarget_AnimWebChangeState + |- idTarget_AnimWebChangeStateVia + |- idTarget_AnimWebPause + |- idTarget_AnimWebUnpause + |- idTarget_ApplyExplosionImpulse + |- idTarget_ApplyImpulse + |- idTarget_AssignVehicle + |- idTarget_AttachItem + |- idTarget_Bink + |- idTarget_Break + |- idTarget_C01_TurretFight + |- idTarget_ChangeAnimState + |- idTarget_ChangeColor + |- idTarget_ChangeSeatInfo + |- idTarget_ClearFakeEnemy + |- idTarget_CollisionDamage + |- idTarget_CompleteGame + |- idTarget_Conditional + |- idTarget_ConditionalAccessor + |- idTarget_CoopGiveScore + |- idTarget_CoopObjectiveTracker + |- idTarget_Count + |- idTarget_Count_Random + |- idTarget_Cvar + |- idTarget_Damage + |- idTarget_DeactivateDoor + |- idTarget_Disconnect + |- idTarget_Door + |- idTarget_DummyFire + |- idTarget_DynamicVehicleAiController + |- idTarget_EnableAIEvent + |- idTarget_EnableBlink + |- idTarget_EnableGroup + |- idTarget_Enemy + |- idTarget_EquipItem + |- idTarget_FadeSoundChannel + |- idTarget_FadeSoundGroup + |- idTarget_FakeEnemy + |- idTarget_FirstThinkActivate + |- idTarget_ForceDormancy + |- idTarget_GameChallengeGameOver + |- idTarget_GameChallengeSetState + |- idTarget_GameStateIntInc + |- idTarget_GameStateIntSet + |- idTarget_GiveItems + |- idTarget_GiveJobNote + |- idTarget_GiveSpecialEvent + |- idTarget_GiveSpecialEvent_Area + |- idTarget_GroupExpression + |- idTarget_GroupMessage + |- idTarget_Hide + |- idTarget_HideShowHands + |- idTarget_HideShowMesh + |- idTarget_InhibitControl + |- idTarget_InventoryCheck + |- idTarget_Job + |- idTarget_JobTimerGiveMoney + |- idTarget_JobTimerIncrementScore + |- idTarget_JobTimerStart + |- idTarget_JobTimerStop + |- idTarget_JobTriggered + |- idTarget_LayerChange + |- idTarget_LayerChange2 + |- idTarget_LayerCheckpointModifier + |- idTarget_LayerStateChange + |- idTarget_LevelTransition + |- idTarget_LockDoor + |- idTarget_MakeActivatable + |- idTarget_ModifyGroup + |- idTarget_ModifyTraversalClass + |- idTarget_MoveToScenePoint + |- idTarget_MultiSound + |- idTarget_NextMap + |- idTarget_Path + |- idTarget_PauseAnim + |- idTarget_PlayAnim + |- idTarget_PlayVideo + |- idTarget_PlayVoiceOver + |- idTarget_PlayerCheckpoint + |- idTarget_PlayerCrouch + |- idTarget_PlayerLoadSpecialWeapon + |- idTarget_PlayerOverrideFocus + |- idTarget_PlayerStatModifier + |- idTarget_PlayerVehicleExit + |- idTarget_PlayerViewEffect + |- idTarget_PlayerWhiplash + |- idTarget_Print + |- idTarget_Remove + |- idTarget_RemoveItems + |- idTarget_RemoveJobNote + |- idTarget_RestartMapForMissionFailure + |- idTarget_SetAISolidState + |- idTarget_SetGroupCombatStage + |- idTarget_SetHelp + |- idTarget_SetHudElement + |- idTarget_SetInEncounterGroup + |- idTarget_SetOverrideScenePoint + |- idTarget_SetRestrictionVolume + |- idTarget_SetSceneModelFlag + |- idTarget_SetSpawnSpot + |- idTarget_SetUsable + |- idTarget_SetWorldSpawnAIUsesCoverFalse + |- idTarget_ShakeTrigger + |- idTarget_Show + |- idTarget_ShowGui + |- idTarget_ShowTargetHealth + |- idTarget_SoundDuck + |- idTarget_Spawn + |- idTarget_Spawn_Target + |- idTarget_StartSoundShader + |- idTarget_SwapFaction + |- idTarget_Teleport + |- idTarget_Test + | |- idTarget_TestActivation + | |- idTarget_TestCommand + | |- idTarget_TestEntity + | | +- idTarget_TestEntityBool + | |- idTarget_TestExit + | |- idTarget_TestInstruction + | |- idTarget_TestOverrideStatus + | |- idTarget_TestScreenCompare + | |- idTarget_TestScreenShot + | +- idTarget_TestShotsFired + |- idTarget_TestPlayerState + |- idTarget_TimedEvents + |- idTarget_Timeline + |- idTarget_Timer + |- idTarget_ToggleTraversal + |- idTarget_Turret_BlockCooldown + |- idTarget_TutorialGui + |- idTarget_UnlockDoor + |- idTarget_UnlockMap + |- idTarget_UnlockSecret + |- idTarget_UpdateVehicleKey + |- idTarget_Use + |- idTarget_VehicleAi + |- idTestEntity + |- idTest_AimPoint + |- idTest_ConeConstraint + |- idTest_MetaData_Bounds + |- idTest_MetaData_Circle + |- idTest_MetaData_Cylinder + |- idTest_MetaData_Cylinder2 + |- idTest_MetaData_Fov + |- idTest_MetaData_FovPitch + |- idTest_MetaData_FovYaw + |- idTest_MetaData_Line + |- idTest_MetaData_Model + |- idTest_MetaData_MoveableSpheres + |- idTest_MetaData_Plane + |- idTest_MetaData_SectorPitch + |- idTest_MetaData_SectorYaw + |- idTest_MetaData_String + |- idTest_MetaData_Target + |- idTest_MetaData_WebPath + |- idTest_RandomAimPoint + |- idTest_RotationTracker + |- idTest_Sector + |- idTrigger + | |- idMultiplayerTrigger + | | +- idMultiplayerTrigger_BoostPad + | |- idSoundTrigger + | |- idTrigger_AIInteraction + | |- idTrigger_BoostPad + | |- idTrigger_Damage + | | +- idTrigger_TakeDamage + | |- idTrigger_DamageType + | |- idTrigger_DummyFire + | |- idTrigger_EventListener + | |- idTrigger_Exit + | | +- idTrigger_AIGroupsExit + | |- idTrigger_Facing + | |- idTrigger_GameChallenge + | |- idTrigger_Hurt + | |- idTrigger_Multiplayer + | |- idTrigger_OpenDoor + | |- idTrigger_PlayerIndefiniteSprint + | |- idTrigger_RemoveEntities + | |- idTrigger_SaveGame + | |- idTrigger_TestPlayerState + | |- idTrigger_TurretFireArea + | |- idTrigger_VehicleAI + | |- idTrigger_VehicleUse + | +- idTrigger_WastelandTownEnter + |- idUse + | |- idCombiner + | |- idMinigame + | |- idPropSmartLoot + | |- idProp_MissionPin + | |- idUseFirstPersonEvent + | |- idUseLedge + | +- idUseWallClimb + |- idVehicleAI + |- idVolume + | |- idAIDeathVolume + | |- idBounceSparks + | |- idCombatVolume + | |- idDoor_Laser + | |- idPerceptionVolume + | |- idVolume_DamageMultiplier + | |- idVolume_DynamicJob + | |- idVolume_EnterExit + | |- idVolume_ForceDormant + | |- idVolume_ItemGroup + | |- idVolume_KillDownedInjured + | |- idVolume_LocationCalling + | |- idVolume_PlayerEnvOverride + | |- idVolume_PlayerInteraction + | |- idVolume_PlayerViewEffect + | |- idVolume_RegimeRegenerate + | |- idVolume_Repairs + | |- idVolume_Restriction + | |- idVolume_RunCycleHint + | |- idVolume_ScenePoints + | |- idVolume_ShowGui_Leveltransition + | +- idVolume_Stairs + |- idWallClimb + |- idWaterEntity + | |- idDynamicWaterEntity + | +- idStaticWaterEntity + |- idWaypoint + | +- idSplineWaypoint + | +- idDroneSplineWaypoint + |- idWindEmitter + |- idWorldClipBounds + |- idWorldDestructibleEntity + |- idWorldspawn + |- mgFuncSaveGame + |- mgFunc_CaptureDemo + |- mgFunc_CaptureFrames + |- mgFunc_RecordDemo + |- mgFunc_StopCapture + |- mgFunc_StopDemo + +- mgTimelineController +*/ + +#define AGGREGATE_MIN 0 // Write the new value if it is less than the existing value. +#define AGGREGATE_MAX 1 // Write the new value if it is greater than the existing value. +#define AGGREGATE_SUM 2 // Add the new value to the existing value and write the result. +#define AGGREGATE_LAST 3 // Write the new value. + +#define BUTTON_INVALID 0 +#define BUTTON_ATTACK1 1 +#define BUTTON_ATTACK2 2 +#define BUTTON_USE 4 +#define BUTTON_ZOOM 8 +#define BUTTON_USE_AND_RELOAD 32 +#define BUTTON_SPRINT 16 +#define BUTTON_CHANGEWEAPON 64 +#define BUTTON_WEAP_RELOAD 128 +#define BUTTON_WEAP_NEXT 256 +#define BUTTON_WEAP_PREV 512 +#define BUTTON_WEAP_0 1024 +#define BUTTON_WEAP_1 2048 +#define BUTTON_WEAP_2 4096 +#define BUTTON_WEAP_3 8192 +#define BUTTON_WEAP_4 16384 +#define BUTTON_WEAP_5 32768 +#define BUTTON_WEAP_NEXT_IN_INV 65536 +#define BUTTON_WEAP_PREV_IN_INV 131072 +#define BUTTON_WEAP_PREV_EQUIPPED 262144 +#define BUTTON_TOGGLEDUALWIELD 1048576 +#define BUTTON_QUICK_USE 2097152 +#define BUTTON_QUICK_SELECT 4194304 +#define BUTTON_COVERMODE 8388608 +#define BUTTON_CYCLE_TARGET 16777216 +#define BUTTON_SCOREBOARD 67108864 +#define BUTTON_INVENTORY 134217728 +#define BUTTON_SWITCH_POS 33554432 +#define BUTTON_TOGGLEFIREMODE_LEFT 268435456 +#define BUTTON_TOGGLEFIREMODE_RIGHT 536870912 +#define BUTTON_NEXT_QUICK_ITEM 1 +#define BUTTON_PREV_QUICK_ITEM 2 + +#define HIGHLIGHT_COLOR_NONE 0 +#define HIGHLIGHT_COLOR_USE 1 +#define HIGHLIGHT_COLOR_ITEM 2 +#define HIGHLIGHT_COLOR_LOOT 3 +#define HIGHLIGHT_COLOR_EXPLODE 4 +#define HIGHLIGHT_COLOR_MAX 5 + +#define HIGHLIGHT_FREQ_NORMAL 0 +#define HIGHLIGHT_FREQ_FAST 1 + +#define JOINTMOD_NONE 0 // no modification +#define JOINTMOD_LOCAL 1 // modifies the joint's position or orientation in joint local space +#define JOINTMOD_LOCAL_OVERRIDE 2 // sets the joint's position or orientation in joint local space +#define JOINTMOD_MODEL 3 // modifies joint's position or orientation in model space +#define JOINTMOD_MODEL_OVERRIDE 4 // sets the joint's position or orientation in model space +#define JOINTMOD_PARENT_OVERRIDE 5 + +#define SND_CHANNEL_ANY 0 +#define SND_CHANNEL_VOICE 1 +#define SND_CHANNEL_VOICE2 2 +#define SND_CHANNEL_BODY 3 +#define SND_CHANNEL_BODY2 4 +#define SND_CHANNEL_BODY3 5 +#define SND_CHANNEL_WEAPON 6 +#define SND_CHANNEL_WEAPON2 7 +#define SND_CHANNEL_WEAPON3 8 +#define SND_CHANNEL_WEAPON4 9 +#define SND_CHANNEL_WEAPON5 10 +#define SND_CHANNEL_WEAPON6 11 +#define SND_CHANNEL_WEAPON7 12 +#define SND_CHANNEL_WEAPON8 13 +#define SND_CHANNEL_WEAPON9 14 +#define SND_CHANNEL_WEAPON_AMBIENT 15 +#define SND_CHANNEL_WEAPON_AMBIENT2 16 +#define SND_CHANNEL_WEAPON_LOOP 17 // for looping fire sounds +#define SND_CHANNEL_WEAPON_LOOP_SOUND1 18 +#define SND_CHANNEL_WEAPON_LOOP_SOUND2 19 +#define SND_CHANNEL_WEAPON_LOOP_LEFT_HAND 20 // for looping fire sounds (second channel, left hand gun) +#define SND_CHANNEL_WEAPON_LOOP_LH_SOUND1 21 +#define SND_CHANNEL_WEAPON_LOOP_LH_SOUND2 22 +#define SND_CHANNEL_ITEM 23 +#define SND_CHANNEL_ITEM2 24 +#define SND_CHANNEL_BREATHE 25 +#define SND_CHANNEL_HEARTBEAT1 26 +#define SND_CHANNEL_HEARTBEAT2 27 +#define SND_CHANNEL_GENERIC_AMBIENT 28 // Catch-all for sounds that don't fit into the above categories +#define SND_CHANNEL_WEAPON_ALERT 29 +#define SND_CHANNEL_ENVIRONMENTAL_HAZARD 30 +#define SND_CHANNEL_ENGINE_IDLE 31 +#define SND_CHANNEL_ENGINE_LOADED 32 +#define SND_CHANNEL_ENGINE_UNLOADED 33 +#define SND_CHANNEL_ENGINE_DAMAGE 34 +#define SND_CHANNEL_ENGINE_EXPLOSION 35 +#define SND_CHANNEL_ENGINE_FIRE 36 +#define SND_CHANNEL_SURFACE_ROLL 37 +#define SND_CHANNEL_SURFACE_SLIDE 38 +#define SND_CHANNEL_SURFACE_SCRAPE 39 +#define SND_CHANNEL_SURFACE_TIRE_SCRAPE 40 +#define SND_CHANNEL_SURFACE_BODY_SCRAPE 41 +#define SND_CHANNEL_WIND 42 +#define SND_CHANNEL_WIND2 43 +#define SND_CHANNEL_WIND3 44 +#define SND_CHANNEL_WIND4 45 +#define SND_CHANNEL_CRASH 46 +#define SND_CHANNEL_COLLIDE 47 +#define SND_CHANNEL_EXPLODE 48 +#define SND_CHANNEL_BOOST 49 // normal boosting sound +#define SND_CHANNEL_BOOST2 50 // additional jet sound on top of boost +#define SND_CHANNEL_BOOST3 51 // ran out (need a separate channel to lerp the other two down) +#define SND_CHANNEL_WATER 52 +#define SND_CHANNEL_STEERING 53 +#define SND_CHANNEL_MUSIC1 54 +#define SND_CHANNEL_MUSIC2 55 +#define SND_CHANNEL_MUSIC3 56 +#define SND_CHANNEL_DOOR 57 +#define SND_CHANNEL_WEAPON_1 58 +#define SND_CHANNEL_WEAPON_2 59 +#define SND_CHANNEL_TIREWOBBLE 60 +#define SND_CHANNEL_TIRE_BUMP 61 +#define SND_CHANNEL_VEH_SHIFT_DOWN 62 +#define SND_CHANNEL_VEH_SHIFT_UP 63 +#define SND_CHANNEL_VEH_BRAKE 64 +#define SND_CHANNEL_ALERT 65 +#define SND_CHANNEL_REPAIR 66 +#define SND_CHANNEL_THROW_ACTOR 67 +#define SND_CHANNEL_AMBIENT 68 +#define SND_CHANNEL_DAMAGE 69 +#define SND_CHANNEL_DEBUG 70 +#define SND_CHANNEL_FX 71 +#define SND_CHANNEL_QUAD_FIRE_LOOP 72 +#define SND_CHANNEL_QUAD_FIRE 73 +#define SND_CHANNEL_QUAD_FIRE2 74 +#define SND_CHANNEL_QUAD_FIRE3 75 +#define SND_CHANNEL_AI_STALK_ENEMY 76 +#define SND_CHANNEL_JET_PACK 77 +#define SND_CHANNEL_SYNC_MELEE_1 78 +#define SND_CHANNEL_SYNC_MELEE_2 79 +#define SND_CHANNEL_SYNC_MELEE_3 80 +#define SND_CHANNEL_LOW_HEALTH 81 +#define SND_CHANNEL_SPECIAL_FIRE_LOOP 82 +#define SND_CHANNEL_SPECIAL_FIRE 83 +#define SND_CHANNEL_SPECIAL_FIRE2 84 +#define SND_CHANNEL_SPECIAL_FIRE3 85 +#define SND_CHANNEL_ABILITY 86 +#define SND_CHANNEL_GAMECHALLENGE 87 +#define SND_CHANNEL_GAMECHALLENGE_LOOP 88 +#define NUM_SND_CHANNELS 89 + +#define FX_NONE 0 +#define FX_VEH_START_BOOST 1 +#define FX_VEH_STOP_BOOST 2 +#define FX_VEH_START_BOOST2 3 +#define FX_VEH_STOP_BOOST2 4 +#define FX_VEH_START_BOOST3 5 +#define FX_VEH_STOP_BOOST3 6 +#define FX_VEH_START_PUSH 7 +#define FX_VEH_STOP_PUSH 8 +#define FX_VEH_MEGABOOST 9 +#define FX_VEH_QUAD_DAMAGE 10 +#define FX_VEH_TELEPORTER 11 +#define FX_VEH_START_STOMP 12 +#define FX_VEH_STOP_STOMP 13 +#define FX_VEH_START_SLAM 14 +#define FX_VEH_START_SHOCKWAVE 15 +#define FX_VEH_STOP_SHOCKWAVE 16 +#define FX_VEH_START_AFTERSHOCKER 17 +#define FX_VEH_STOP_AFTERSHOCKER 18 +#define FX_VEH_START_MONSTERBASHER 19 +#define FX_VEH_STOP_MONSTERBASHER 20 +#define FX_VEH_START_ARMOR_RESTORE 21 +#define FX_VEH_START_JUMP 22 +#define FX_VEH_START_SLIDE 23 +#define FX_VEH_STOP_SLIDE 24 +#define FX_VEH_START_SMASH 25 +#define FX_VEH_STOP_SMASH 26 +#define FX_VEH_RALLY_CAP 27 +#define FX_VEH_RALLY_CAP_3 28 +#define FX_VEH_EMP_VICTIM 29 +#define FX_VEH_EMP_INITIATED 30 +#define FX_DRONE_FORWARD_THRUSTER 31 +#define FX_DRONE_START_AFTERBURNER 32 +#define FX_DRONE_STOP_AFTERBURNER 33 +#define FX_DRONE_START_SCANNER 34 +#define FX_DRONE_STOP_SCANNER 35 +#define FX_HOVERTURRET 36 +#define FX_CAPTURE_SKULL 37 +#define FX_HOVERTURRET_FIRE 38 +#define FX_HOVERTURRET_DESTROYED 39 +#define FX_START_MARKER 40 +#define FX_TRI_RALLY_3_START 41 +#define FX_METEOR_START_MARKER 42 +#define FX_TOUCH_MARKER 43 +#define FX_TOUCH_MARKER_THIRD 44 +#define FX_VEH_METEOR 45 +#define FX_CHANGE_TEAM 46 +#define FX_START_DAMAGE_LEVEL_1 47 +#define FX_STOP_DAMAGE_LEVEL_1 48 +#define FX_START_DAMAGE_LEVEL_2 49 +#define FX_STOP_DAMAGE_LEVEL_2 50 +#define FX_START_DAMAGE_LEVEL_3 51 +#define FX_STOP_DAMAGE_LEVEL_3 52 +#define FX_START_DAMAGE_LEVEL_4 53 +#define FX_STOP_DAMAGE_LEVEL_4 54 +#define FX_WEAPON_START_FIRE 55 +#define FX_WEAPON_START_FIRE_LEFT 56 +#define FX_WEAPON_START_FIRE_RIGHT 57 +#define FX_WEAPON_START_THIRD_PERSON_FIRE 58 +#define FX_WEAPON_START_FIRE_QUAD 59 +#define FX_WEAPON_START_THIRD_PERSON_FIRE_QUAD 60 +#define FX_WEAPON_STOP_FIRE 61 +#define FX_WEAPON_STOP_FIRE_LEFT 62 +#define FX_WEAPON_STOP_FIRE_RIGHT 63 +#define FX_WEAPON_START_SHELL_EJECT 64 +#define FX_WEAPON_BEGIN_RAISE 65 +#define FX_WEAPON_RELOAD 66 +#define FX_WEAPON_UNLOAD_AMMO 67 +#define FX_WEAPON_CHAMBER_AMMO 68 +#define FX_WEAPON_LOW_AMMO 69 +#define FX_WEAPON_NO_AMMO 70 +#define FX_WEAPON_START_ZOOM 71 +#define FX_WEAPON_END_ZOOM 72 +#define FX_WEAPON_LASERCUTTER_STARTCUTTING 73 +#define FX_WEAPON_LASERCUTTER_STOPCUTTING 74 +#define FX_WEAPON_LASERCUTTER_STARTENDPOINT 75 +#define FX_WEAPON_LASERCUTTER_STOPENDPOINT 76 +#define FX_WEAPON_LASERCUTTER_STARTCUTINDICATION 77 +#define FX_WEAPON_LASERCUTTER_STOPCUTINDICATION 78 +#define FX_WEAPON_LASERCUTTER_STARTCHARGE 79 +#define FX_WEAPON_LASERCUTTER_STOPCHARGE 80 +#define FX_WEAPON_LASERCUTTER_STARTSHOOTINGFAIL 81 +#define FX_WEAPON_LASERCUTTER_STOPSHOOTINGFAIL 82 +#define FX_LASER_ON 83 +#define FX_LASER_OFF 84 +#define FX_BFG_POWER_DOWN 85 +#define FX_PROJECTILE_LAUNCH 86 +#define FX_PROJECTILE_TRAIL 87 +#define FX_PROJECTILE_BREAK 88 +#define FX_PROJECTILE_STOP 89 +#define FX_PROJECTILE_EXPLODE 90 +#define FX_PROJECTILE_EXPLODE_DEFAULT 91 +#define FX_PROJECTILE_EXPLODE_BLOOD_POOL 92 +#define FX_PROJECTILE_EXPLODE_SLUDGE 93 +#define FX_PROJECTILE_EXPLODE_DIRT 94 +#define FX_PROJECTILE_EXPLODE_PLASTIC 95 +#define FX_PROJECTILE_EXPLODE_GLASS 96 +#define FX_PROJECTILE_EXPLODE_WATER 97 +#define FX_PROJECTILE_EXPLODE_WOOD 98 +#define FX_PROJECTILE_EXPLODE_STONE 99 +#define FX_PROJECTILE_EXPLODE_METAL 100 +#define FX_PROJECTILE_EXPLODE_AIR 101 +#define FX_PROJECTILE_EXPLODE_ASPHALT 102 +#define FX_AI_HEADSHOT 103 +#define FX_AI_DMG_BLOOD 104 +#define FX_AI_DMG_SMOKE 105 +#define FX_AI_DMG_TANK 106 // used for when the tank on the jet guy should shoot off a flame spout +#define FX_AI_START_DMG_ELECTROCUTE 107 +#define FX_AI_STOP_DMG_ELECTROCUTE 108 +#define FX_AI_IMPALED 109 +#define FX_AI_BFG_EXPLODE 110 +#define FX_PROP_SPAWN 111 +#define FX_PROP_PICKUP 112 +#define FX_PROP_USE 113 +#define FX_PROP_STOP_USE 114 +#define FX_PROP_BREAK 115 +#define FX_PROP_EXPLODE 116 +#define FX_PROP_DAMAGE 117 +#define FX_ZIPLINE_SPEED_SLOW 118 +#define FX_ZIPLINE_SPEED_MED 119 +#define FX_ZIPLINE_SPEED_FAST 120 +#define FX_ZIPLINE_SPEED_LUDICROUS 121 +#define FX_ZIPLINE_SPEED_SLOW_REVERSE 122 +#define FX_ZIPLINE_SPEED_MED_REVERSE 123 +#define FX_ZIPLINE_SPEED_FAST_REVERSE 124 +#define FX_ZIPLINE_SPEED_LUDICROUS_REVERSE 125 +#define FX_START_ON_FIRE 126 +#define FX_STOP_ON_FIRE 127 +#define FX_START_SURFACESWIMSTROKE_LEFT 128 +#define FX_START_SURFACESWIMSTROKE_RIGHT 129 +#define FX_START_SUBSURFACESWIMSTROKE_LEFT 130 +#define FX_START_SUBSURFACESWIMSTROKE_RIGHT 131 +#define FX_STOP_SWIMSTROKE 132 +#define FX_START_DEATH_1 133 +#define FX_START_DEATH_2 134 +#define FX_START_DEATH_3 135 +#define FX_START_DEATH_4 136 +#define FX_CINEMATIC_1 137 +#define FX_CINEMATIC_2 138 +#define FX_CINEMATIC_3 139 +#define FX_CINEMATIC_4 140 +#define FX_CINEMATIC_5 141 +#define FX_CINEMATIC_6 142 +#define FX_CINEMATIC_7 143 +#define FX_CINEMATIC_8 144 +#define FX_CINEMATIC_9 145 +#define FX_CINEMATIC_10 146 +#define FX_LASERGATE_ON_0L 147 +#define FX_LASERGATE_ON_0R 148 +#define FX_LASERGATE_ON_1L 149 +#define FX_LASERGATE_ON_1R 150 +#define FX_LASERGATE_ON_2L 151 +#define FX_LASERGATE_ON_2R 152 +#define FX_LASERGATE_ON_3L 153 +#define FX_LASERGATE_ON_3R 154 +#define FX_LASERGATE_ON_4L 155 +#define FX_LASERGATE_ON_4R 156 +#define FX_LASERGATE_ON_5L 157 +#define FX_LASERGATE_ON_5R 158 +#define FX_LASERGATE_ON_6L 159 +#define FX_LASERGATE_ON_6R 160 +#define FX_LASERGATE_OFF_0L 161 +#define FX_LASERGATE_OFF_0R 162 +#define FX_LASERGATE_OFF_1L 163 +#define FX_LASERGATE_OFF_1R 164 +#define FX_LASERGATE_OFF_2L 165 +#define FX_LASERGATE_OFF_2R 166 +#define FX_LASERGATE_OFF_3L 167 +#define FX_LASERGATE_OFF_3R 168 +#define FX_LASERGATE_OFF_4L 169 +#define FX_LASERGATE_OFF_4R 170 +#define FX_LASERGATE_OFF_5L 171 +#define FX_LASERGATE_OFF_5R 172 +#define FX_LASERGATE_OFF_6L 173 +#define FX_LASERGATE_OFF_6R 174 +#define FX_STOP_LEFT_HAND_FX 175 +#define FX_STOP_RIGHT_HAND_FX 176 +#define FX_PLAYER_VIEW_HIT 177 +#define FX_REPAIRBOT_LEFT_WELDER 178 +#define FX_REPAIRBOT_RIGHT_WELDER 179 +#define FX_REPAIRBOT_REAR_THRUSTER 180 +#define FX_REPAIRBOT_EXPLODE1 181 +#define FX_REPAIRBOT_EXPLODE2 182 +#define FX_REPAIRBOT_ON_FIRE 183 +#define FX_REPAIRBOT_SMOKE_TRAIL 184 +#define FX_FFF_START_BLOOD 185 +#define FX_FFF_START_TABLE_STAB 186 +#define FX_EXPLODABLE_EXPLODE 187 +#define FX_EXPLODABLE_STEAM_01 188 +#define FX_EXPLODABLE_STEAM_02 189 +#define FX_EXPLODABLE_STEAM_03 190 +#define FX_EXPLODABLE_STEAM_04 191 +#define FX_HEAD_SHOT 192 +#define FX_ABILITY_ACTIVATION_SUCCESS 193 +#define FX_ABILITY_ACTIVATION_END 194 +#define FX_ABILITY_ACTIVATION_SUCCESS_LOCAL 195 +#define FX_ABILITY_ACTIVATION_END_LOCAL 196 +#define FX_SUMMON_DEMON_IMP 197 +#define FX_MAX_CONDITIONS 198 + +#define CONTENTS_SOLID 1 // an eye is never valid in a solid +#define CONTENTS_OPAQUE 2 // blocks visibility (for ai) +#define CONTENTS_WATER 4 // used for water +#define CONTENTS_PLAYERCLIP 8 // solid to players +#define CONTENTS_MONSTERCLIP 16 // solid to monsters +#define CONTENTS_VEHICLECLIP 32 // solid to vehicles +#define CONTENTS_MOVEABLECLIP 64 // solid to moveable entities +#define CONTENTS_SHOTCLIP 128 // solid to projectiles +#define CONTENTS_IKCLIP 256 // solid to IK +#define CONTENTS_AIAWARE 512 // other things AIs want to detect so they can shoot or use it +#define CONTENTS_AI 1024 // used for AIs +#define CONTENTS_PROJECTILE 2048 // used for projectiles +#define CONTENTS_CORPSE 4096 // used for dead bodies +#define CONTENTS_BREAKABLE 8192 // breakable +#define CONTENTS_TRIGGER 16384 // used for triggers +#define CONTENTS_PLAYER 32768 // used for players +#define CONTENTS_VEHICLE 65536 // used for vehicles +#define CONTENTS_OBSTACLE 131072 // used to indicate to obstacle avoidance code whether to consider an entity an obstacle +#define CONTENTS_CONTEXTUALCOVER_CLIP 262144 // solid to the contextual cover system +#define CONTENTS_PLAYERCOVERCLIP 524288 // considered opaque for purposes of player taking cover +#define CONTENTS_MONSTERCOVERCLIP 1048576 // considered opaque for purposes of AI taking cover +#define CONTENTS_PLAYERFOCUS 2097152 // considered lootable and usable by the focustracker +#define CONTENTS_PUSHABLE 4194304 // can be pushed (needs to be a bit instead of only a bool flag so objects we would've had a 0 contents, it would be a physicsStatic object) +#define CONTENTS_SHIELD 8388608 // Authority shields +#define CONTENTS_TICKCLIP 16777216 // solid to ticks only (intended for water presentation) - deprecate? +#define CONTENTS_AAS_FLY 33554432 // Fly AAS +#define CONTENTS_AAS_SOLID 67108864 // solid for AAS +#define CONTENTS_AAS_OBSTACLE 134217728 // used to compile an obstacle into AAS that can be enabled/disabled +#define CONTENTS_AAS_CLUSTER_PORTAL 268435456 // used to define a cluster portal area in the AAS +#define CONTENTS_AAS_WALKABLE_WALL 536870912 // used to define a wall (or ceiling) which is walkable in the AAS +#define CONTENTS_NOCOVER 1073741824 // don't place any cover points within this brush +#define CONTENTS_DO_NOT_USE -2147483648 // this should never be set explicitly except by idClipModel::Init() and is used only to catch cases where a clip model's contents are not set + +#define SET_DEFAULT 0 +#define SET_INDOOR_SMALL_ROOM 1 +#define SET_INDOOR_MID_ROOM 257 +#define SET_INDOOR_LARGE_ROOM 513 +#define SET_INDOOR_LARGE_HALL 769 +#define SET_INDOOR_CORIDOR 2049 +#define SET_OUTDOOR_OPEN_SPACE 2 +#define SET_OUTDOOR_COURT_YARD 514 +#define SET_OUTDOOR_SINGLE_WALL 770 + +#define AAS_MONSTER16 0 +#define AAS_MONSTER24 1 +#define AAS_MONSTER32 2 +#define AAS_MONSTER48 3 +#define AAS_MONSTER96 4 +#define AAS_MONSTER128 5 +#define AAS_MONSTER160 6 +#define AAS_VEHICLE 7 +#define AAS_FILE_EXTENSION_MAX 8 + +#define BIND_NONE 0 +#define BIND_ORIENTED 1 // the bind object should be oriented with the bind parent +#define BIND_SNAPTO 2 // snap the bind object to the parent with no local transform(otherwise a local transform is calculated based on offsets at bind time) +#define BIND_LOCKLOCALOFFSET 4 // don't allow any lock offset to occur + +#define MASK_SOLID 1 +#define MASK_MONSTERSOLID 106513 +#define MASK_PLAYER 32768 +#define MASK_PLAYERSOLID 107529 +#define MASK_PLAYERCOOPSOLID 74761 +#define MASK_VEHICLESOLID 107553 +#define MASK_NPCSOLID 17 // don't collide against other NPCs / AI +#define MASK_PLAYERDEADSOLID 9 +#define MASK_PLAYERCLIP 8 +#define MASK_WATER 4 +#define MASK_OPAQUE 3 +#define MASK_PLAYERFOCUS 2209987 +#define MASK_SHOT 8462469 +#define MASK_PROJECTILE 8495233 +#define MASK_RADIUS_DAMAGE 8462337 +#define MASK_THIRDPERSONCROSSHAIR 238593 +#define MASK_PLAYERCOVER 8193 // ID_DOOM4 + +#define ANIMWEB_EVENT_NONE -1 +#define ANIMWEB_EVENT_START_BLEND_IN 0 // signaled for a node that is just starting to blend in +#define ANIMWEB_EVENT_START_BLEND_OUT 1 // signaled for a node that is just starting to blend out +#define ANIMWEB_EVENT_END_BLEND_IN 2 // signaled for a node that has just finished blending in +#define ANIMWEB_EVENT_END_BLEND_OUT 3 // signaled for a node that has just finished blending out +#define ANIMWEB_EVENT_DEST_START_BLEND_IN 4 // signaled when the destination node has started to blend in +#define ANIMWEB_EVENT_DEST_END_BLEND_IN 5 // signaled when the destination node has finished blending in +#define ANIMWEB_EVENT_DEST_CLAMPED 6 // signaled when the destination node has clamped/reached the end +#define ANIMWEB_EVENT_BLEND_NEXT_FRAME 7 // signaled 1 game frame (NOT ANIMATION FRAME!) before the current node blends out +#define ANIMWEB_EVENT_CLAMP_NEXT_FRAME 8 // signaled 1 game frame (NOT ANIMATION FRAME!) before the current node clamps. NOTE this is only sent for the last node in a path, and only if the node is clamped. +#define ANIMWEB_EVENT_MAX 9 + +#define DEATH_INSTANT 0 // normal death, when health < 0, explode +#define DEATH_IMPULSE_1 1 // impulse into air, explode when it settles +#define DEATH_PULL_FROM_CAMERA 2 // freeze the camera and watch the car fall away + +#define AIHINT_PRIMITIVE_CIRCLE 0 // primitive is a circle (oriented on XY plane) +#define AIHINT_PRIMITIVE_CYLINDER 1 // primitive is a cylinder (axis along Z) +#define AIHINT_PRIMITIVE_SPHERE 2 // primitive is a sphere +#define AIHINT_PRIMITIVE_PLANE 3 // primitive is a plane with entity's spawn orientation as normal and spawn position as a point on the plane +#define AIHINT_PRIMITIVE_VOLUME 4 // primitive is a volume +#define AIHINT_PRIMITIVE_MAX 5 + +#define ACTORCLASS_PLAYER 0 +#define ACTORCLASS_HUMAN 1 +#define ACTORCLASS_MUTANT 2 +#define ACTORCLASS_ROBOT 3 +#define ACTORCLASS_MAX 4 + +#define TALK_NEVER 0 // never talk +#define TALK_DEAD 1 // talk when dead? +#define TALK_OK 2 // talk when ok +#define TALK_BUSY 3 // talk while busy +#define TALK_MAX 4 // number of talk states (unused for script) + +#define VISPOINT_EYES 0 // eyes +#define VISPOINT_CENTER 1 // center + +#define AIMPOINT_ORIGIN 0 // aiming at target's origin +#define AIMPOINT_HEAD 1 // aiming at target's head +#define AIMPOINT_TORSO 2 // aiming at target's torso +#define AIMPOINT_CENTER 3 // aiming at target's center of mass +#define AIMPOINT_LEGS 4 // aiming at target's legs +#define AIMPOINT_FEET 5 // aiming at target's feet +#define AIMPOINT_BEST 6 // special aim point which means choose best aim point on the target +#define AIMPOINT_EYELEVEL 7 // special aim point which means the eye-level of the entity aiming +#define AIMPOINT_LOOKAHEAD 8 // special aim point which is placed in front of the target, used for NPCs walking past other NPCs +#define AIMPOINT_MAX 9 // number of aim points (unused for script) + +#define MODIFY_TARGETING_1 1 +#define MODIFY_TARGETING_2 2 + +#define ACCURACY_FROMSKILL 0 // determine the accuracy based on the AI's skill level +#define ACCURACY_HORRIBLE 1 // aim is horrible +#define ACCURACY_POOR 2 // aim is poor +#define ACCURACY_DECENT 3 // aim is decent +#define ACCURACY_GOOD 4 // aim is good +#define ACCURACY_EXCELLENT 5 // aim is excellent +#define ACCURACY_PERFECT 6 // aim is perfect +#define ACCURACY_MAX 7 // number of accuracy types (unused for script) + +#define LOOKRATE_NORMAL 0 // used when an actor is looking at something other than a target +#define LOOKRATE_FAST 1 // used when an actor is looking at something other than a target and should turn their head quickly +#define LOOKRATE_MAX 2 + +#define AIDODGEDIR_NONE 0 // no direction +#define AIDODGEDIR_FORWARD 1 // dodge forward +#define AIDODGEDIR_RIGHT 2 // dodge to the right +#define AIDODGEDIR_LEFT 3 // dodge to the left +#define AIDODGEDIR_BACK 4 // dodge backwards +#define AIDODGEDIR_MAX 5 // number of dodge direction (unused for script) + +#define DAMAGEDIR_NONE 0 // no direction +#define DAMAGEDIR_FRONT 1 // damage from the front +#define DAMAGEDIR_BACK 2 // damage from the rear +#define DAMAGEDIR_LEFT 3 // damage from the left +#define DAMAGEDIR_RIGHT 4 // damage from the right +#define DAMAGEDIR_FRONTLEFT 5 // damage from the left of front +#define DAMAGEDIR_FRONTRIGHT 6 // damage from the right of front +#define DAMAGEDIR_BACKLEFT 7 // damage from the left of rear +#define DAMAGEDIR_BACKRIGHT 8 // damage from the right of rear +#define DAMAGEDIR_MAX 9 // number of damage directions (unused for script) + +#define DAMAGEINTENSITY_NONE 0 // no damage +#define DAMAGEINTENSITY_LIGHT 1 // light damage +#define DAMAGEINTENSITY_MEDIUM 2 // medium damage +#define DAMAGEINTENSITY_HEAVY 3 // heavy damage +#define DAMAGEINTENSITY_MAX 4 // number of damage intensities (unused for script) + +#define AIDIR_FRONT 0 // front +#define AIDIR_FRONT_LEFT 1 // front-left +#define AIDIR_LEFT 2 // left +#define AIDIR_BEHIND_LEFT 3 // behind-left +#define AIDIR_BEHIND 4 // behind +#define AIDIR_BEHIND_RIGHT 5 // behind-right +#define AIDIR_RIGHT 6 // right +#define AIDIR_FRONT_RIGHT 7 // front-right +#define AIDIR_MAX 8 // number of directions (unused for script) + +#define ALERTCYCLE_RELAXED 1 // relaxed +#define ALERTCYCLE_SEARCH 2 // search +#define ALERTCYCLE_COMBAT 3 // combat +#define ALERTCYCLE_PAIN 4 // pain +#define ALERTCYCLE_DYING 5 // dying +#define ALERTCYCLE_DEAD 6 // dead +#define ALERTCYCLE_ANIMATE 7 // animate +#define ALERTCYCLE_AVOID 8 // avoid +#define ALERTCYCLE_CONTROLLED 9 // controlled by a player +#define ALERTCYCLE_ERROR 10 // error +#define ALERTCYCLE_MAX 11 // number of alert cycles (unused for script) + +#define AISUBWEB_RELAXED 0 // relaxed SubWeb +#define AISUBWEB_COMBAT 1 // combat SubWeb +#define AISUBWEB_HOSTILE 2 // hostile SubWeb +#define AISUBWEB_SEARCH 3 // search SubWeb +#define AISUBWEB_PAIN 4 // pain SubWeb +#define AISUBWEB_PAIN_STAGGER 5 // staggering-pain SubWeb +#define AISUBWEB_PAIN_MOVING 6 // moving-pain SubWeb +#define AISUBWEB_PAIN_SHOCK 7 // shocking-pain SubWeb +#define AISUBWEB_DYING 8 // dying SubWeb +#define AISUBWEB_ACTIONSCRIPT 9 // ActionScript SubWeb +#define AISUBWEB_FCOVER 10 // find cover SubWeb? +#define AISUBWEB_MELEE 11 // melee SubWeb +#define AISUBWEB_SURPRISE 12 // surprise SubWeb +#define AISUBWEB_DIVE 13 // dive SubWeb +#define AISUBWEB_DODGE 14 // dodge SubWeb +#define AISUBWEB_GRENADE 15 // grenade SubWeb +#define AISUBWEB_THROW 16 // throw SubWeb +#define AISUBWEB_OVERRIDE 17 // OverRide SubWeb +#define AISUBWEB_TURRET 18 // Turret SubWeb +#define AISUBWEB_RCCONTROL 19 // Using RC car controller +#define AISUBWEB_TRAVERSAL 20 // traversal animations SubWeb +#define AISUBWEB_ZIPLINE 21 // using ziplines +#define AISUBWEB_DROPSHIP_FALL 22 // falling from dropship +#define AISUBWEB_MAX 23 // number of SubWebs (unused for script) + +#define ANIMOVERRIDE_NONE 0 // no override +#define ANIMOVERRIDE_SURPRISE_START 1 // first surprise override (unused for script) +#define ANIMOVERRIDE_SURPRISE_FORWARD 1 // surprised from the front +#define ANIMOVERRIDE_SURPRISE_BACKWARD 2 // surprised from the rear +#define ANIMOVERRIDE_SURPRISE_LEFT 3 // surprised from the left +#define ANIMOVERRIDE_SURPRISE_RIGHT 4 // surprised from the right +#define ANIMOVERRIDE_SURPRISE_END 4 // last surprise override (unused for script) +#define ANIMOVERRIDE_SEARCH_START 5 // first search override (unused for script) +#define ANIMOVERRIDE_SEARCH_INTRO_FORWARD 5 // relaxed to search when alert was in front of AI +#define ANIMOVERRIDE_SEARCH_INTRO_BACKWARD 6 // relaxed to search when alert was behind AI +#define ANIMOVERRIDE_SEARCH_INTRO_LEFT 7 // enter search when alert was to the left of AI +#define ANIMOVERRIDE_SEARCH_INTRO_RIGHT 8 // enter search when alert was to the right of AI +#define ANIMOVERRIDE_SEARCH_LOOK_OVER 9 // look over (a ledge) from idle +#define ANIMOVERRIDE_SEARCH_LOOK_UNDER 10 // look under (a table or into a crouch area) from idle +#define ANIMOVERRIDE_SEARCH_LOOK_LEFT 11 // look to the left from idle +#define ANIMOVERRIDE_SEARCH_LOOK_RIGHT 12 // look to the right from idle +#define ANIMOVERRIDE_SEARCH_LOOK_UP 13 // look up (at a hole or a ladder) from idle +#define ANIMOVERRIDE_SEARCH_LOOK_AROUND 14 // look around randomly +#define ANIMOVERRIDE_SEARCH_LOOK_BOTH 15 // look left and right +#define ANIMOVERRIDE_SEARCH_GIVE_UP 16 // give up searching +#define ANIMOVERRIDE_SEARCH_END 16 // last search override (unused for script) +#define ANIMOVERRIDE_DIVE_START 17 // first dive override (unused for script) +#define ANIMOVERRIDE_DIVE_FORWARD 17 // dive forwards +#define ANIMOVERRIDE_DIVE_RIGHT 18 // dive to the right +#define ANIMOVERRIDE_DIVE_LEFT 19 // dive to the left +#define ANIMOVERRIDE_DIVE_BACK 20 // dive backwards +#define ANIMOVERRIDE_DIVE_END 20 // last dive override (unused for script) +#define ANIMOVERRIDE_DODGE_START 21 // first dodge override (unused for script) +#define ANIMOVERRIDE_DODGE_FORWARD 21 // dodge forward +#define ANIMOVERRIDE_DODGE_RIGHT 22 // dodge to the right +#define ANIMOVERRIDE_DODGE_LEFT 23 // dodge to the left +#define ANIMOVERRIDE_DODGE_BACK 24 // dodge backward +#define ANIMOVERRIDE_DODGE_END 24 // last dodge override (unused for script) +#define ANIMOVERRIDE_FLINCH_LEFT 25 +#define ANIMOVERRIDE_FLINCH_RIGHT 26 +#define ANIMOVERRIDE_COWER 27 +#define ANIMOVERRIDE_GRENADE_START 28 // first grenade override (unused for script) +#define ANIMOVERRIDE_GRENADE_THROW_HIGHCOVER_LEFT 28 // throw a grenade from high cover to the left +#define ANIMOVERRIDE_GRENADE_THROW_HIGHCOVER_RIGHT 29 // throw a grenade from high cover to the right +#define ANIMOVERRIDE_GRENADE_THROW_LOWCOVER_LEFT 30 // throw a grenade from low cover to the left +#define ANIMOVERRIDE_GRENADE_THROW_LOWCOVER_RIGHT 31 // throw a grenade from high cover to the right +#define ANIMOVERRIDE_GRENADE_THROW 32 // throw a grenade from an open position +#define ANIMOVERRIDE_GRENADE_ROLL 33 // roll a grenade out from an open position +#define ANIMOVERRIDE_GRENADE_END 33 // last grenade override (unused for script) +#define ANIMOVERRIDE_MELEE_START 34 // first melee override (unused for script) +#define ANIMOVERRIDE_MELEE_PUNCH 34 // this is a punch animation for a character holding a ranged weapon +#define ANIMOVERRIDE_MELEE_KICK 35 // this is a kick animation, normally for a character holding a ranged weapon +#define ANIMOVERRIDE_MELEE_FORWARD 36 // a non-specific forward melee attack +#define ANIMOVERRIDE_MELEE_BACK 37 // this is a melee attack which includes a 180-degree turn to attack a target behind the initial position +#define ANIMOVERRIDE_MELEE_LEFT 38 // melee attack including a 90 degree left turn (or just to that side) +#define ANIMOVERRIDE_MELEE_RIGHT 39 // melee attack including a 90 degree right turn (or just to that side) +#define ANIMOVERRIDE_MELEE_CROUCHED_FORWARD 40 // melee attack while crouched +#define ANIMOVERRIDE_MELEE_MEDIUM 41 // medium range melee attack (tentacle) +#define ANIMOVERRIDE_MELEE_LONG 42 // long range melee attack (tentacle) +#define ANIMOVERRIDE_MELEE_MOVING_FORWARD 43 // moving forward attack +#define ANIMOVERRIDE_MELEE_TAKEDOWN 44 +#define ANIMOVERRIDE_MELEE_END 44 // last melee override (unused for script) +#define ANIMOVERRIDE_LEAP_ATTACK 45 // leaping melee attack +#define ANIMOVERRIDE_RAGE_ATTACK 46 // frantic rage attack +#define ANIMOVERRIDE_THROW_PROJECTILE 47 // throw knife or other object +#define ANIMOVERRIDE_CROUCHED_THROW_PROJECTILE 48 // throw projectile while crouched +#define ANIMOVERRIDE_MOVING_THROW_PROJECTILE 49 // throw projectile while moving +#define ANIMOVERRIDE_SHOOT 50 // go into shooting cycle +#define ANIMOVERRIDE_BLOCKED 51 // blocked +#define ANIMOVERRIDE_BLOCKED_OUTSIDER 52 // blocked by outsider +#define ANIMOVERRIDE_BLOCKED_ACCEPTED 53 // blocked by accepted +#define ANIMOVERRIDE_BLOCKED_HEROIC 54 // blocked by heroic +#define ANIMOVERRIDE_BUMPED 55 // bumped +#define ANIMOVERRIDE_INVESTIGATE_BODY 56 // peering over dead body +#define ANIMOVERRIDE_ANGRY_RAGE 57 // show RAGE! +#define ANIMOVERRIDE_TAUNT_RAGE 58 // show RAGE! +#define ANIMOVERRIDE_TRAVERSAL_START 59 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_256_JUMP_LEFT 59 // entrance to play modular climb sequence (new) +#define ANIMOVERRIDE_ENTRANCE_CLIMB_LEDGE_64 60 // entrance to play climbledge64 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_LEDGE_128 61 // entrance to play climbledge128 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_LEDGE_256 62 // entrance to play climbledge256 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_LEDGE_512 63 // entrance to play climbledge512 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_PIPE_CAGE_96 64 // entrance to play climbpipecage96 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_RAIL_128 65 // entrance to play climbrail128 +#define ANIMOVERRIDE_ENTRANCE_CLIMB_RAIL_256 66 // entrance to play climbrail256 +#define ANIMOVERRIDE_ENTRANCE_CRAWL_DOWN_PIPE_0 67 // entrance to play crawldownpipe0 +#define ANIMOVERRIDE_ENTRANCE_CRAWL_DOWN_PIPE_64 68 // entrance to play crawldownpipe64 +#define ANIMOVERRIDE_ENTRANCE_CRAWL_LARGE_PIPE_64 69 // entrance to play crawllargepipe64 +#define ANIMOVERRIDE_ENTRANCE_CRAWL_UP_PIPE_0 70 // entrance to play crawluppipe0 +#define ANIMOVERRIDE_ENTRANCE_FLOOR_ROUND_COVER_UP_0 71 // entrance to play floorroundcoverup0 +#define ANIMOVERRIDE_ENTRANCE_FLOOR_ROUND_PANEL_UP_0 72 // entrance to play floorroundpanelup0 +#define ANIMOVERRIDE_ENTRANCE_FLOOR_SQUARE_PANEL_UP_0 73 // entrance to play floorsquarepanelup0 +#define ANIMOVERRIDE_ENTRANCE_JUMP_FORWARD_128 74 // entrance to play jumpforward128 +#define ANIMOVERRIDE_ENTRANCE_JUMP_FORWARD_256 75 // entrance to play jumpforward256 +#define ANIMOVERRIDE_ENTRANCE_JUMP_FORWARD_384 76 // entrance to play jumpforward384 +#define ANIMOVERRIDE_ENTRANCE_JUMP_LEDGE_DOWN_64 77 // entrance to play jumpledgedown64 +#define ANIMOVERRIDE_ENTRANCE_JUMP_LEDGE_DOWN_128 78 // entrance to play jumpledgedown128 +#define ANIMOVERRIDE_ENTRANCE_JUMP_LEDGE_DOWN_192 79 // entrance to play jumpledgedown192 +#define ANIMOVERRIDE_ENTRANCE_JUMP_LEDGE_DOWN_256 80 // entrance to play jumpledgedown256 +#define ANIMOVERRIDE_ENTRANCE_JUMP_LEDGE_OUT_256 81 // entrance to play jumpledgeout256 +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_UP_64_THEN_192 82 // entrance to play jumprailup64then192 (new) +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_UP_256 83 // entrance to play jumprailup256 (new) +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_DOWN_0 84 // entrance to play jumpraildown0 +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_DOWN_64 85 // entrance to play jumpraildown64land (new) +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_DOWN_128 86 // entrance to play jumpraildown128land +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_DOWN_128_DOUBLE 87 // entrance to play jumpraildown128double +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_DOWN_256 88 // entrance to play jumpraildown256 +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_OUT_128 89 // entrance to play jumprailout128land (new) +#define ANIMOVERRIDE_ENTRANCE_JUMP_RAIL_OUT_256 90 // entrance to play jumprailout256 +#define ANIMOVERRIDE_ENTRANCE_JUMP_LEFT_WALL_UP_256 91 // entrance to play jumpleftwallup256 (new) +#define ANIMOVERRIDE_ENTRANCE_PIPE_DROP_DOWN_192 92 // entrance to play pipedropdown192 +#define ANIMOVERRIDE_ENTRANCE_PIPE_DROP_DOWN_CLING_192 93 // entrance to play pipedropdowncling192 +#define ANIMOVERRIDE_ENTRANCE_PIPE_DROP_OUT_192 94 // entrance to play pipedropout192 +#define ANIMOVERRIDE_ENTRANCE_POLE_SHIMMY_ARMS_512 95 // entrance to play poleshimmyarms512 +#define ANIMOVERRIDE_ENTRANCE_POLE_SHIMMY_ARMS_768 96 // entrance to play poleshimmyarms768 +#define ANIMOVERRIDE_ENTRANCE_POLE_SHIMMY_ARMS_1024 97 // entrance to play poleshimmyarms1024 +#define ANIMOVERRIDE_ENTRANCE_POLE_SHIMMY_QUAD_512 98 // entrance to play poleshimmyquad512 +#define ANIMOVERRIDE_ENTRANCE_POLE_SHIMMY_QUAD_768 99 // entrance to play poleshimmyquad768 +#define ANIMOVERRIDE_ENTRANCE_POLE_SHIMMY_QUAD_1024 100 // entrance to play poleshimmyquad1024 +#define ANIMOVERRIDE_ENTRANCE_SLIDE_PIPE_0 101 // entrance to play slidepipe0 +#define ANIMOVERRIDE_ENTRANCE_SLIDE_PIPE_64 102 // entrance to play slidepipe64 +#define ANIMOVERRIDE_ENTRANCE_SWOOP_RAIL_DOWN_128 103 // entrance to play swoopraildown128 +#define ANIMOVERRIDE_ENTRANCE_TRACK_DROP_240 104 // entrance to play trackdrop240 +#define ANIMOVERRIDE_ENTRANCE_WALL_ENTRANCE 105 // entrance to play wallentrance +#define ANIMOVERRIDE_ENTRANCE_WELL_RAFTER_ENTRANCE320 106 // entrance to play rafterentrance320 +#define ANIMOVERRIDE_ENTRANCE_WELL_SWOOP_RAIL_ENTRANCE128 107 // entrance to play swooprailentrance128 +#define ANIMOVERRIDE_TRAVERSAL_ATTACK_BARSWING 108 // traversal to play roof horizontal bar swing evasion/attack +#define ANIMOVERRIDE_TRAVERSAL_ATTACK_BOUNCE_LEFT 109 // traversal to play wallrun evasion/attack +#define ANIMOVERRIDE_TRAVERSAL_ATTACK_BOUNCE_RIGHT 110 // traversal to play wallrun evasion/attack +#define ANIMOVERRIDE_TRAVERSAL_ATTACK_RAILRUN_LEFT 111 // traversal to play railrun evasion/attack +#define ANIMOVERRIDE_TRAVERSAL_ATTACK_WALLRUN_RIGHT 112 // traversal to play wallrun evasion/attack +#define ANIMOVERRIDE_TRAVERSAL_ATTACK_JUMP_COVER 113 // traversal to play jump cover with optional attack +#define TRAVERSAL_EMERGENCY_DIVE_COVER 114 // traversal to play to dive over cover +#define ANIMOVERRIDE_TRAVERSAL_END 114 +#define ANIMOVERRIDE_CUSTOM 115 // custom override +#define ANIMOVERRIDE_MAX 116 // number of overrides (unused for script) + +#define AIMELEE_NONE 1 // none +#define AIMELEE_FORWARD 2 // melee to the front +#define AIMELEE_BACK 4 // melee to the rear +#define AIMELEE_LEFT 8 // melee to the left +#define AIMELEE_RIGHT 16 // melee to the right +#define AIMELEE_KICK 32 // melee by kicking +#define AIMELEE_PUNCH 64 // melee by punching +#define AIMELEE_MEDIUM 128 // medium range attack (tentacle) +#define AIMELEE_LONG 256 // long range attack (tentacle) +#define AIMELEE_CROUCH_FORWARD 512 // melee to the front while crouching +#define AIMELEE_CROUCH_BACK 1024 // melee to the rear while crouching +#define AIMELEE_CROUCH_LEFT 2048 // melee to the left while crouching +#define AIMELEE_CROUCH_RIGHT 4096 // melee to the right while crouching +#define AIMELEE_RAGE 8192 // frantic rage attack (substitute for melee forward) +#define AIMELEE_MOVING_FORWARD 16384 // continue moving forward and attack +#define AIMELEE_TAKEDOWN 32768 // a stealth take down from behind +#define AIMELEE_CROUCH_TYPES 7680 +#define AIMELEE_CLOSE 96 // use close-combat melee (kicking & punching) +#define AIMELEE_ALL -1 // all types of melee are available +#define AIMELEE_MAX 16 // number of melee types (unused for script) + +#define TURN_NONE 0 // no turn +#define TURN_LEFT 1 // turn to the left +#define TURN_RIGHT 2 // turn to the right +#define TURN_MAX 3 // number of turn directions (unused for script) + +#define PAIN_NONE 0 // no pain +#define PAIN_FLINCH 1 // ai should flinch +#define PAIN_STAGGER 2 // ai should stagger +#define PAIN_STUN 3 // ai is stunned +#define PAIN_STUN_IGNORE 4 // ai was hit with a stunning attack that they're ignoring - for animation purpose, play a stagger or flinch, but treat otherwise as a stun +#define PAIN_DEATH 5 // ai should die +#define PAYNE_MAX 6 // number of types (unused for script) + +#define POSTURE_NONE 0 // posture not specified +#define POSTURE_STANDING 1 // standing +#define POSTURE_CROUCHED 2 // crouched +#define POSTURE_SITTING 3 // sitting down +#define POSTURE_MAX 4 // number of postures (unused for script) + +#define MENTALSTATE_AWAKE 0 +#define MENTALSTATE_ASLEEP 1 +#define MENTALSTATE_DRUNK 2 +#define MENTALSTATE_MAX 3 + +#define STANDSTATE_DEFAULT 0 // default, named "idle" +#define STANDSTATE_2 1 // named "idle2" +#define STANDSTATE_3 2 // named "idle3" +#define STANDSTATE_4 3 // named "idle4" +#define STANDSTATE_5 4 // named "idle5" +#define STANDSTATE_6 5 // named "idle6" +#define STANDSTATE_7 6 // named "idle7" +#define STANDSTATE_8 7 // named "idle8" +#define STANDSTATE_9 8 // named "idle9" +#define STANDSTATE_10 9 // named "idle10" +#define STANDSTATE_11 10 // named "idle11" +#define STANDSTATE_12 11 // named "idle12" +#define STANDSTATE_13 12 // named "idle13" +#define STANDSTATE_14 13 // named "idle14" +#define STANDSTATE_15 14 // named "idle15" +#define STANDSTATE_16 15 // named "idle16" +#define STANDSTATE_17 16 // named "idle17" +#define STANDSTATE_18 17 // named "idle18" +#define STANDSTATE_19 18 // named "idle19" +#define STANDSTATE_20 19 // named "idle20" +#define STANDSTATE_21 20 // named "idle21" +#define STANDSTATE_22 21 // named "idle22" +#define STANDSTATE_23 22 // named "idle23" +#define STANDSTATE_24 23 // named "idle24" +#define STANDSTATE_25 24 // named "idle25" +#define STANDSTATE_26 25 // named "idle26" +#define STANDSTATE_27 26 // named "idle27" +#define STANDSTATE_28 27 // named "idle28" +#define STANDSTATE_29 28 // named "idle29" +#define STANDSTATE_30 29 // named "idle30" +#define STANDSTATE_31 30 // named "idle31" +#define STANDSTATE_32 31 // named "idle32" +#define STANDSTATE_33 32 // named "idle33" +#define STANDSTATE_34 33 // named "idle34" +#define STANDSTATE_35 34 // named "idle35" +#define STANDSTATE_36 35 // named "idle36" +#define STANDSTATE_37 36 // named "idle37" +#define STANDSTATE_38 37 // named "idle38" +#define STANDSTATE_39 38 // named "idle39" +#define STANDSTATE_40 39 // named "idle40" +#define STANDSTATE_41 40 // named "idle41" +#define STANDSTATE_42 41 // named "idle42" +#define STANDSTATE_43 42 // named "idle43" +#define STANDSTATE_44 43 // named "idle44" +#define STANDSTATE_45 44 // named "idle45" +#define STANDSTATE_46 45 // named "idle46" +#define STANDSTATE_47 46 // named "idle47" +#define STANDSTATE_48 47 // named "idle48" +#define STANDSTATE_49 48 // named "idle49" +#define STANDSTATE_50 49 // named "idle50" +#define STANDSTATE_51 50 // named "idle51" +#define STANDSTATE_52 51 // named "idle52" +#define STANDSTATE_53 52 // named "idle53" +#define STANDSTATE_54 53 // named "idle54" +#define STANDSTATE_55 54 // named "idle55" +#define STANDSTATE_56 55 // named "idle56" +#define STANDSTATE_57 56 // named "idle57" +#define STANDSTATE_58 57 // named "idle58" +#define STANDSTATE_59 58 // named "idle59" +#define STANDSTATE_60 59 // named "idle60" +#define STANDSTATE_MAX 60 // internal use only, DO NOT USE + +#define TURNSTATE_DEFAULT 0 // default, names "turn_left", "turn_right", "turn_left_157", "turn_right_157" +#define TURNSTATE_ARMSCROSSED 1 // "turn_left_armscrossed", "turn_right_armscrossed", "turn_left_armscrossed_157", "turn_right_armscrossed_157" +#define TURNSTATE_MAX 2 + +#define SITSTATE_DEFAULT 0 +#define SITSTATE_2 1 +#define SITSTATE_3 2 +#define SITSTATE_4 3 +#define SITSTATE_5 4 +#define SITSTATE_6 5 +#define SITSTATE_7 6 +#define SITSTATE_8 7 +#define SITSTATE_9 8 +#define SITSTATE_10 9 +#define SITSTATE_11 10 +#define SITSTATE_12 11 +#define SITSTATE_13 12 +#define SITSTATE_14 13 +#define SITSTATE_15 14 +#define SITSTATE_16 15 +#define SITSTATE_17 16 +#define SITSTATE_18 17 +#define SITSTATE_19 18 +#define SITSTATE_20 19 +#define SITSTATE_21 20 +#define SITSTATE_22 21 +#define SITSTATE_23 22 +#define SITSTATE_24 23 +#define SITSTATE_25 24 +#define SITSTATE_26 25 +#define SITSTATE_27 26 +#define SITSTATE_28 27 +#define SITSTATE_29 28 +#define SITSTATE_30 29 +#define SITSTATE_31 30 +#define SITSTATE_32 31 +#define SITSTATE_33 32 +#define SITSTATE_34 33 +#define SITSTATE_35 34 +#define SITSTATE_36 35 +#define SITSTATE_37 36 +#define SITSTATE_38 37 +#define SITSTATE_39 38 +#define SITSTATE_40 39 +#define SITSTATE_41 40 +#define SITSTATE_42 41 +#define SITSTATE_43 42 +#define SITSTATE_44 43 +#define SITSTATE_45 44 +#define SITSTATE_46 45 +#define SITSTATE_47 46 +#define SITSTATE_48 47 +#define SITSTATE_49 48 +#define SITSTATE_50 49 +#define SITSTATE_MAX 50 + +#define WALKSTATE_NOCLIP 0 // Walk through walls +#define WALKSTATE_WALKING 1 // Walk +#define WALKSTATE_RUNNING 2 // Run +#define WALKSTATE_SPRINTING 3 // Sprint +#define WALKSTATE_MAX 4 // Number of states (unused for script) + +#define WEAPONREADY_NONE 0 // not ready +#define WEAPONREADY_HOLSTERED 1 // weapon is holstered +#define WEAPONREADY_LOWERED 2 // weapon is lowered +#define WEAPONREADY_RAISED 3 // weapon is raised + +#define COVERORIENT_NONE 0 // used when not going to cover +#define COVERORIENT_ANY 1 // ai can orient to any direction it prefers when using cover +#define COVERORIENT_FORWARD 2 // ai faces toward enemy when in cover +#define COVERORIENT_BACKWARD 3 // ai faces away from enemy when in cover and turns to fire +#define COVERORIENT_MAX 4 // number of cover orientations (unused for script) + +#define COVERACTION_NONE 0 // no animation +#define COVERACTION_FIRE_OVER 1 // "fire over" animation +#define COVERACTION_FIRE_LEAN_LEFT 2 // "fire left" animation +#define COVERACTION_FIRE_LEAN_RIGHT 3 // "fire right" animation +#define COVERACTION_FIRE_STEP_LEFT 4 // "fire step left" animation +#define COVERACTION_FIRE_STEP_RIGHT 5 // "fire step right" animation +#define COVERACTION_BLINDFIRE_OVER 6 // "blind-fire over" animation +#define COVERACTION_BLINDFIRE_LEFT 7 // "blind-fire left" animation +#define COVERACTION_BLINDFIRE_RIGHT 8 // "blind-fire right" animation +#define COVERACTION_PEEK_OVER 9 // "peek over" animation +#define COVERACTION_PEEK_LEFT 10 // "peek left" animation +#define COVERACTION_PEEK_RIGHT 11 // "peek right" animation +#define COVERACTION_HIDE 12 // "hide" animation +#define COVERACTION_RAIL_DOWN 13 // "rail down" animation +#define COVERACTION_RAIL_UP 14 // "rail up" animation +#define COVERACTION_RAIL_LEFT 15 // "rail left" animation +#define COVERACTION_RAIL_RIGHT 16 // "rail right" animation +#define COVERACTION_MAX 17 // number of cover actions (unused for script) + +#define VISIBLE_OUTSIDE_FOV_NOT_VISIBLE 0 // entity is both outside FOV and not visible +#define VISIBLE_OUTSIDE_FOV 1 // entity is outside of the actor's field of view +#define VISIBLE_NOT_VISIBLE 2 // entity is not visible to actor +#define VISIBLE_IN_COVER 3 // entity is visible, but partially covered +#define VISIBLE_VISIBLE 4 // entity is fully visible +#define VISIBLE_INVALID 5 // query was invalid +#define VISIBLE_MAX 6 // number of visibility types (unused for script) + +#define AIFOCI_AIM 0 // the highest priority target we're looking at +#define AIFOCI_LOOK 1 // focus target chosen automatically by the AI. This is always overridden by the primaryFocus +#define AIFOCI_MAX 2 + +#define AIGROUPMSG_ENABLE 0 // enable the group +#define AIGROUPMSG_DISABLE 1 // disable the group +#define AIGROUPMSG_ADD_ENEMY 2 // and the entity as an enemy, but don't override the current enemy +#define AIGROUPMSG_SET_ENEMY 3 // add the entity as an enemy and DO override the current enemy +#define AIGROUPMSG_MAX 4 // INTERNAL USE ONLY! DO NOT SET IN EDITOR! + +#define AIACTION_FALSE 0 // The Action version of "false" +#define AIACTION_TRUE 1 // The Action version of "true" + +#define ACTIONSCRIPT_ABORT_FOR_COMBAT 1 // abort for combat +#define ACTIONSCRIPT_ABORT_FOR_SEARCH 2 // abort for search +#define ACTIONSCRIPT_IGNORE_AI_EVENTS 4 // ignore ALL incoming AI events during an action script +#define ACTIONSCRIPT_NO_COMBAT_CHATTER 8 // don't use combat chatter during an action script +#define ACTIONSCRIPT_NO_TARGETS 16 // do not update targets during action script +#define ACTIONSCRIPT_IGNORE_PLAYER_APPROACH 32 // ignore player approaching events +#define ACTIONSCRIPT_NO_DAMAGE 64 // AI will ignore all damage and pain during an action script +#define ACTIONSCRIPT_NO_TWITCH_PAIN 128 // AI will not play any twitch pain animations during an action script +#define ACTIONSCRIPT_ENABLE_STAGGER_PAIN 256 // AI can play stagger/moving pain during script (they will break out) +#define ACTIONSCRIPT_ENABLE_AUTOFOCUS 512 // script requested that autofocus be turned back on until end of script (unless permanent flag set) + +#define PERCEPTION_NO_TARGETS 1 // do not update targets + +#define AIPLAYER_CLOSEST 0 // the player closest to the AI +#define AIPLAYER_FARTHEST 1 // the player furthest from the AI +#define AIPLAYER_LOWEST_HEALTH 2 // the player with the lowest health +#define AIPLAYER_HIGHEST_HEALTH 3 // the player with the greatest health +#define AIPLAYER_MAX 4 // the number of AI Players (unused for script) + +#define AIOVERRIDE_DEFAULT 0 // use default AI behavior +#define AIOVERRIDE_FORCE_AWARENESS_OF_PLAYER 1 // give AI awareness of highest threat player +#define AIOVERRIDE_FORCE_AWARENESS_OF_ENTITY 2 // give AI awareness of entity +#define AIOVERRIDE_FORCE_SEARCH_TO_PLAYER 3 // give AI awareness and search to given point +#define AIOVERRIDE_FORCE_SEARCH_TO_ENTITY 4 // AI searches towards current position of initialTarget entity +#define AIOVERRIDE_COVER_FROM_PLAYER 5 // take cover from the highest-threat player at most-suitable cover point that is closest to the targeted entity +#define AIOVERRIDE_COVER_FROM_PLAYER_TARGET 6 // taker cover from the highest-threat player, but use the "initialTarget" as the position to take cover from +#define AIOVERRIDE_CHARGE_MELEE_PLAYER 7 // charge the player with the intent to melee +#define AIOVERRIDE_PLAY_ENTRANCE_ANIMATION 8 // enter combat with the player as a target and play a specified animation +#define AIOVERRIDE_FORCE_MOVE_TO_TRAVERSAL 9 // enter combat with the player as a target and run to the target traversal node, which will play the traversal anim +#define AIOVERRIDE_MAX 10 // number of state overrides (unused for script) + +#define FIREMODE_WEAPON 0 // fire control updates the weapon, but doesn't change weapon states +#define FIREMODE_HOLDFIRE 1 // fire control won't fire the weapon and releases the trigger if it's held +#define FIREMODE_FIREWHENREADY 2 // fire control fires the weapon when there's an opportunity +#define FIREMODE_SPRAYWHENREADY 3 // fire control fires the weapon when there is even a chance a shot might hit +#define FIREMODE_MAX 4 // for internal use only... never set this value on a script! + +#define AIARRIVAL_UNKNOWN 0 // we have no idea what we need to do, or we don't care +#define AIARRIVAL_CONTINUE 1 // continue movement through point +#define AIARRIVAL_STOP 2 // stop when point is reached + +#define AIARRIVAL_ORIENT_NONE 0 // don't orient +#define AIARRIVAL_ORIENT_ALIGN 1 // align to the explicit orientation + +#define AISKILL_INCOMPETENT 0 // Incompetent +#define AISKILL_EASY 1 // Easy +#define AISKILL_NORMAL 2 // Normal +#define AISKILL_HARD 3 // Hard +#define AISKILL_LETHAL 4 // Lethal +#define AISKILL_MAX 5 // number of skill types (unused for script) + +#define EQUIP_NONE 0 // item can't be equipped, only held in inventory +#define EQUIP_LEFT_HAND 1 // equips only in left hand +#define EQUIP_RIGHT_HAND 2 // equips only in right hand +#define EQUIP_HEAD 3 // equips on the head +#define EQUIP_TORSO 4 // equips on the torso +#define EQUIP_HOLSTER_HIP_LEFT 5 // holster slot for pistol on the left hip +#define EQUIP_HOLSTER_HIP_RIGHT 6 // holster slot for pistol on the right leg +#define EQUIP_HOLSTER_BACK 7 // holster slot on the back +#define EQUIP_HOLSTER_SHOULDER 8 // holster slot on the shoulder +#define EQUIP_HOLSTER_BELT_LEFT 9 // holster slot on the left belt +#define EQUIP_HOLSTER_BELT_RIGHT 10 // holster slot on the right belt +#define EQUIP_HOLSTER_BELT_BACK 11 // holster slot on the back of the belt +#define EQUIP_HOLSTER_BELT_FRONT 12 // holster slot of the front of the belt +#define EQUIP_VEHICLE 13 // a vehicle +#define EQUIP_VEHICLE_RAM 14 // front of vehicle +#define EQUIP_MAX 15 // number of slot types (unused for script) + +#define REMOVE_CONDITION_NONE 0 // no fadeing +#define REMOVE_CONDITION_DORMANT 1 // fades over time once dormant +#define REMOVE_CONDITION_TIMEOUT 2 // fades direclty, no need for dormancy +#define REMOVE_CONDITION_MAX 3 // Num types + +#define AIVAROP_LESS 0 +#define AIVAROP_LESS_EQUAL 1 +#define AIVAROP_EQUAL 2 +#define AIVAROP_GREATER_EQUAL 3 +#define AIVAROP_GREATER 4 + +#define AIVAR_INT 0 +#define AIVAR_FLOAT 1 +#define AIVAR_STRING 2 + +#define AISELECTCONDITION_ADVANCE 0 +#define AISELECTCONDITION_OPENCOMBAT 1 +#define AISELECTCONDITION_COVER 2 +#define AISELECTCONDITION_MAX 3 + +#define AIITEMSELECT_NONE 0 // can't throw anything +#define AIITEMSELECT_GRENADE 1 +#define AIITEMSELECT_DUAL_MUTANT 2 +#define AIITEMSELECT_CLUB_MUTANT 3 +#define AIITEMSELECT_SCOOP_MUTANT 4 +#define AIITEMSELECT_LARGE_RANGED_MUTANT 5 +#define AIITEMSELECT_HEAVY_BANDIT 6 +#define AIITEMSELECT_PIPE_BANDIT 7 +#define AIITEMSELECT_IMP 8 +#define AIITEMSELECT_MAX 9 + +#define AIANIMWEB_BODY 0 +#define AIANIMWEB_MAX 1 + +#define AIANIMWAIT_DONT_WAIT 0 +#define AIANIMWAIT_WAIT_FOR_DEST_TO_START_BLEND 1 +#define AIANIMWAIT_WAIT_FOR_DEST_TO_FINISH_BLEND 2 + +#define LOOKFLAG_NONE 0 +#define LOOKFLAG_ROAM 1 // allow Look SP in Roam +#define LOOKFLAG_SEARCH 2 // allow Look SP in Search +#define LOOKFLAG_COMBAT 4 // allow Look SP in Combat +#define LOOKFLAG_ID_STUDIO_RENDER 1024 // Bit needed for rendering in idStudio if no LookFlags are set. Cleared upon spawn + +#define SEARCHFLAG_NONE 0 +#define SEARCHFLAG_ARC_SWEEP 1 // sweep arc +#define SEARCHFLAG_FORWARD 2 // search forward +#define SEARCHFLAG_LEFT 4 // search left +#define SEARCHFLAG_RIGHT 8 // search right +#define SEARCHFLAG_ABOVE 16 // search above +#define SEARCHFLAG_BELOW 32 // search below +#define SEARCHFLAG_ID_STUDIO_RENDER 1024 // Bit needed for rendering in idStudio if no SearchFlags are set. Cleared upon spawn + +#define TACFLAG_NONE 0 +#define TACFLAG_STAND 1 // STAND pose is allowed at this Combat IP +#define TACFLAG_CROUCH 2 // CROUCH pose is allowed +#define TACFLAG_LEFT 32 // LEFT movement is allowed +#define TACFLAG_RIGHT 64 // RIGHT movement is allowed +#define TACFLAG_POPUP 128 // POPUP movement is allowed +#define TACFLAG_RAIL 512 // RAIL movement allowed +#define TACFLAG_COWARD 4096 // COWARD behaviors allowed +#define TACFLAG_ID_STUDIO_RENDER 32768 // Bit needed for rendering in IdStudio if no tacflags at all are set. Removed upon Spawn. + +#define ARC_SECTOR_INVALID -1 +#define ARC_SECTOR_INSIDE 0 +#define ARC_SECTOR_NEAR 1 +#define ARC_SECTOR_LEFT 2 +#define ARC_SECTOR_RIGHT 3 +#define ARC_SECTOR_FAR 4 + +#define NONE 0 +#define ROAM 1 // Roam ScenePoint, used in non-tension areas for patrols etc +#define LOOK 2 // Look SceenPoint, used for making AI look at things +#define SEARCH 3 // Search SP, used by AIs when searching +#define COMBAT 4 // Combat SP, used by AIs while in combat. Being in cover / open areas is determined by the tactical flags used. + +#define SCRIPTFLAG_NONE 0 +#define SCRIPTFLAG_SCRIPT 1 // Set to indicate if this scenepoint is a script scenepoint or not +#define SCRIPTFLAG_RUN 2 // Run +#define SCRIPTFLAG_TRACK_TARGET 4 // Track target (if any) +#define SCRIPTFLAG_ATTACK_TARGET 8 // Attack target (if any) +#define SCRIPTFLAG_ABORT_IF_PLAYER_NOT_IN_ARC 16 // Abort if Player not in Arc +#define SCRIPTFLAG_ABORT_IF_PLAYER_IN_ARC 32 // Abort if Player enters Arc +#define SCRIPTFLAG_ABORT_IF_HURT_MOVING_TO 64 // Abort if hurt while moving to scenepoint +#define SCRIPTFLAG_ABORT_IF_HURT_STAYING_AT 128 // Abort if hurt while at scenepoint +#define SCRIPTFLAG_ABORT_IF_DETECTING_ENEMY 256 // Abort if detecting enemy +#define SCRIPTFLAG_ABORT_IF_SPOTTING_ENEMY 512 // Abort if spotting enemy +#define SCRIPTFLAG_KEEP_AFTER_ABORT 1024 // Stores the last override SP on abort and restores it again as apropriate +#define SCRIPTFLAG_EVALUATE_RELATED 2048 // If we have related scenepoints, evaluate which one to take instead of chosing a random one. +#define SCRIPTFLAG_ID_STUDIO_RENDER 32768 // Bit needed for rendering in idStudio if no ScriptFlags are set. Cleared upon spawn + +#define MTSP_NONE 0 +#define MTSP_ABORT_PLAYER_NOT_IN_ARC 1 // Abort the movement if player not in arc +#define MTSP_ABORT_HURT 2 +#define MTSP_ABORT_SPOT_ENEMY 4 +#define MTSP_ABORT_DETECT_ENEMY 8 +#define MTSP_RUN 32 // Run? Or def. Walk? +#define MTSP_MOVE_ATTACK 64 // Track and attack target when moving +#define MTSP_STAY_ATTACK 128 // Track and attack target when staying at SP + +#define SP_NONE 0 +#define SP_LOW_PRIO 1 // Low Prio, backup, scenepoint + +#define SP_SELECT_NONE 0 +#define SP_SELECT_ALLOW_TACTICAL 1 // Required to use scenepoints with leanouts/popups/cowards. +#define SP_SELECT_PREFER_CLOSEST 2 // Prefer closest valid SP etc +#define SP_SELECT_PREFER_FLANKING 4 // Prefer SPs that are away from the enemies look +#define SP_SELECT_ALLOW_LAST 8 // We can (re)use the last SP (it still has a history score of 0.0 though) +#define SP_SELECT_ALLOW_PLAYERCROSSING 16 // Allow scenepoints that are past the player (inside a 45 cone behind the player) +#define SP_SELECT_ALLOW_TURRET 32 // Allow Turret Scenepoints +#define SP_SELECT_DEFAULT 3 + +#define COVER_NONE 0 +#define COVER_POPIN_HURT 1 // Go to cover if we get hurt +#define COVER_POPIN_AIM 2 // Go to cover if enemy is aiming at us +#define COVER_POPIN_RELOAD 4 // Go to cover if we need to reload +#define COVER_POPOUT_NO_AIM 8 // Go to attack if enemy is aiming away +#define COVER_POPOUT_HURT 16 // Go to attack if we got hurt while in cover +#define COVER_STAYOUT_SAFE 32 // Extend attack time if we are safe (no one aiming/firing at us) + +#define DODGE_NONE 0 +#define DODGE_AIM 1 // Perform dodge if enemy is aiming at us +#define DODGE_SHOT 2 // Perform dodge if enemy shot us +#define DODGE_BLOCKED 4 // Perform dodge if we are blocked (by nearby friend or friend LOS) +#define DODGE_STRAFE 8 // Allow normal strafe movement as dodge move +#define DODGE_ANIMATIONS 16 // Allow dodge animations to be used as a dodge move +#define DODGE_ALL 31 + +#define CLOSE_NONE 0 +#define CLOSE_STOP_ON_SPOT 1 // Stop upon spotting the enemy + +#define DEATHIMPULSE_NONE 0 // Nothing, default. +#define DEATHIMPULSE_ANIM_DONE 1 // Death Animation Done. +#define DEATHIMPULSE_DISABLE_COLLISION 2 // Disable collision checks against geometry +#define DEATHIMPULSE_ENABLE_COLLISION 3 // Re-enable collision checks against geometry + +#define DEATH_NONE 0 +#define DEATH_CUSTOM 1 // Custom death animation, special handling +#define DEATH_LOCAL 2 // Local death animation, special handling +#define DEATH_DONE 4 // Death animation is done ( not necessarily all done though, could be a partial one) +#define DEATH_ANIMVERIFIED 8 // Have we really started a correct death animation? +#define DEATH_EXECUTED 16 // Killed through execution +#define DEATH_CHECK_COLLISION 32 // If we shall check collision against geometry + +#define NAVLAYER_PLAYER 0 +#define NAVLAYER_MONSTER16 1 +#define NAVLAYER_MONSTER32 2 +#define NAVLAYER_MONSTER48 3 +#define NAVLAYER_MONSTER96 4 +#define NAVLAYER_MONSTER128 5 +#define NAVLAYER_FLIGHT 6 +#define NAVLAYER_NONE 7 // just an empty stub, for debugging menus. +#define NAVLAYER_MAX 8 + +#define INVALID_THREAD 0 + +#define ROLE_NONE 0 +#define ROLE_DEFEND 1 +#define ROLE_ASSAULT 2 +#define ROLE_FLANK 3 +#define ROLE_FLANK_CHARGE 4 +#define ROLE_FORMATION 5 +#define ROLE_THROW 6 +#define ROLE_CHARGE 7 +#define ROLE_UNAVAILABLE 8 +#define ROLE_MAX 9 + +#define ATTITUDE_UNKNOWN -1 // this is returned when no attitude is defined between two factions +#define ATTITUDE_DESPISE 0 +#define ATTITUDE_HATE 1 +#define ATTITUDE_DISLIKE 2 +#define ATTITUDE_NEUTRAL 3 +#define ATTITUDE_LIKE 4 +#define ATTITUDE_LOVE 5 +#define ATTITUDE_IDOLIZE 6 +#define ATTITUDE_MAX 7 + +#define ATTITUDESTAGE_OUTSIDER 0 +#define ATTITUDESTAGE_ACCEPTED 1 +#define ATTITUDESTAGE_HEROIC 2 +#define ATTITUDESTAGE_NUM 3 // "MAX" is wrong I can't bring myself to use it + +#define RAGE_STAT_INVALID -1 +#define RAGE_STAT_VEHICLE_KILLS 0 // vehicles player has killed either in SP/MP +#define RAGE_STAT_VEHICLE_DEATHS 1 +#define RAGE_STAT_VEHICLE_SUICIDES 2 +#define RAGE_STAT_VEHICLE_DOUBLEKILLS 3 +#define RAGE_STAT_VEHICLE_TRIPLEKILLS 4 +#define RAGE_STAT_VEHICLE_QUADKILLS 5 +#define RAGE_STAT_VEHICLE_KILLINGSPREES 6 +#define RAGE_STAT_VEHICLE_SHOTS 7 // shots from vehicle +#define RAGE_STAT_VEHICLE_HITS 8 // shots that hit from vehicle +#define RAGE_STAT_VEHICLE_DAMAGEDEALT 9 +#define RAGE_STAT_VEHICLE_IMPRESSIVES 10 +#define RAGE_STAT_VEHICLE_AIRSHOTS 11 +#define RAGE_STAT_VEHICLE_ODOMETER 12 // will wrap with ~33K miles (shouldn't be a problem(TM)) +#define RAGE_STAT_VEHICLE_ODOMETER_ON_GROUND 13 +#define RAGE_STAT_VEHICLE_ODOMETER_ON_TWOWHEELS 14 +#define RAGE_STAT_VEHICLE_ODOMETER_IN_AIR 15 +#define RAGE_STAT_VEHICLE_TIME_IN_AIR 16 // ms, ~600hr max (shouldn't be a problem(TM)) +#define RAGE_STAT_VEHICLE_QUAD_PICKUPS 17 +#define RAGE_STAT_VEHICLE_PERK_BOOSTUP_SP 18 +#define RAGE_STAT_VEHICLE_PERK_JUMPMAN_SP 19 +#define RAGE_STAT_VEHICLE_PERK_DURABUMP_SP 20 +#define RAGE_STAT_CASH_MP 21 +#define RAGE_STAT_SP_XP 22 +#define RAGE_STAT_MP_XP 23 +#define RAGE_STAT_VEHICLE_FLAG_CAPTURES 24 +#define RAGE_STAT_VEHICLE_PERK_OVERAMMO_SP 25 +#define RAGE_STAT_VEHICLE_PERK_LOCKJACK_SP 26 +#define RAGE_STAT_VEHICLE_PERK_FASTERFASTER_SP 27 +#define RAGE_STAT_VEHICLE_PERK_THESNAPPER_SP 28 +#define RAGE_STAT_VEHICLE_PERK_OVERLOAD_SP 29 +#define RAGE_STAT_VEHICLE_TEAMKILLS 30 +#define RAGE_STAT_SP_LEVEL 31 // Special stat, automatically derived from RAGE_STAT_MP_XP, DO NOT manually set outside. +#define RAGE_STAT_MP_LEVEL 32 // Special stat, automatically derived from RAGE_STAT_SP_XP, DO NOT manually set outside. +#define RAGE_STAT_VEHICLE_POWERUPS 33 +#define RAGE_STAT_SCORE_COOP 34 // coop scoring, does not award XP +#define RAGE_STAT_SCORE_VDM 35 // scoring in all vehicle modes. This awards XP +#define RAGE_STAT_TIME_PLAYED 36 // total time in mini-game/challenge (just for reporting back to all the clients, not the real player time [RAGE_STAT_TIME_IN_GAME] ) +#define RAGE_STAT_WINS 37 +#define RAGE_STAT_VEHICLE_LEADERKILLS 38 +#define RAGE_STAT_VEHICLE_SKULL_CAPTURES 39 +#define RAGE_STAT_VEHICLE_ROAD_KILLS 40 +#define RAGE_STAT_VEHICLE_RALLY_CAPTURES 41 +#define RAGE_STAT_VEHICLE_RALLY_AIR_CAPTURES 42 +#define RAGE_STAT_VEHICLE_RALLY_CLOSECALLS 43 +#define RAGE_STAT_VEHICLE_RALLY_DENIALS 44 +#define RAGE_STAT_VEHICLE_METEOR_CAPTURES 45 +#define RAGE_STAT_VEHICLE_METEORS_DROPPED 46 +#define RAGE_STAT_VEHICLE_METEORS_STOLEN 47 +#define RAGE_STAT_VEHICLE_TRIADS_COMPLETED 48 +#define RAGE_STAT_VEHICLE_TRIADS_MISSED 49 +#define RAGE_STAT_CHALLENGE_UNLOCK_WELLSPRING_1 50 +#define RAGE_STAT_CHALLENGE_UNLOCK_WELLSPRING_2 51 +#define RAGE_STAT_CHALLENGE_UNLOCK_PRISON 52 +#define RAGE_STAT_CHALLENGE_UNLOCK_DAM 53 +#define RAGE_STAT_CHALLENGE_UNLOCK_BASH 54 +#define RAGE_STAT_CHALLENGE_UNLOCK_BASH_INFESTATION 55 +#define RAGE_STAT_CHALLENGE_UNLOCK_RCBOMB 56 +#define RAGE_STAT_CHALLENGE_UNLOCK_PLAZA 57 +#define RAGE_STAT_CHALLENGE_UNLOCK_MUTANT_CAVES 58 +#define RAGE_STAT_CHALLENGE_COMPLETE_WELLSPRING_1 59 +#define RAGE_STAT_CHALLENGE_COMPLETE_WELLSPRING_2 60 +#define RAGE_STAT_CHALLENGE_COMPLETE_PRISON 61 +#define RAGE_STAT_CHALLENGE_COMPLETE_DAM 62 +#define RAGE_STAT_CHALLENGE_COMPLETE_BASH 63 +#define RAGE_STAT_CHALLENGE_COMPLETE_BASH_INFESTATION 64 +#define RAGE_STAT_CHALLENGE_COMPLETE_RCBOMB 65 +#define RAGE_STAT_CHALLENGE_COMPLETE_PLAZA 66 +#define RAGE_STAT_CHALLENGE_COMPLETE_MUTANT_CAVES 67 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_WELLSPRING_1 68 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_WELLSPRING_2 69 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_PRISON 70 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_DAM 71 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_BASH 72 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_BASH_INFESTATION 73 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_RCBOMB 74 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_PLAZA 75 +#define RAGE_STAT_CHALLENGE_NIGHTMARE_COMPLETE_MUTANT_CAVES 76 +#define RAGE_STAT_CHALLENGE_COLLECTION_WELLSPRING_1 77 +#define RAGE_STAT_CHALLENGE_COLLECTION_WELLSPRING_2 78 +#define RAGE_STAT_CHALLENGE_COLLECTION_PRISON 79 +#define RAGE_STAT_CHALLENGE_COLLECTION_DAM 80 +#define RAGE_STAT_CHALLENGE_COLLECTION_BASH 81 +#define RAGE_STAT_CHALLENGE_COLLECTION_BASH_INFESTATION 82 +#define RAGE_STAT_CHALLENGE_COLLECTION_RCBOMB 83 +#define RAGE_STAT_CHALLENGE_COLLECTION_PLAZA 84 +#define RAGE_STAT_CHALLENGE_COLLECTION_MUTANT_CAVES 85 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_01 86 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_02 87 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_03 88 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_04 89 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_05 90 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_06 91 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_07 92 +#define RAGE_STAT_CHALLENGE_SPECIAL_COLLECTION_08 93 +#define RAGE_STAT_WINNING_KILL 94 +#define RAGE_STAT_WINNING_FLAG_CAPTURE 95 +#define RAGE_STAT_WINNING_SCORE 96 +#define RAGE_STAT_SHIELD_ABSORBED_DAMAGE 97 +#define RAGE_STAT_AIR_KILLS 98 // kill an in air enemy +#define RAGE_STAT_AERIAL_KILLS 99 // kill an enemy from the air +#define RAGE_STAT_NO_VEHICLE_DEATHS 100 // finish a round without a death +#define RAGE_STAT_AFTERLIFE_KILLS 101 // killed someone while you were dead +#define RAGE_STAT_REVENGE_KILLS 102 +#define RAGE_STAT_SHIELD_USE 103 +#define RAGE_STAT_LONGEST_KILLSTREAK 104 +#define RAGE_STAT_LONGEST_LIFE 105 +#define RAGE_STAT_LONGEST_BULLY 106 +#define RAGE_STAT_LONGEST_RALLY_CHAIN 107 // most consecutive rally chains +#define RAGE_STAT_LONGEST_RALLY_CHAIN_MAX_TIME 108 // longest time while holding on to highest rally chain (5x) +#define RAGE_STAT_MOST_LONGEST_RALLY_CHAIN 109 // most consecutive rally chains +#define RAGE_STAT_MOST_LONGEST_RALLY_CHAIN_MAX_TIME 110 // longest time while holding on to highest rally chain (5x) +#define RAGE_STAT_MOST_KILLS 111 +#define RAGE_STAT_MOST_RALLYCAPS 112 +#define RAGE_STAT_MOST_TRIADS_COMPLETED 113 +#define RAGE_STAT_MOST_TRIADS_BROKEN 114 +#define RAGE_STAT_MOST_TRIADS_MISSED 115 +#define RAGE_STAT_MOST_METEORCAPS 116 +#define RAGE_STAT_MOST_METEOR_DROPS 117 +#define RAGE_STAT_MOST_POWERUPS 118 +#define RAGE_STAT_MOST_DEATHS 119 +#define RAGE_STAT_MOST_LONGEST_KILLSTREAK 120 +#define RAGE_STAT_MOST_MULTIKILLS 121 +#define RAGE_STAT_MATCH_WINNER 122 +#define RAGE_STAT_MOST_LONGEST_LIFE 123 +#define RAGE_STAT_MOST_LONGEST_BULLY 124 +#define RAGE_STAT_MOST_KILLS_AS_BULLY 125 +#define RAGE_STAT_MOST_BULLIES_KILLED 126 +#define RAGE_STAT_MOST_SHIELD_USE 127 +#define RAGE_STAT_HARD_DRIVER 128 +#define RAGE_STAT_MOST_SKULLS 129 +#define RAGE_STAT_MOST_FLAG_CAPS 130 +#define RAGE_STAT_MOST_AIR_KILLS 131 +#define RAGE_STAT_MOST_SUICIDES 132 +#define RAGE_STAT_LEAST_KILLS 133 +#define RAGE_STAT_LEAST_DEATHS 134 +#define RAGE_STAT_BEST_KDR 135 +#define RAGE_STAT_MOST_LEADER_KILLS 136 +#define RAGE_STAT_MOST_CHAIN_BREAKS 137 +#define RAGE_STAT_MOST_RALLY_CHAIN_OWNER_KILLS 138 +#define RAGE_STAT_MOST_MILES_DRIVEN 139 +#define RAGE_STAT_MOST_SPECIAL_KILLS 140 +#define RAGE_STAT_ACCURACY 141 // number of accuracy awards for getting over 50% accuracy in a match +#define RAGE_STAT_TWO_QUAD_PICKUPS 142 +#define RAGE_STAT_AI_ASSISTS 143 // doing % of damage to kill an AI (coop) +#define RAGE_STAT_VEHICLE_ASSISTS 144 // doing % of damage to kill a vehicle (VDM) +#define RAGE_STAT_HEADSHOT_KILLS 145 +#define RAGE_STAT_HEADSHOT_KILLS_SNIPER 146 +#define RAGE_STAT_BANDIT_KILLS 147 +#define RAGE_STAT_MUTANT_KILLS 148 +#define RAGE_STAT_AUTHORITY_KILLS 149 +#define RAGE_STAT_VEHICLE_KILLS_BY_CLASS_1 150 // how many class 1's you killed +#define RAGE_STAT_VEHICLE_KILLS_BY_CLASS_2 151 +#define RAGE_STAT_VEHICLE_KILLS_BY_CLASS_3 152 +#define RAGE_STAT_VEHICLE_KILLS_BY_CLASS_4 153 +#define RAGE_STAT_SEWER_LEVELS_COMPLETE 154 +#define RAGE_STAT_LEVELS_COMPLETE 155 +#define RAGE_STAT_TIME_IN_GAME 156 // total time in RAGE (sec) +#define RAGE_STAT_AI_KILLS 157 // AI + Player = Actors... +#define RAGE_STAT_PLAYER_KILLS 158 +#define RAGE_STAT_SHOTS 159 // hand weapons + vehicle shots +#define RAGE_STAT_ITEMS_TAKEN 160 +#define RAGE_STAT_CLIENT_DAMAGE 161 +#define RAGE_STAT_WEAPON_HIT_ENEMY 162 // shot hit enemy +#define RAGE_STAT_WEAPON_HIT_FRIENDLY 163 // shot hit teammate player +#define RAGE_STAT_WEAPON_HIT_OBJECT 164 // shot hit attachable bomb +#define RAGE_STAT_WEAPON_HIT_DIRECT 165 // used in grenade direct hits +#define RAGE_STAT_WEAPON_HIT_BREAKABLE 166 +#define RAGE_STAT_WEAPON_HITS_FOR_ACCURACY 167 // this is more of a temp stat that will be incremented to calculate hit accuracy +#define RAGE_STAT_WEAPON_BREAKABLE_DESTROYED 168 // breakables destroyed +#define RAGE_STAT_WEAPON_DAMAGE_TO_GENERAL 169 // damage done to breakables +#define RAGE_STAT_WEAPON_KILLED_ENEMY 170 +#define RAGE_STAT_WEAPON_KILLED_FRIENDLY 171 +#define RAGE_STAT_WEAPON_DAMAGE_ENEMY 172 +#define RAGE_STAT_WEAPON_DAMAGE_FRIENDLY 173 +#define RAGE_STAT_WEAPON_HEADSHOT_ENEMY 174 // times shot hit enemy in head, not a kill +#define RAGE_STAT_WEAPON_HEADSHOT_FRIENDLY 175 // times shot hit teammate in head, not a kill +#define RAGE_STAT_WEAPON_ACTORS_KILLED 176 // duplicated stat (AI + Player = Actors...) +#define RAGE_STAT_WEAPON_VEHICLES_KILLED 177 +#define RAGE_STAT_FIST_KILLS 178 +#define RAGE_STAT_PISTOL_KILLS 179 +#define RAGE_STAT_CROSSBOW_KILLS 180 +#define RAGE_STAT_RIFLE_KILLS 181 +#define RAGE_STAT_REGIME_MACHINEGUN_KILLS 182 +#define RAGE_STAT_REGIME_SHOTGUN_KILLS 183 +#define RAGE_STAT_SETTLER_MACHINEGUN 184 +#define RAGE_STAT_REGIME_ROCKETLAUNCHER 185 +#define RAGE_STAT_PLASMA_KILLS 186 +#define RAGE_STAT_DOUBLEBARREL_SHOTGUN_KILLS 187 +#define RAGE_STAT_DEPLOYABLETURRET_KILLS 188 +#define RAGE_STAT_DEPLOYABLETURRET_REGIME_KILLS 189 +#define RAGE_STAT_DEPLOYABLETURRET_PLACEABLE_KILLS 190 +#define RAGE_STAT_DEPLOYABLETURRET_BARRICADE_KILLS 191 +#define RAGE_STAT_DEPLOYABLETURRET_BARRICADE_MC_KILLS 192 +#define RAGE_STAT_SENTRYBOT_CHAINUPDRADE_KILLS 193 +#define RAGE_STAT_INCREASE_RALLY_CHAIN 194 +#define RAGE_STAT_MAX_RALLY_CHAIN 195 +#define RAGE_STAT_KILL_RALLY_CHAIN_OWNER 196 +#define RAGE_STAT_BREAK_RALLY_CHAIN 197 +#define RAGE_STAT_BREAK_TRIAD 198 +#define RAGE_STAT_KILL_TRIAD_OWNER 199 +#define RAGE_STAT_ONE_SHOT_KILL 200 // doesn't work with multi-trace weapons (shotgun, etc.) +#define RAGE_STAT_VDM_COMPLETED_RALLY 201 +#define RAGE_STAT_VDM_COMPLETED_RALLY_FIRST 202 // finished first in rally +#define RAGE_STAT_VDM_COMPLETED_RALLY_SECOND 203 // finished first in rally +#define RAGE_STAT_VDM_COMPLETED_RALLY_THIRD 204 // finished first in rally +#define RAGE_STAT_COOP_SCORE_MULTIPLIER 205 // not detected +#define RAGE_STAT_REVIVES 206 // number of times you were revived (by your partner) +#define RAGE_STAT_PARTNER_REVIVES 207 // number of times you revived your partner +#define RAGE_STAT_COOP_NO_INCAPACITATE 208 // Beat level in coop without anyone going down +#define RAGE_STAT_COOP_NO_INCAPACITATE_NIGHTMARE 209 // Beat level in coop without anyone going down on nightmare difficulty +#define RAGE_STAT_COOP_NO_DEFIB 210 // Beat level in coop without using personal defib (partner revive OK) +#define RAGE_STAT_COOP_NO_DEFIB_NIGHTMARE 211 // ^^ nightmare +#define RAGE_STAT_INCAPACITATES 212 // number of times you were incapacitated +#define RAGE_STAT_STEALTH_KILLS 213 +#define RAGE_STAT_COMBO_KILLS 214 // "stunning, then killing enemy" +#define RAGE_STAT_DEFEND_KILLS 215 // killing an enemy after he melee'd your partner +#define RAGE_STAT_VDM_SPECIAL_KILLS 216 // any type of special kill: double/tripple/quad/air/pull/afterlife/denial +#define RAGE_STAT_COOP_KILLS 217 // * +#define RAGE_STAT_COOP_REVENGE_KILLS 218 +#define RAGE_STAT_COOP_LEGENDS_COMPLETED 219 // * +#define RAGE_STAT_COOP_BEST_SCORE 220 // * +#define RAGE_STAT_COOP_SHOTS_FIRED 221 // * +#define RAGE_STAT_COOP_HEADSHOTS 222 // * +#define RAGE_STAT_COOP_HEADSHOT_KILLS 223 +#define RAGE_STAT_COOP_COLLECTIBLES_FOUND 224 // * +#define RAGE_STAT_COOP_SCORE_HIGHEST_RANK 225 // obtained highest score tier in coop +#define RAGE_STAT_COOP_SCORE_HIGHEST_RANK_NIGHTMARE 226 // ^^ nightmare +#define RAGE_STAT_COOP_BOMBCAR_SINGLE_MAX_KILLS 227 +#define RAGE_STAT_RR_KILLS 228 // Total kills for all mp road rage games (all game modes) +#define RAGE_STAT_RR_AWARDS_EARNED 229 // Total end of game awards in all mp RR game modes +#define RAGE_STAT_RR_ODO_GROUND 230 // Total miles driven in all mp RR game modes +#define RAGE_STAT_BULLIES_KILLED 231 // Killed Bully in MP game mode +#define RAGE_STAT_KILLS_AS_BULLY 232 // Kills while you are bully in MP +#define RAGE_STAT_BECAME_BULLY 233 // Kills while you are bully in MP +#define RAGE_STAT_SKILL_JUMPS 234 +#define RAGE_STAT_GAME_COMPLETED 235 // # of times completed at all difficulties +#define RAGE_STAT_GAME_COMPLETED_DIFFICULTY_0 236 +#define RAGE_STAT_GAME_COMPLETED_DIFFICULTY_1 237 +#define RAGE_STAT_GAME_COMPLETED_DIFFICULTY_2 238 +#define RAGE_STAT_GAME_COMPLETED_DIFFICULTY_3 239 +#define RAGE_STAT_ITEMS_ENGINEERED 240 +#define RAGE_STAT_KILLS_WITH_ENGINEERED_ITEM 241 +#define RAGE_STAT_STEALTH_KILLS_CROSSBOW 242 +#define RAGE_STAT_SENTRY_BOT_KILLS 243 +#define RAGE_STAT_SENTRY_BOT_SINGLE_MAX_KILLS 244 // how many kills with a single sentry bot? +#define RAGE_STAT_TURRET_KILLS 245 +#define RAGE_STAT_TURRET_SINGLE_MAX_KILLS 246 // how many kills with a single turret? +#define RAGE_STAT_MIND_CONTROLLED_KILLS 247 +#define RAGE_STAT_MIND_CONTROLLED_SINGLE_MAX_KILLS 248 // how many kills with a single mind controlled enemy? +#define RAGE_STAT_PERSONAL_DEATHS 249 +#define RAGE_STAT_PLAYER_SUICIDES 250 // non-vehicle suicides +#define RAGE_STAT_PUNCHES_THROWN 251 +#define RAGE_STAT_PUNCHES_HIT 252 +#define RAGE_STAT_JETPACKER_SHOT 253 +#define RAGE_STAT_FIELD_GOALS_FROM_ATV 254 +#define RAGE_STAT_CASH_SP 255 +#define NUM_RAGE_STATS 256 +#define MAX_RAGE_STATS 500 + +#define JOBSTATUS_NONE 0 +#define JOBSTATUS_FAILED 1 +#define JOBSTATUS_ACCEPTED 2 +#define JOBSTATUS_READYTOTURNIN 3 +#define JOBSTATUS_READYTOTURNIN_UNKNOWN 4 +#define JOBSTATUS_COMPLETED 5 + +#define SIMPLEMISSIONSTATUS_ACCEPTED 0 +#define SIMPLEMISSIONSTATUS_READYTOTURNIN 1 +#define SIMPLEMISSIONSTATUS_COMPLETED 2 + +#define TUTORIAL_TEXT 0 // Just text +#define TUTORIAL_IMAGE 1 // Just image and heading text +#define TUTORIAL_COMBO 2 // Heading and body text and image +#define TUTORIAL_SIMPLE 3 // Single line of text shown on hud + +#define TUTORIAL_SPECIAL_NONE 0 // used for regular tutorials +#define TUTORIAL_SPECIAL_CROUCH 1 // used for special casing crouch tutorial +#define TUTORIAL_SPECIAL_VEHICLE 2 // must be in a vehicle for this to show. +#define TUTORIAL_SPECIAL_NONVEHICLE 3 // must not be in a vehicle for this to show. +#define TUTORIAL_SPECIAL_LOCKGRINDER 4 // build lockgrinder +#define TUTORIAL_SPECIAL_QUICKSELECTOR 5 // for things that need to show the quickselector + +#define JOBPRECONDITION_NONE 0 // No precondition +#define JOBPRECONDITION_JOB 1 // Job greater or equal to jobstatus +#define JOBPRECONDITION_ITEM 2 // InventoryItem acquired +#define JOBPRECONDITION_GAMESTATEINT 3 // idDeclGameStateInt required + +#define JOBPRECONDITIONSTATUS_ACCEPTED 0 +#define JOBPRECONDITIONSTATUS_READYTOTURNIN 1 +#define JOBPRECONDITIONSTATUS_COMPLETED 2 + +#define JOBREWARD_NONE 0 // No reward +#define JOBREWARD_ITEM 1 // InventoryItem acquired +#define JOBREWARD_ITEM_REMOVE 2 // remove an inventory item. +#define JOBREWARD_FACTION 3 // FactionAttitude achieved +#define JOBREWARD_JOBCOMPLETION 4 // Completes another job. +#define JOBREWARD_JOBACCEPT 5 // Gives you another job. +#define JOBREWARD_JOBREMOVE 6 // Removes this job and all trace of it from memory. +#define JOBREWARD_JOBREMOVE_INPROGRESS 7 // Removes this job if it is currently in progress +#define JOBREWARD_USEALTERNATEHANDS 8 // once this job is rewarded, use the alternate hands model +#define JOBREWARD_GAMESTATEINT 9 // sets a gameStateInt value +#define JOBREWARD_GARAGE 10 // sets all keys to be in a certain garage. +#define JOBREWARD_ACTIVATE_JOB 11 // if the jobdecl is a job in progess set it as the active job. + +#define JOBFACTION_NONE 0 // No associated faction +#define JOBFACTION_BOUNTY 1 // No associated faction but bounty board job +#define JOBFACTION_WASTELANDER 2 // wasteland job faction +#define JOBFACTION_WELLSPRING 3 // job giver is wellspring faction +#define JOBFACTION_SUBWAYTOWN 4 // job giver is subway town faction +#define JOBFACTION_REGIME 5 // job giver is regime faction +#define JOBFACTION_MUTANTBASH 6 // job given is mutant bash related + +#define JOBCOMPLETE_NONE 0 // No action required +#define JOBCOMPLETE_ITEM 1 // One or more of an InventoryItem must be acquired +#define JOBCOMPLETE_TRIGGER 2 // A Trigger must be tripped. +#define JOBCOMPLETE_JOB 3 // an other job must be completed for this job to complete +#define JOBCOMPLETE_JOB_ACCEPTED 4 // an other job must be accepted or further for this job to complete +#define JOBCOMPLETE_GAMESTATEINT 5 // game state int must be count or higher. +#define JOBCOMPLETE_JUSTDISPLAY 6 // just for display, not an actual completion condition + +#define JOBTYPE_NONE 0 // invalid bass type to know something is wrong. +#define JOBTYPE_REQUIRED 1 // main required quest job. +#define JOBTYPE_SIMPLE 2 // helpers for the main job. i.e. pickup pistol, talk to lassard. +#define JOBTYPE_OPTIONAL 3 // optional quest job +#define JOBTYPE_OPTIONAL_POSTED 4 // optional quest job that is not related to an ai. +#define JOBTYPE_REPEATING 5 // repeating optional quest job. (i.e. destroy bandit cars) +#define JOBTYPE_APPROACHVO 6 // wandering NPC one-off approach vo job +#define JOBTYPE_RADIOVO 7 // radio one-off vo job +#define JOBTYPE_DATAMANAGEMENT 8 // used to maintain data state. +#define JOBTYPE_DYNAMIC_COMBAT 9 // used for vehicle combat dynamic job +#define JOBTYPE_DYNAMIC_OTHER 10 // used for other dynamic jobs +#define JOBTYPE_JUSTGUI 11 // not really a job but uses the same system to show the gui. (used for transitioning between wastelands) +#define JOBTYPE_INFO 12 // used for information that is always stored + +#define BURSTMODE_DEFAULT 0 +#define BURSTMODE_SINGLE 0 // a single shot is fired +#define BURSTMODE_BURST 1 // a limited number shots are fired in succession +#define BURSTMODE_FULLAUTO 2 // shots are fired until the loaded ammo is expended +#define BURSTMODE_MAX 3 // number of burst mode types (unused for script) + +#define WEAPONKICK_AXIS_YAW 0 +#define WEAPONKICK_AXIS_PITCH 1 +#define WEAPONKICK_AXIS_PITCH_ADDITIONAL 2 +#define WEAPONKICK_WEAPON_OFFSET 3 +#define WEAPONKICK_WEAPON_OFFSET_LEFT 4 +#define WEAPONKICK_AXIS_MAX 5 + +#define WEAPONANIM_FISTS 0 // weapon is a fist weapon (nothing held in hands) +#define WEAPONANIM_MELEE 1 // weapon is a melee weapon +#define WEAPONANIM_PISTOL 2 // weapon is a one-handed pistol-type weapon +#define WEAPONANIM_RIFLE 3 // weapon is a two-handed rifle-ish weapon +#define WEAPONANIM_MAX 4 // number of weapon anim set types (unused for script) + +#define INVENUM_ALL 0 // all items from player +#define INVENUM_NOAMMO 1 // all items but no ammo from player +#define INVENUM_AMMOONLY 2 // only ammo items from player +#define INVENUM_NOQUICKSLOTS 3 // all items but no ammo or quickslot items from player +#define INVENUM_FOCUSITEMS 4 // all items from the player's focus entity +#define INVENUM_LOOTABLEITEMS 5 // all lootable items from the player's focus entity +#define INVENUM_ALTENTITYITEMS 6 // all items from the alternate inventory entity set in idUIScope_Player +#define INVENUM_FOCUSITEMSFORSALE 7 // all items for sale from the focus entity +#define INVENUM_ITEMSFORSALE 8 // all items for sale from the player entity +#define INVENUM_QUICKITEMS 9 // all inventory items with quickslots defined (not weapons) +#define INVENUM_INVENTORYONLY 10 // all inventory items with no weapons or ammo +#define INVENUM_EQUIPPEDWEAPONS 11 // only weapons equipped to a quick slot +#define INVENUM_UNEQUIPPEDWEAPONS 12 // only weapons not equipped to a quick slot +#define INVENUM_INVENTORYONLYCONTAINERS 13 // same as inventoryOnly, but displays containers first +#define INVENUM_INVENTORYCONTAINERITEMS 14 // only the container items for the specified container item +#define INVENUM_VEHICLEUPGRADES 15 // all upgrades that can be applied to any vehicle + +#define INVQUERY_PLAYER 0 // query the player's inventory +#define INVQUERY_FOCUSENTITY 1 // query the player's focus entity's inventory +#define INVQUERY_NAMEDENTITY 2 // query the named entity's inventory + +#define QUICKSLOTGROUP_NONE 0 // item can not be placed into a quickslot group +#define QUICKSLOTGROUP_WEAPON 1 // item can be in the weapon quickslot group +#define QUICKSLOTGROUP_ITEM 2 // item can be in the items quickslot group +#define QUICKSLOTGROUP_VEHICLE 3 // item can be in the vehicle quickslot group + +#define WASTELAND_UNDEFINED 0 +#define WASTELAND_ONE 1 +#define WASTELAND_TWO 2 + +#define VEHICLE_DRIVER_ATV 0 +#define VEHICLE_DRIVER_CAR 1 +#define VEHICLE_DRIVER_MAX 2 + +#define UPGRADE_TIRES 0 // tires +#define UPGRADE_SUPERCHARGER 1 // supercharger +#define UPGRADE_SUSPENSION 2 // suspension +#define UPGRADE_BOOSTER 3 // booster +#define UPGRADE_FRONTGRILL 4 // front-grill +#define UPGRADE_WEAPONS 5 // weapons +#define UPGRADE_FLAG 6 // flag +#define UPGRADE_THEME 7 // theme +#define UPGRADE_TRANSMISSION 8 // transmission +#define UPGRADE_ENGINE 9 // engine +#define UPGRADE_ARMOR 10 // armor +#define UPGRADE_TIRERIPPERS 11 // tire-rippers +#define UPGRADE_MAGNET 12 // magnet +#define UPGRADE_MAX 13 + +#define VEHICLE_CLASSNONE 0 // no class +#define VEHICLE_CLASS1 1 // class 1 +#define VEHICLE_CLASS2 2 // class 2 +#define VEHICLE_CLASS3 3 // class 3 +#define VEHICLE_CLASS4 4 // class 4 + +#define BACKPACK 0 // in the actor's backpack (no visible) +#define HOLSTERED 1 // in a holster slot +#define EQUIPPED 2 // equipped is it's use spot + +#define AI_DODGE_TYPE_MELEE 0 +#define AI_DODGE_TYPE_LIGHT 1 +#define AI_DODGE_TYPE_MEDIUM 2 +#define AI_DODGE_TYPE_HEAVY_CLOSE_RANGE 3 +#define AI_DODGE_TYPE_HEAVY_MEDIUM_RANGE 4 +#define AI_DODGE_TYPE_HEAVY_LONG_RANGE 5 + +#define PISTATE_INACTIVE 0 // waiting to be activated +#define PISTATE_APPROACH_PLAYED 1 // approach VO played +#define PISTATE_JOB_SETUP_PLAYED 2 // job VO played +#define PISTATE_JOB_END_PLAYED 3 // job VO played +#define PISTATE_JOB_IN_PROGRESS 4 // job in progress + +#define INTERACTIONCONDITION_NONE 0 // No precondition +#define INTERACTIONCONDITION_JOB 1 // Job status higher then jobStatus +#define INTERACTIONCONDITION_ITEM 2 // InventoryItem acquired, if count = 0 means you can't have the item. +#define INTERACTIONCONDITION_GAMESTATEINT 3 // gameStateInt value required +#define INTERACTIONCONDITION_FORCEFALSE 4 // forces the result to false +#define INTERACTIONCONDITION_FORCETRUE 5 // forces the result to true + +#define INTERACTIONTEST_JOBSTATUS_ACCEPTED 0 +#define INTERACTIONTEST_JOBSTATUS_READYTOTURNIN 1 +#define INTERACTIONTEST_JOBSTATUS_COMPLETED 2 + +#define AIIDLETURN_RELAXED 0 +#define AIIDLETURN_COMBAT 1 +#define AIIDLETURN_INCOVER 2 +#define AIIDLETURN_MAX 3 + +#define AIINJUREDRUNMODE_MOSTDAMAGED 0 // injured run once beyond damage threshold, or after played pain +#define AIINJUREDRUNMODE_RECENTLYDAMAGED 1 // injured run when recently damaged, for a limited time +#define AIINJUREDRUNMODE_AFTERPAIN 2 // injured run once beyond damage threshold but only after to injury pain +#define AIINJUREDRUNMODE_GORE_LEVEL 3 // injured runs based on damage group gore level info + +#define VOCHAIN_NONE 0 +#define VOCHAIN_ORDER_STAGE_ADVANCE 1 +#define VOCHAIN_ORDER_STAGE_FALLBACK 2 +#define VOCHAIN_ORDER_STAGE_RETREAT 3 +#define VOCHAIN_ORDER_CHARGE 4 +#define VOCHAIN_ORDER_ASSAULT 5 +#define VOCHAIN_ORDER_DEFEND 6 +#define VOCHAIN_ORDER_FLANK 7 +#define VOCHAIN_ORDER_GRENADE 8 +#define VOCHAIN_ORDER_COVER_FIRE 9 +#define VOCHAIN_RESPOND_STAGE_ADVANCING 10 +#define VOCHAIN_RESPOND_STAGE_FALLBACK 11 +#define VOCHAIN_RESPOND_STAGE_RETREAT 12 +#define VOCHAIN_RESPOND_CHARGING 13 +#define VOCHAIN_RESPOND_ASSAULTING 14 +#define VOCHAIN_RESPOND_DEFENDING 15 +#define VOCHAIN_RESPOND_FLANKING 16 +#define VOCHAIN_RESPOND_GRENADE_OUT 17 +#define VOCHAIN_RESPOND_COVERING 18 +#define VOCHAIN_RESPOND_OK 19 +#define VOCHAIN_RESPOND_CANT_SEE 20 +#define VOCHAIN_RESPOND_INJURED 21 +#define VOCHAIN_RESPOND_INTIMIDATED 22 +#define VOCHAIN_RESPOND_PINNED 23 +#define VOCHAIN_RESPOND_REPEAT_ORDER 24 +#define VOCHAIN_RESPOND_ILL_DO_IT 25 +#define VOCHAIN_RESPOND_ENEMY_LOCATION 26 +#define VOCHAIN_DELAYED_VO 27 +#define VOCHAIN_DELAYED_ORDER 28 +#define VOCHAIN_MAX 29 + +#define DAMAGETYPE_NONE 0 +#define DAMAGETYPE_GENERIC 1 // generic damage type, should be used by scripts etc +#define DAMAGETYPE_MELEE 2 // damage from melee +#define DAMAGETYPE_PISTOL 4 // damage from a pistol +#define DAMAGETYPE_RIFLE 8 // damage from a rifle +#define DAMAGETYPE_SHOTGUN 16 // damage from a shotgun +#define DAMAGETYPE_TURRET 32 // damage from a turret +#define DAMAGETYPE_VEHICLE_RAM 64 // damage from a vehicle ram +#define DAMAGETYPE_LASER 128 // damage from laser +#define DAMAGETYPE_EXPLOSION 256 // explosion damage +#define DAMAGETYPE_FIRE 512 // fire damage +#define DAMAGETYPE_ELECTRIC 1024 // electric damage +#define DAMAGETYPE_EDGED 4096 // edged damage, knifes etc +#define DAMAGETYPE_BLUNT 8192 // blunt damage, batongs, rifle butt +#define DAMAGETYPE_LASER_CUTTING 16384 // damage causes cutting to occur +#define DAMAGETYPE_NO_DAMAGE 32768 // no damage should be taken from this damage, only effects +#define DAMAGETYPE_ALL 2147483647 // all damage types +#define DAMAGETYPE_LIGHT 140 +#define DAMAGETYPE_HEAVY 48 + +#define GORETYPE_NONE 0 +#define GORETYPE_DECAPITATION 1 // decapitation +#define GORETYPE_DISMEMBER_ARMS 2 // arm dismemberment +#define GORETYPE_DISMEMBER_LEGS 4 // leg dismemberment +#define GORETYPE_GIB 8 // body gib +#define GORETYPE_HEAD_EXPLODE 16 // head explode +#define GORETYPE_SMALL_WOUND 32 // small wound +#define GORETYPE_BIG_WOUND 64 // big wound +#define GORETYPE_TORSO_SAW 128 // saw +#define GORETYPE_BFG 256 // bfg complete body gib +#define GORETYPE_ANY 2147483647 // all + +#define DAMAGESRC_UNKNOWN 0 +#define DAMAGESRC_BULLET 1 +#define DAMAGESRC_MELEE 2 +#define DAMAGESRC_FIRE 4 +#define DAMAGESRC_ELECTRICAL 8 +#define DAMAGESRC_FALL 16 +#define DAMAGESRC_CRUSH 32 +#define DAMAGESRC_EXPLOSIVE 64 +#define DAMAGESRC_CHAINSAW 128 +#define DAMAGESRC_ACID 256 +#define DAMAGESRC_HELLSPIKE 512 +#define DAMAGESRC_PLASMA 1024 +#define DAMAGESRC_BFG 2048 +#define DAMAGESRC_SPIRITWEB 4096 +#define DAMAGESRC_POISON_GAS 8192 +#define DAMAGESRC_SYNCED_FATALITY 16384 + +#define ATTACK_DEFAULT 0 +#define ATTACK_LEFT 1 +#define ATTACK_RIGHT 2 +#define ATTACK_LEFT2 3 // single model with 2 weapons, each weapons has left/right muzzle +#define ATTACK_RIGHT2 4 +#define ATTACK_LEFT3 5 // single model with 3 weapons, each weapons has left/right muzzle +#define ATTACK_RIGHT3 6 +#define ATTACK_MAX 7 + +#define USABLE_NOT_USABLE 0 +#define USABLE_DISABLED 1 // generic usable, show icon but we can't actually use it +#define USABLE_LOOT 2 +#define USABLE_PROP 3 +#define USABLE_AI_TALK 4 +#define USABLE_AI_TOWN 5 +#define USABLE_AI_TAGGABLE 6 +#define USABLE_DOOR 7 +#define USABLE_MOVER 8 +#define USABLE_RC_PICKUP 9 +#define USABLE_VEHICLE_DRIVE 10 +#define USABLE_VEHICLE_GUNNER 11 +#define USABLE_DISASSEMBLE 12 +#define USABLE_AMMO_REFILL 13 +#define USABLE_MAX 14 + +#define AIEVENT_NONE 0 +#define AIEVENT_FOOTSTEP 1 // a footstep sound +#define AIEVENT_GUNFIRE 2 // a gunfire sound +#define AIEVENT_EXPLOSION 4 // an explosion sound +#define AIEVENT_GRENADE 8 // a bounds surrounding a grenade +#define AIEVENT_BODY 16 // a bounds surrounding a dead body +#define AIEVENT_VEHICLE 32 // a swept bounds surrounds a vehicle +#define AIEVENT_AIM 64 // a swept bounds encompassing an entity's aim vector +#define AIEVENT_VOICE 512 // an AI said or yelled something +#define AIEVENT_INVESTIGATE 2048 // a generic an AI should investigate +#define AIEVENT_PROJECTILE 4096 // a generic projectile that AI should avoid +#define AIEVENT_POSSESSION 8192 // distracted by a possessed guy +#define AIEVENT_DOOR_MOTION 65536 // door open/close sound +#define AIEVENT_DEAD_BODY_LAND 131072 // dead body crumple sound +#define AIEVENT_DEPLOY_SOUND 262144 // deploy turret, rc car, etc +#define AIEVENT_VEHICLE_SOUND 524288 // sound from rc cars, vehicles +#define AIEVENT_PLAYER_GRENADE 1048576 // a (larger) bounds surrounding a grenade for the player +#define AIEVENT_PLAYER_INTERACTION 2097152 // bounds around the player for init'ing interactions +#define AIEVENT_RELOAD 16777216 // AI or player is reloading their weapon +#define AIEVENT_PROJECTILE_IMPACT 33554432 // sound of something like a crossbow bolt hitting the wall +#define AIEVENT_DELAYED_VO 67108864 +#define AIEVENT_ALL_AI -1048577 // all AI-only events +#define AIEVENT_ALL_PLAYER 1048576 // all Player-only events +#define AIEVENT_ALL -1 // all events + +#define SIG_TOUCH 0 // object was touched +#define SIG_USE 1 // object was used +#define SIG_TRIGGER 2 // object was activated +#define SIG_REMOVED 3 // object was removed from the game +#define SIG_DAMAGE 4 // object was damaged +#define SIG_BLOCKED 5 // object was blocked +#define SIG_MOVER_POS1 6 // mover at position 1 (door closed) +#define SIG_MOVER_POS2 7 // mover at position 2 (door open) +#define SIG_MOVER_1TO2 8 // mover changing from position 1 to 2 +#define SIG_MOVER_2TO1 9 // mover changing from position 2 to 1 +#define SIG_PLAYER_INTERACTING 10 // player within interaction range +#define SIG_INTERACTION_FINISHED 11 // interaction with a player finished +#define NUM_SIGNALS 12 +#define SIG_DOOR_CLOSED 6 // mover at position 1 (door closed) +#define SIG_DOOR_OPEN 7 // mover at position 2 (door open) +#define SIG_DOOR_OPENING 8 // mover changing from position 1 to 2 +#define SIG_DOOR_CLOSING 9 // mover changing from position 2 to 1 + +#define ENTITYTYPE_NONE 0 +#define ENTITYTYPE_MISC 1 // all weapons, power-ups, other models (EXCEPT those below) +#define ENTITYTYPE_LIVINGAI 2 // all living ai's (health > 0) +#define ENTITYTYPE_DEADAI 4 // all dead ai's (health <= 0) +#define ENTITYTYPE_TURRET 8 // all player-placed sentry turrets + +#define INVALID_FIBER 0 + +#define DIR_UP -1 // upwards in worldspace +#define DIR_DOWN -2 // downwards in worldspace +#define DIR_LEFT -3 // left, relative to the object's yaw +#define DIR_RIGHT -4 // right, relative to the object's yaw +#define DIR_FORWARD -5 // forward, relative to the object's yaw +#define DIR_BACK -6 // backward, relative to the object's yaw +#define DIR_REL_UP -7 // up, relative to the object's full orientation +#define DIR_REL_DOWN -8 // down, relative to the object's full orientation +#define DIR_REL_LEFT -9 // left, relative to the object's full orientation +#define DIR_REL_RIGHT -10 // right, relative to the object's full orientation +#define DIR_REL_FORWARD -11 // forward, relative to the object's full orientation +#define DIR_REL_BACK -12 // backward, relative to the object's full orientation + +#define MAPTYPE_INSTANCE 0 // InstanceMap +#define MAPTYPE_OUTDOOR 1 // OutdoorMap (Wasteland) +#define MAPTYPE_RACETRACK 2 // RaceTrack map +#define MAPTYPE_TOWN 3 // TownMap (Wasteland town or hub) +#define MAPTYPE_MERGEMAP 4 // MergeMap (a terrain+unique fragment map that's merged with others to create a Wasteland) +#define MAPTYPE_MAX 5 + +#define OFFERCHOICE_DECLINED 0 // player declined the offer +#define OFFERCHOICE_ACCEPTED 1 // player accepted the offer +#define OFFERCHOICE_PURCHASE 2 // player purchased an item +#define OFFERCHOICE_GENERICSELECTION_1 3 // player generic selection 1 +#define OFFERCHOICE_GENERICSELECTION_2 4 // player generic selection 2 +#define OFFERCHOICE_GENERICSELECTION_3 5 // player generic selection 3 +#define OFFERCHOICE_GENERICSELECTION_4 6 // player generic selection 3 +#define OFFERCHOICE_UNKNOWN 7 // hasn't chosen yet + +#define TL_EVENT_NONE 0 // Undefined +#define TL_EVENT_ANIM 1 // Animation event(play animation) +#define TL_EVENT_SOUND 2 // Sound event(play sound) +#define TL_EVENT_TELEPORT 3 // Teleport event(move entity) +#define TL_EVENT_SETKEY 4 // SetKey event(modify entity value) +#define TL_EVENT_ANIMKEY 5 // AnimKey event(animate entity value) +#define TL_EVENT_ACTIVATE 6 // Activate event(activate entity) +#define TL_EVENT_SETENV 7 // SetEnv event(set env override) +#define TL_EVENT_MAX 8 + +#define TL_KEY_INVALID -1 +#define TL_KEY_VISIBILITY 0 // Entity visibility +#define TL_KEY_LIGHTCOLOR 1 // Light entity color +#define TL_KEY_DOF 2 // Depth of field on camera, sets all four values below +#define TL_KEY_FOCAL 3 // Focal plane +#define TL_KEY_NEARBP 4 // Near blur plane +#define TL_KEY_FARBP 5 // Far blur plane +#define TL_KEY_BSCALE 6 // Blur scale +#define TL_KEY_MAX 7 + +#define TL_KEYTYPE_BOOL 0 // boolean valuebool +#define TL_KEYTYPE_INT 1 // integer valueint +#define TL_KEYTYPE_FLOAT 2 // floating point valuefloat +#define TL_KEYTYPE_FLOAT3 3 // 3-float valueidVec3 +#define TL_KEYTYPE_COLOR_RGB 4 // rgb color valueidVec3 +#define TL_KEYTYPE_FLOAT4 5 // 4-float valueidVec4 +#define TL_KEYTYPE_COLOR_RGBA 6 // rgba color valueidVec4 +#define TL_KEYTYPE_MAX 7 + +#define GROUP_AVERAGE_HEALTH 0 // trigger on the average health of the group members +#define GROUP_MEMBERS_DEAD 1 // trigger on the number of dead group members +#define GROUP_MEMBERS_DEAD_UNALERTED 2 // trigger on the number of dead group members if the group has not yet been alerted +#define GROUP_MEMBERS_ALIVE 3 // trigger on the number of group members remaining +#define GROUP_MEMBERS_ALIVE_UNALERTED 4 // trigger on the number of members remaining in group that is not alerted +#define GROUP_PERCENT_ALIVE 5 // trigger on percentage of total group still alive +#define GROUP_CONFIDENCE 6 // trigger on the average confidence level for the group. 0 is SCARED while 4 is FEARLESS. +#define GROUP_NUMBERS_ADVANTAGE 7 // trigger on number of living group members minus number of known group enemies +#define AVERAGE_ENEMY_HEALTH 8 // trigger on the average health of all enemies known to the group +#define LOWEST_PLAYER_HEALTH 9 // trigger on health of player with lowest health +#define LOWEST_TARGET_PLAYER_HEALTH 10 // trigger on the health of player with lowest health that is a target of the group +#define HIGHEST_PLAYER_HEALTH 11 // trigger on health of player with lowest health +#define HIGHEST_TARGET_PLAYER_HEALTH 12 // trigger on the health of player with lowest health that is a target of the group +#define GROUP_LEADER_HEALTH 13 // trigger on the health of the group leader +#define HAS_ENEMY 14 // true if more than 1/2 of the group members have an enemy target (search or combat) +#define NUM_IN_COMBAT 15 // returns the number of living group members in the combat state +#define NUM_IN_SEARCH 16 // returns the number of living group members in the search state +#define NUM_IN_RELAXED 17 // returns the number of living group members in the relaxed state +#define NUM_WITH_ENEMY 18 // returns the number of living group members that have an enemy +#define NUM_WITH_PLAYER_ENEMY 19 // returns the number of living group members that have a player as the enemy +#define TRIGGERVAR_MAX 20 // internal use only! do not use in editor! + +#define ACTIVATOR_NONE 0 // pass a NULL activator +#define ACTIVATOR_GROUP_LEADER 1 // pass the group leader as the activator of the trigger +#define ACTIVATOR_RANDOM_GROUP_MEMBER 2 // pass a randomly selected member of the group as the activator of the trigger (include dead members) +#define ACTIVATOR_RANDOM_LIVE_GROUP_MEMBER 3 // pass a randomly selected living member of the group as the activator of the trigger ( NULL if no living members ) +#define ACTIVATOR_RANDOM_DEAD_GROUP_MEMBER 4 // pass a randomly selected dead member of the group as the activator of the trigger ( NULL if no dead members ) +#define ACTIVATOR_RANDOM_ENEMY 5 // pass a randomly selected enemy from the known enemies of the group as the activator of the trigger +#define ACTIVATOR_TARGET_PLAYER_LOWEST_HEALTH 6 // pass the player with the lowest health who is a known enemy of the group as the activator of the trigger ( if no targeted players, choose from non-targeted players ) +#define ACTIVATOR_TARGET_PLAYER_HIGHEST_HEALTH 7 // pass the player with the highest health who is a known enemy of the group as the activator of the trigger ( if no targeted players, choose from non-targeted players ) +#define ACTIVATOR_PLAYER_LOWEST_HEALTH 8 // pass the player with the lowest health as the activator of the trigger +#define ACTIVATOR_PLAYER_HIGHEST_HEALTH 9 // pass the player with the highest health as the activator of the trigger + +#define TRIGGEROP_LESS_THAN 0 // trigger when the trigger variable is less than the test value +#define TRIGGEROP_LESS_THAN_EQUAL 1 // trigger when the trigger variable is less than or equal to the test value +#define TRIGGEROP_EQUAL 2 // trigger when the trigger variable equals the test value +#define TRIGGEROP_GREATER_THAN 3 // trigger when the trigger variable is greater than the test value +#define TRIGGEROP_GREATER_THAN_EQUAL 4 // trigger when the trigger variable is greater than or equal to the test value + +#define AIMOVESTATUS_DONE 0 +#define AIMOVESTATUS_MOVING 1 +#define AIMOVESTATUS_ERROR 2 +#define AIMOVESTATUS_NO_AAS 3 // no aas +#define AIMOVESTATUS_INVALID_ENTITY 4 // tried to move to a NULL entity +#define AIMOVESTATUS_UNREACHABLE 5 // point or entity is unreachable +#define AIMOVESTATUS_NOT_IN_AAS 6 // AI could not be pushed into a valid AAS area. +#define AIMOVESTATUS_PATHING_FAILED 7 // couldn't find a path to the destination point +#define AIMOVESTATUS_OBSTRUCTED 8 // obstacle in the way +#define AIMOVESTATUS_NO_PATH_GROUP 9 // no path group was found +#define AIMOVESTATUS_NO_PATH_POINT 10 // no closest path point was found +#define AIMOVESTATUS_STUCK 11 // not making any progress for an unknown reason +#define AIMOVESTATUS_MAX 12 + +#define ONOFFAUTO_OFF 0 +#define ONOFFAUTO_ON 1 +#define ONOFFAUTO_AUTO 2 + +#define MERCHANTCONDITION_AVAILABLE 0 // No precondition +#define MERCHANTCONDITION_PLAYERINVENTORY 1 // test if the player has the test inventory item +#define MERCHANTCONDITION_NOTININVENTORY 2 // test to make sure an item isn't in the inventory. +#define MERCHANTCONDITION_JOB_ACCEPTED 3 // Job at least accepted +#define MERCHANTCONDITION_JOB_READY 4 // Job at least ready +#define MERCHANTCONDITION_JOB_COMPLETE 5 // Job complete + +#define TAKEDOWNTYPE_DEFAULT 0 // Default, if friendly won't be able to do takedowns +#define TAKEDOWNTYPE_NOTAKEDOWN 1 // Can't do takedowns on this ai +#define TAKEDOWNTYPE_FORCEFRIENDLYTAKEDOWN 2 // Can do takedown even if friendly + +#define ACTION_SET_CLASSES 0 +#define ACTION_ADD_CLASSES 1 +#define ACTION_REMOVE_CLASSES 2 + +#define TARGETJOB_ACCEPTED 0 +#define TARGETJOB_READYTOTURNIN 1 +#define TARGETJOB_COMPLETED 2 +#define TARGETJOB_FAILED 3 + +#define JOBTRIGGEREDTIME_IMMEDIATE 0 +#define JOBTRIGGEREDTIME_MAPLOAD 1 +#define JOBTRIGGEREDTIME_BOTH 2 + +#define JOBTRIGGEREDTYPE_EQUAL 0 +#define JOBTRIGGEREDTYPE_GREATER_OR_EQUAL 1 +#define JOBTRIGGEREDTYPE_LESS 2 +#define JOBTRIGGEREDTYPE_NOTEQUAL 3 + +#define TLC_ACTIVATE 0 +#define TLC_ACTIVATE_FROM_DEACTIVE 1 +#define TLC_DEACTIVATE_IN_MAP 2 +#define TLC_ADD_DEACTIVE_TO_PLAYER 3 +#define TLC_REMOVE_FROM_PLAYER 4 +#define TLC_REMOVE_FROM_GAME 5 +#define TLC_REMOVE_MARK_ACTIVE_NEXT_MAP_LOAD 6 +#define TLC_REMOVE_MARK_DEACTIVE_NEXT_MAP_LOAD 7 + +#define TARGETLAYERCHANGE_NONE 0 +#define TARGETLAYERCHANGE_ACTIVATE 1 +#define TARGETLAYERCHANGE_DEACTIVATE 2 + +#define BLOCKED_NONE 0 +#define BLOCKED_WORLD 1 // World blocks dummyFire from shooting +#define BLOCKED_AI 2 // AI blocks dummyFire from shooting +#define BLOCKED_PLAYER 4 // Player blocks dummyFire from shooting +#define BLOCKED_VEHICLE 8 // Vehicles block dummyFire from shooting + +#define WHEN_GOING_ABOVE_COUNT 0 +#define WHEN_GOING_BELOW_COUNT 1 +#define WHEN_REACHING_COUNT 2 + +#define MODE_AUTO 0 +#define MODE_MANUAL 1 + +#define ELEMENT_NONE 0 +#define ELEMENT_BOTTOMBAR 1 + +#define HELPBUTTON_NONE 0 +#define HELPBUTTON_USE 1 +#define HELPBUTTON_JUMP 2 +#define HELPBUTTON_CROUCH 3 +#define HELPBUTTON_JOURNAL 4 +#define HELPBUTTON_LOOK 5 +#define HELPBUTTON_SPRINT 6 +#define HELPBUTTON_FIRE 7 +#define HELPBUTTON_EXIT 8 +#define HELPBUTTON_MAX 9 + + +/* +================================================ + idEntity +================================================ +*/ + +// Returns entity from a name +scriptEvent entity findEntity( string newName ); + +// Returns the name of this entity. +scriptEvent string getName(); + +// Sets the name of this entity. +scriptEvent void setName( string newName ); + +// Called when an entity is triggered +scriptEvent void activate( entity activator ); + +// Causes this entity to activate all it's targets. Similar to how a trigger activates entities. Activator is the entity that caused the action (usually the player). +scriptEvent void activateTargets( entity activator ); + +// sets this entity activatable or unactivatable +scriptEvent void makeActivatable( boolean activatable ); + +// Returns the number of entities this entity has targeted. +scriptEvent boolean targetsReady(); + +// Returns the number of targets. +scriptEvent float numTargets(); + +// Returns the requested target entity. +scriptEvent entity getTarget( float index ); + +// Removes the specified entity from the target list. Returns false if not found. +scriptEvent boolean removeTarget( entity target ); + +// Adds the specified entity to the target list +scriptEvent void addTarget( entity target ); + +// Clear all entities in the target list +scriptEvent void clearTargets(); + +// Returns a random targeted entity. Pass in an entity name to skip that entity. +scriptEvent entity randomTarget( string ignore ); + +// Fixes the position and orientation of this entity relative to another entity, such that when the master entity moves, so does this entity. +scriptEvent void bind( entity master ); + +// Fixes the position (but not orientation) of this entity relative to another entity, such that when the master entity moves, so does this entity. +scriptEvent void bindPosition( entity master ); + +// Fixes the position and orientation of this entity relative to a joint on another entity, such that when the master's joint moves, so does this entity. +scriptEvent void bindToJoint( entity master, string animName, string jointName, float orientated ); + +// Detaches this entity from its master. +scriptEvent void unbind(); + +// Removes all attached entities from the game. +scriptEvent void removeBinds(); + +// Sets the owner of this entity. Entity's will never collide with their owner. +scriptEvent void setOwner( entity owner ); + +// Sets the progression owner of this entity. The progression owner of this entity is notified on removal/use/destruction. +scriptEvent void setProgressionOwner( entity owner ); + +// Notifies the progression owner of this entity so it can update it's state. +scriptEvent void notifyProgressionOwner(); + +// Sets the model this entity uses. +scriptEvent void setModel( string modelname ); + +// returns the model this entity uses. +scriptEvent string getModel(); + +// Sets the clip model this entity uses. +scriptEvent void setClipModel( string clipModelName ); + +// Set the contents of the physics object to the specified flags. +scriptEvent void setContents( int contents ); + +// returns the contents of the entity's physics object. +scriptEvent int getContents(); + +// adds the specified contents flags to the physics object's existing contents flags. +scriptEvent void addContentsFlag( int contents ); + +// removes the specified contents flags from the physics object's existing contents flags. +scriptEvent void removeContentsFlag( int contents ); + +// Set the contents of the physics object to the specified flags. +scriptEvent void setClipMask( int mask ); + +// returns the contents of the entity's physics object. +scriptEvent int getClipMask(); + +// adds the specified contents flags to the physics object's existing contents flags. +scriptEvent void addClipMaskFlag( int mask ); + +// removes the specified contents flags from the physics object's existing contents flags. +scriptEvent void removeClipMaskFlag( int mask ); + +// Sets the skin this entity uses. Set to "" to turn off the skin. +scriptEvent void setSkin( string skinname ); + +// Sets shader parms Parm0, Parm1, Parm2, and Parm3 (red, green, blue, and alpha respectively). +scriptEvent void setShaderParms( float parm0, float parm1, float parm2, float parm3 ); + +// Sets the RGBA color of this entity (shader parms Parm0, Parm1, Parm2, Parm3). +scriptEvent void setColorAndAlpha( float red, float green, float blue, float alpha ); + +// Sets the RGB color of this entity (shader parms Parm0, Parm1, Parm2). +scriptEvent void setColor( float red, float green, float blue ); + +// Gets the color of this entity (shader parms Parm0, Parm1, Parm2). +scriptEvent vector getColor(); + +// Returns true if the entity's model is invisible. +scriptEvent int isHidden(); + +// Makes this entity invisible. +scriptEvent void hide(); + +// Makes this entity visible if it has a model. +scriptEvent void show(); + +// Pre-caches the specified sound shader. Prevents cache hits when playing sound shaders. +scriptEvent void cacheSoundShader( string soundName ); + +// Plays a specific sound shader on the channel and returns the length of the sound in seconds. This is not the preferred method of playing a sound since you must ensure that the sound is loaded. +scriptEvent float startSoundShader( decl shader, int channel ); + +// Stops a specific sound shader on the channel. +scriptEvent void stopSound( int channel, int netSync ); + +// Fades the sound on this entity to a new level over a period of time. Use SND_CHANNEL_ANY for all currently playing sounds. +scriptEvent void fadeSound( int channel, float to, float over ); + +// Fades pitch on this entity to a new level over a period of time. Units are in semitones. The Base pitch is zero. Negative is lower and positive is higher. Use SND_CHANNEL_ANY for all currently playing sounds. +scriptEvent void fadePitch( int channel, float to, float over ); + +// Plays a voiceover on the channel and returns the length of the voice over. +scriptEvent float playVoiceOver( decl voToPlay, int channel, string talkerID ); + +// change how the entity flashes. +scriptEvent void setHighlight( int hlColor ); + +// Returns the current world space position of this entity (regardless of any bind parent). +scriptEvent vector getWorldOrigin(); + +// Sets the current position of this entity (regardless of any bind parent). +scriptEvent void setWorldOrigin( vector org ); + +// Returns the current position of this entity (relative to bind parent if any). +scriptEvent vector getOrigin(); + +// Sets the current position of this entity (relative to it's bind parent if any). +scriptEvent void setOrigin( vector org ); + +// Returns the current orientation of this entity (relative to bind parent if any). +scriptEvent vector getAngles(); + +// Sets the current orientation of this entity (relative to bind parent if any). +scriptEvent void setAngles( vector ang ); + +// Returns the current forward vector of this entity's model axis +scriptEvent vector getModelForward(); + +// Gets the current linear velocity of this entity. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second. +scriptEvent void setLinearVelocity( vector velocity ); + +// Sets the current linear velocity of this entity in units per second. The linear velocity of a physics object is a vector that defines the translation of the center of mass in units per second. +scriptEvent vector getLinearVelocity(); + +// Gets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second. +scriptEvent void setAngularVelocity( vector velocity ); + +// Sets the current angular velocity of this entity. The angular velocity of a physics object is a vector that passes through the center of mass. The direction of this vector defines the axis of rotation and the magnitude defines the rate of rotation about the axis in radians per second. +scriptEvent vector getAngularVelocity(); + +// Gets the size of this entity's bounding box. +scriptEvent vector getSize(); + +// Gets the minimum corner of this entity's bounding box. +scriptEvent vector getMins(); + +// Gets the maximum corner of this entity's bounding box. +scriptEvent vector getMaxs(); + +// Returns true if this entity touches the other entity. +scriptEvent int touches( entity ent ); + +// Returns this entity to the position stored in the "origin" spawn arg. This is the position the entity was spawned in unless the "origin" key is changed. Note that there is no guarantee that the entity won't be stuck in another entity when moved, so care should be taken to make sure that isn't possible. +scriptEvent void restorePosition(); + +// Returns the distance of this entity to another entity. +scriptEvent float distanceTo( entity ent ); + +// Returns the distance of this entity to a point. +scriptEvent float distanceToPoint( vector point ); + +// Returns the angle (yaw) of this entity to another entity. +scriptEvent float angleTo( entity ent ); + +// Suspends execution of current thread for one game frame. +scriptEvent void waitFrame(); + +// Suspends execution of the current thread for the given number of seconds. +scriptEvent void wait( float time ); + +// Returns true if an entity's script object has a specific function. +scriptEvent int hasFunction( string name ); + +// Calls a function on this entity's script object. +scriptEvent void callFunction( string name ); + +// gets the named float variable from the entity's script object +scriptEvent float getScriptObjectFloat( string name ); + +// gets the named bool variable from the entity's script object +scriptEvent boolean getScriptObjectBool( string name ); + +// gets the named string variable from the entity's script object +scriptEvent string getScriptObjectString( string name ); + +// sets the type of script object attached to the entity and initializes it +scriptEvent void setScriptObject( string name ); + +// returns the name of the type of script object attached to the entity +scriptEvent string getScriptObject(); + +// Enables or prevents an entity from going dormant. +scriptEvent void setCanBecomeDormant( int enable ); + +// teleports the entity to a location +scriptEvent void teleport( vector origin, vector angles ); + +// clamp 'angles' between 'center' +/- 'offset' +scriptEvent vector clampAngles( vector angles, vector center, vector offset ); + +// calls functionality test on entity +scriptEvent void testFunctionality(); + +// gets the object class type +scriptEvent string getClass(); + +// compare class types +scriptEvent boolean isClass( string className ); + +// compare class type with inheritance +scriptEvent boolean isSpecificClass( string className ); + +// adds the entity to the remove list +scriptEvent void remove(); + +// true to enable damage +scriptEvent void setTakesDamage( boolean takesDamage ); + +// signal threads +scriptEvent void signalEvent( int signal ); + +/* +================================================ + idScriptList +================================================ +*/ + +// +scriptEvent entity get( int index ); + +// +scriptEvent int size(); + +// +scriptEvent void append( entity toAdd ); + +// +scriptEvent void appendList( list toAdd ); + +// +scriptEvent void insert( entity toAdd, int index ); + +// +scriptEvent void erase( int index ); + +// +scriptEvent void clear(); + +// +scriptEvent void copy( list otherList ); + +/* +================================================ + idEventReceiver +================================================ +*/ + +// Removes this object from the game. +scriptEvent void remove(); + +/* +================================================ + idThread +================================================ +*/ + +// Disassociates the thread from it's thread entity and deletes the thread. +scriptEvent void remove(); + +// Terminates this thread. +scriptEvent void endThread(); + +// Terminates a thread. +scriptEvent void terminate( int threadHandle ); + +// Pauses the current thread. +scriptEvent void pause(); + +// Suspends execution of the current thread for the given number of seconds. +scriptEvent void wait( float time ); + +// Suspends execution for one game frame. +scriptEvent void waitFrame(); + +// Waits for the given entity to complete it's move. +scriptEvent void waitFor( entity ent ); + +// Waits for the given thread to terminate. +scriptEvent void waitForThread( int threadHandle ); + +// +scriptEvent void waitForEvent( int eventId ); + +// Waits for any of the specified flags to be set. +scriptEvent void waitForFlags( int flags ); + +// Prints the given string to the console. +scriptEvent void print( string text ); + +// Prints the given line to the console. +scriptEvent void println( string text ); + +// Prints this line in multiplayer. +scriptEvent void say( string text ); + +// Breaks if the condition is zero. (Only works in debug builds.) +scriptEvent void assert( float value ); + +// Triggers the given entity. +scriptEvent void trigger( entity ent, entity activator ); + +// Sets a cvar. +scriptEvent void setcvar( string name, string value ); + +// Returns the string for a cvar. +scriptEvent string getcvar( string name ); + +// Returns a random value X where 0 <= X < range. +scriptEvent float random( float range ); + +// Returns a random value X where 0 <= X < range. +scriptEvent int randomInt( int range ); + +// Returns the current game time in seconds. +scriptEvent float getTime(); + +// Sets the name of the current thread. +scriptEvent void setThreadName( string name ); + +// REturns the name of the current thread +scriptEvent string getThreadName(); + +// entity associated with this thread +scriptEvent void setThreadEntity( entity ent ); + +// returns the handle of the current thread +scriptEvent int getThreadHandle(); + +// Kills all threads with the specified name. +scriptEvent void killThread( string name ); + +// calls a the specified function using the entity's script object, using the entity's thread +scriptEvent void threadCall( entity ent, string functionName ); + +// Returns a reference to the entity with the specified name. +scriptEvent entity getEntity( string name ); + +// Creates an entity of the specified classname and returns a reference to the entity. +scriptEvent entity spawn( string classname ); + +// Returns a forward vector for the given Euler angles. +scriptEvent vector angToForward( vector ang ); + +// Returns a right vector for the given Euler angles. +scriptEvent vector angToRight( vector ang ); + +// Returns an up vector for the given Euler angles. +scriptEvent vector angToUp( vector ang ); + +// Returns the sine of the given angle in degrees. +scriptEvent float sin( float angle ); + +// Returns the cosine of the given angle in degrees. +scriptEvent float cos( float angle ); + +// Returns the tangent of the given angle in degrees. +scriptEvent float tan( float angle ); + +// Returns the arcsine of the given value in degrees. +scriptEvent float arcSin( float value ); + +// Returns the arccos of the given value in degrees. +scriptEvent float arcCos( float value ); + +// Returns the arctangent of the given value in degrees. +scriptEvent float arcTan( float value ); + +// Returns the arctangent of the given values in degrees. +scriptEvent float arcTan2( float y, float x ); + +// Returns the square root of the given number. +scriptEvent float sqrt( float theSquare ); + +// Returns the normalized version of the given vector. +scriptEvent vector vecNormalize( vector vec ); + +// Returns the length of the given vector. +scriptEvent float vecLength( vector vec ); + +// Returns the dot product of the two vectors. +scriptEvent float vecDotProduct( vector vec1, vector vec2 ); + +// Returns the cross product of the two vectors. +scriptEvent vector vecCrossProduct( vector vec1, vector vec2 ); + +// Returns Euler angles for the given direction. +scriptEvent vector vecToAngles( vector vec ); + +// Sets a script callback function for when the given signal is raised on the given entity. +scriptEvent void onSignal( int signal, entity ent, string func ); + +// Clears the script callback function set for when the given signal is raised on the given entity. +scriptEvent void clearSignalThread( int signal, entity ent ); + +// Returns the fraction of movement completed before the box from 'mins' to 'maxs' hits solid geometry when moving from 'start' to 'end'. The 'passEntity' is considered non-solid during the move. +scriptEvent float trace( vector start, vector end, vector mins, vector maxs, int contents_mask, entity passEntity ); + +// Returns the fraction of movement completed before the trace hits solid geometry when moving from 'start' to 'end'. The 'passEntity' is considered non-solid during the move. +scriptEvent float tracePoint( vector start, vector end, int contents_mask, entity passEntity ); + +// Returns the fraction of movement completed during the last call to trace or tracePoint. +scriptEvent float getTraceFraction(); + +// Returns the position the trace stopped due to a collision with solid geometry during the last call to trace or tracePoint. +scriptEvent vector getTraceEndPos(); + +// Returns the normal vector of the hit plane during the last call to trace or tracePoint. +scriptEvent vector getTraceNormal(); + +// Returns a reference to the entity hit during the last call to trace or tracePoint. +scriptEvent entity getTraceEntity(); + +// Returns the namer of the skeletal joint closest to the location on the entity which was hit during the last call to trace or tracePoint. +scriptEvent string getTraceJoint(); + +// Returns the name of the body part of the entity which was hit during the last call to trace or tracePoint. +scriptEvent string getTraceBody(); + +// Create a decal +scriptEvent void spawnDecal( entity entityToAttachTo, vector pos, vector dir, vector size, float lifeTime, decl material ); + +// Starts playing background music. +scriptEvent void music( string name ); + +// Disables saving--forces player to wait to save his progress until enable-saves is called +scriptEvent void disableSaves(); + +// Enables saving--be sure to call once it's safe to save if you've called disable-saves. +scriptEvent void enableSaves(); + +// Issues a warning. +scriptEvent void warning( string text ); + +// Issues an error. +scriptEvent void error( string text ); + +// Returns the number of characters in the string. +scriptEvent int strLength( string string ); + +// Returns a string composed of the first num characters. +scriptEvent string strLeft( string string, int num ); + +// Returns a string composed of the last num characters. +scriptEvent string strRight( string string, int num ); + +// Returns the string following the first num characters. +scriptEvent string strSkip( string string, int num ); + +// Returns a string composed of the characters from start to start + num. +scriptEvent string strMid( string string, int start, int num ); + +// Returns the numeric value of a string. +scriptEvent float strToFloat( string string ); + +// Returns the numeric value of a string. +scriptEvent int strToInt( string string ); + +// Damages entities within a radius defined by the damageDef. Inflictor is the entity causing the damage and can be the same as the attacker (in the case of projectiles, the projectile is the inflictor, while the attacker is the character that fired the projectile). Ignore is an entity to not cause damage to. dmgPower scales the damage (for cases where damage is dependent on time). +scriptEvent void radiusDamage( vector origin, entity inflictor, entity attacker, entity ignore, string damageDefName, float dmgPower ); + +// Kills all entities of specified typ (any number of bit flags may be set) +scriptEvent void killByType( entity boundsEntity, int flags ); + +// Returns length of time between game frames. This is not related to renderer frame rate. +scriptEvent float getFrameTime(); + +// Returns the number of game frames per second. This is not related to renderer frame rate. +scriptEvent float getTicsPerSecond(); + +// Precaches the specified sound shader. Prevents cache hits when playing sound shaders. +scriptEvent void cacheSoundShader( string soundName ); + +// fades a specified sound group +scriptEvent void fadeSoundGroup( int groupNum, float toDB, float overSec ); + +// Draws a line for debug visualization. lifetime of 0 == 1 frame. +scriptEvent void debugLine( vector color, vector start, vector end, float lifetime ); + +// Draws an arrow for debug visualization. lifetime of 0 == 1 frame. +scriptEvent void debugArrow( vector color, vector start, vector end, int size, float lifetime ); + +// Draws a circle for debug visualization. lifetime of 0 == 1 frame. +scriptEvent void debugCircle( vector color, vector origin, vector dir, float radius, int numSteps, float lifetime ); + +// Draws a bounding box for debug visualization. lifetime of 0 == 1 frame. +scriptEvent void debugBounds( vector color, vector mins, vector maxs, float lifetime ); + +// Draws text for debug visualization. align can be 0-left, 1-center, 2-right. lifetime of 0 == 1 frame. +scriptEvent void drawText( string text, vector origin, float scale, vector color, int align, float lifetime ); + +// returns the current map path in the format: maps/// useful for specifying paths for dynamically created func/statics with map models +scriptEvent string getMapPath(); + +// Creates a array entity and returns it +scriptEvent entity createArray(); + +// Destroys a array entity +scriptEvent void destroyArray( entity entity ); + +// Checks if entity is valid +scriptEvent boolean isEntityValid( entity entity ); + +// Checks if a layer is turned on +scriptEvent boolean isLayerActive( string layerName ); + +// Checks if a layer is available to be turned on +scriptEvent boolean isLayerDeactive( string layerName ); + +// halts game for debug... coder use only +scriptEvent void halt(); + +// Returns the name of a decl as a string +scriptEvent string getDeclName( decl decl ); + +// Returns true of the decl is non-NULL +scriptEvent boolean isValidDecl( decl decl ); + +// executes a console command +scriptEvent void executeCommandText( string command ); + +// Returns true if any player is incapacitated +scriptEvent boolean playerIsIncapacitated(); + +// Returns number of active AIs +scriptEvent int numActiveAIs(); + +/* +================================================ + idAnimatedEntity +================================================ +*/ + +// Looks up the number of the specified joint. Returns INVALID_JOINT_HANDLE if the joint is not found. +scriptEvent int getJointHandle( string jointname ); + +// Modifies the position of the joint based on the transform type. +scriptEvent void setJointPos( int jointnum, int transform_type, vector pos ); + +// Modifies the orientation of the joint based on the transform type. +scriptEvent void setJointAngle( int jointnum, int transform_type, vector angles ); + +// Returns the position of the joint in world space. +scriptEvent vector getJointPos( int jointnum ); + +// Returns the angular orientation of the joint in world space. +scriptEvent vector getJointAngle( int jointnum ); + +// Start the fx with the specified condition +scriptEvent void startFX( int condition ); + +// Stop the fx with the specified condition +scriptEvent void stopFX( int condition ); + +/* +================================================ + idPlayer +================================================ +*/ + +// sets the timescale low and starts the tick time scale progression +scriptEvent void startTimeScaleExperiment(); + +// increases the timescale and sets the next event if it is below 1 +scriptEvent void tickTimeScale(); + +// Ends the death car camera view; +scriptEvent void endDeathCameraView( int ms ); + +// Puts player in a vehicle +scriptEvent void enterVehicle( entity entity ); + +// Rotates player camera towards entity. 'percent' is amount to rotate (0.0 - 1.0) +scriptEvent void trackEntity( entity entity, float percent ); + +// Returns the button state from the current user command. +scriptEvent float getUserButtons(); + +// Returns the movement relative to the player's view angles from the current user command. vector_x = forward, vector_y = right, vector_z = up +scriptEvent vector getUserMove(); + +// Returns the angles from the current user command. +scriptEvent vector getUserAngles(); + +// Returns the player view angles. +scriptEvent vector getViewAngles(); + +// Sets the player view angles. +scriptEvent void setViewAngles( vector vAngles ); + +// Returns the player view position +scriptEvent vector getViewPos(); + +// Enables the player weapon. +scriptEvent void enableWeapon(); + +// Lowers and disables the player weapon. +scriptEvent void disableWeapon(); + +// Equips the inventory item specified by the decl name. Returns true if it was able to equip the item. +scriptEvent boolean equipItem( string declName ); + +// mark a job as completed +scriptEvent boolean completeJob( decl jobDecl ); + +// accept a job +scriptEvent boolean acceptJob( decl jobDecl ); + +// mark a job as failed. +scriptEvent boolean failJob( decl jobDecl ); + +// uncomplete a job ( for repeatable jobs ) +scriptEvent boolean unCompleteJob( decl jobDecl ); + +// is a job complete +scriptEvent boolean isJobComplete( decl jobDecl ); + +// just accepted +scriptEvent boolean isJobAccepted( decl jobDecl ); + +// +scriptEvent boolean isJobReadyToTurnIn( decl jobDecl ); + +// +scriptEvent boolean isJobInProgress( decl jobDecl ); + +// +scriptEvent boolean isJobReadyToComplete( decl jobDecl, entity npc ); + +// game state variables +scriptEvent void setGameStateInt( string gameStateName, int inValue ); + +// +scriptEvent float getGameStateInt( string gameStateName ); + +// trigger fired when player dies. +scriptEvent void setDeathTrigger( string name ); + +// transition to another map +scriptEvent void nextMap( string mapName, string spawnSpot, string layersActive, string layersDeactive ); + +// +scriptEvent void devMap( string mapName, string spawnSpot, string layersActive, string layersDeactive ); + +// +scriptEvent void endRevive(); + +// resume living +scriptEvent void resumeLiving(); + +// respawns the player after death +scriptEvent void respawn(); + +// used for in-map teleports from RespawnWithFade() +scriptEvent void teleport( vector origin, vector angles ); + +// respawns the player with a fade for in-map teleports +scriptEvent void respawnWithFade( string spawnSpot, int fadeTimeMS ); + +// fades the screen to a color over a time duration in MS +scriptEvent void fadeView( vector color, float alpha, int fadeTimeMS ); + +// +scriptEvent void inhibitControl( boolean shouldInhibit ); + +// +scriptEvent void inhibitMove( boolean shouldInhibit ); + +// +scriptEvent void inhibitLook( boolean shouldInhibit, boolean discardDelta ); + +// +scriptEvent void inhibitFreeGamePlay( boolean shouldInhibit, boolean canRun ); + +// +scriptEvent void inhibitRaiseWeapon( boolean shouldInhibit ); + +// +scriptEvent void inhibitChangeWeapon( boolean shouldInhibit ); + +// respawns the player after a death in the wasteland. currently loads a specific map, but that could change +scriptEvent void respawnFromWastelandDeath(); + +// +scriptEvent void carry_ShowHands(); + +// +scriptEvent void kill(); + +// +scriptEvent void vehicleKill(); + +// +scriptEvent int getLastOfferChoice(); + +// +scriptEvent void doHudInitialFlash(); + +// +scriptEvent void endSpecificTutorial( decl decl ); + +// return's the player's current focus entity +scriptEvent entity getFocusEntity(); + +// init the camera springs to the specified spring constant +scriptEvent void camera_InitSprings( float k ); + +// set the camera springs to the default values +scriptEvent void camera_InitDefaultSprings(); + +// set the camera to follow the specified entity +scriptEvent void camera_FollowEntity( entity entity ); + +// set the camera to follow the specified joint on the specified entity +scriptEvent void camera_FollowEntityJoint( entity entity, string jointName, int duration ); + +// set the camera to stop following the previously-specified entity +scriptEvent void camera_EndFollowEntity(); + +// set the camera to track the specified entity +scriptEvent void camera_TrackEntity( entity entity ); + +// set the camera to track the specified joint on the specified entity +scriptEvent void camera_TrackEntityJoint( entity entity, string jointName, int duration, int lookMode ); + +// set the camera to stop tracking the previously-specified entity +scriptEvent void camera_EndTrackEntity(); + +/* +================================================ + idAI2 +================================================ +*/ + +// called to put an entity on a follow path or to switch follow paths +scriptEvent void path( entity newPath ); + +// +scriptEvent void moveToScenepoint( entity scenePoint, int mtspFlags ); + +// +scriptEvent void moveToPathPoint( entity pathPoint ); + +// +scriptEvent void setAlertCycle( int alertCycle ); + +// +scriptEvent void relinquishControl(); + +// +scriptEvent void dropWeapons(); + +// +scriptEvent void flyBack(); + +// called to give the target 'aggression' for 'duration' seconds towards 'ent' +scriptEvent void addAggression( entity ent, float aggression, float duration ); + +// +scriptEvent void killAI(); + +// +scriptEvent void spawnLootBox(); + +// +scriptEvent void turnOffLaserSight(); + +// +scriptEvent void turnOnLaserSight(); + +// +scriptEvent float getHealth(); + +// called when the anim-web finishes waiting on a particular node to start or finish. +scriptEvent void animWeb_Wait( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// called when the anim-web finishes when animation delta correction should begin +scriptEvent void animWeb_StartDeltaCorrection( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// called back from the anim-web when a specific animation begins +scriptEvent void animWeb_BeginAnim( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// called when the anim-web finishes playing a reload node. +scriptEvent void animWeb_ReloadRightFinished( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// called when the anim-web finishes starting to use the turret +scriptEvent void animWeb_StartUseTurret( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// called back from the anim-web when an AI finishes transitioning into a cover action animation +scriptEvent void animWeb_EnableFireFromCover( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// sets the current focus of the AI +scriptEvent void setFocus( entity ent, boolean aiming, boolean keepFocusInView, int aimPoint ); + +// +scriptEvent void modifyTargeting( entity specificTarget, int modifier ); + +// +scriptEvent void clearLookFocus(); + +// +scriptEvent void clearAimFocus(); + +// +scriptEvent void enableAutoFocus(); + +// +scriptEvent void disableAutoFocus(); + +// pass false to make AI invulnerable but still play pain when hit. +scriptEvent void setRemoveHealthWhenDamaged( boolean removeHealth ); + +// allow overriding ai events, if necessary (ex: make ai ignore vehicle events.) +scriptEvent void setEventOverloadEnableFlag( int flags ); + +// +scriptEvent void clearEventOverloadEnableFlag( int flags ); + +// +scriptEvent void setEventOverloadDisableFlag( int flags ); + +// +scriptEvent void clearEventOverloadDisableFlag( int flags ); + +// +scriptEvent void setBehaviorDecl( decl declBehavior ); + +// called by script to check the type of the current pending AI event +scriptEvent int getCurrentAIEventClass(); + +// called by script to tell the game code that the current event is being handled +scriptEvent boolean handleAIEvent( int eventClass ); + +// called by script to get info about the last handled event +scriptEvent int getLastAIEventClass(); + +// +scriptEvent vector getLastAIEventOrigin(); + +// +scriptEvent entity getLastAIEventOriginator(); + +// +scriptEvent entity getLastAIEventInstigator(); + +// +scriptEvent boolean startVoiceOver( entity talkingTo, decl vo, boolean playInCombat ); + +// +scriptEvent boolean startInteractionVoiceOver( entity talkingTo, decl vo, boolean playInCombat ); + +// +scriptEvent boolean isVoiceOverPlaying( decl vo ); + +// +scriptEvent decl getPlayingVoiceOver(); + +// +scriptEvent void setInteractionEntity( entity ent ); + +// +scriptEvent entity getInteractionEntity(); + +// +scriptEvent int getCurrentPlayerInteractionState( entity player ); + +// +scriptEvent void setInteracting( boolean interacting ); + +// these events play a VO and set interaction states for each stage of an interaction +scriptEvent decl jobApproach( entity playerEnt, boolean playVO ); + +// +scriptEvent decl nonJobVO( entity playerEnt, boolean playVO ); + +// +scriptEvent decl jobOffer( entity playerEnt, boolean playVO ); + +// +scriptEvent decl jobMessageVO( entity playerEnt, boolean playVO ); + +// +scriptEvent decl jobEnd( entity playerEnt, boolean playVO ); + +// +scriptEvent decl jobComplete( entity playerEnt, boolean playVO ); + +// +scriptEvent decl jobFailed( entity playerEnt, boolean playVO ); + +// +scriptEvent decl jobInProgress( entity playerEnt, boolean playVO ); + +// +scriptEvent decl acceptedJob( entity playerEnt, boolean playVO ); + +// +scriptEvent decl declinedJob( entity playerEnt, boolean playVO ); + +// +scriptEvent decl playerLeft( entity playerEnt, boolean playVO ); + +// +scriptEvent boolean completeSavedJob( entity playerEnt ); + +// +scriptEvent boolean acceptSavedJob( entity playerEnt ); + +// +scriptEvent boolean setJobOfferPlayed( decl decl, entity playerEnt, int interactionIndex ); + +// clears the AI's triggered interaction entity and sets the AI as interactable before polling with Event_PlayerTriggeredInteraction +scriptEvent void beginWaitForPlayerInteraction(); + +// returns true if the specified player triggered an interaction +scriptEvent boolean playerTriggeredInteraction( entity playerEnt ); + +// turns off the AI's interaction usable flag after the player has interacted +scriptEvent void endWaitForPlayerInteraction(); + +// returns the idDeclAIPlayerInteraction for this AI +scriptEvent decl getDeclAIPlayerInteraction(); + +// returns the index of the current player interaction (index of aiPlayerInteraction_t inside of idDeclAIPlayerInteraction) +scriptEvent int getCurrentPlayerInteractionIndex( entity player ); + +// returns the name of the aiPlayerInteraction_t for the specified decl / index combination +scriptEvent string getPlayerInteractionName( decl decl, int index ); + +// returns the job associated with the specified interaction +scriptEvent decl getPlayerInteractionJobDecl( decl decl, int interactionIndex ); + +// starts a player interaction +scriptEvent void beginPlayerInteractionIndex( int index ); + +// +scriptEvent float getPlayerInteractionApproachRadius(); + +// +scriptEvent float getPlayerInteractionDepartureRadius(); + +// +scriptEvent int shouldTurnTo( entity entity, float leftDotThreshold, float rightDotThreshold, float offsetDegrees ); + +// +scriptEvent boolean isEntityVisible( entity entity ); + +// +scriptEvent void action_MoveToPoint( vector dest, int stopUponArrival, float tolerance, int align, vector alignDir ); + +// +scriptEvent void action_MoveToPointNoFail( vector dest, int stopUponArrival, float tolerance, int align, vector alignDir, decl declVoiceOver ); + +// +scriptEvent void action_MoveToEntity( entity ent, int stopUponArraival, float reachedDistance, int align, vector alignDir ); + +// +scriptEvent void action_MoveToEntityNoFail( entity ent, int stopUponArraival, float reachedDistance, int align, vector alignDir, decl declVoiceOver ); + +// +scriptEvent void action_MoveToPathPoint( entity pathPoint ); + +// +scriptEvent void action_MoveToPathPointNoFail( entity pathPoint, decl declVoiceOver ); + +// +scriptEvent void action_MoveToCover( vector dest, int coverAction, int posture, vector alignDir ); + +// +scriptEvent void action_UseZipline( entity ent ); + +// +scriptEvent void action_SetMovePushStatus( int pushMoveStatus ); + +// +scriptEvent void action_Idle( int time, int idleTurnType ); + +// +scriptEvent void action_Pain( int painType, int dir, float intensity, string jointGroupName ); + +// +scriptEvent void action_StandToCrouch(); + +// +scriptEvent void action_CrouchToStand(); + +// +scriptEvent void action_PullTriggerRight(); + +// +scriptEvent void action_ReleaseTriggerRight(); + +// +scriptEvent void action_PullTriggerLeft(); + +// +scriptEvent void action_ReleaseTriggerLeft(); + +// +scriptEvent void action_ReloadWeapon( int slot, string ammoDeclName ); + +// +scriptEvent void action_ReloadWeaponTorso( int slot, string ammoDeclName ); + +// +scriptEvent void action_WaitForAnim( string animWebNode ); + +// +scriptEvent void action_WaitForAnimVia( string destAnimWebNode, string viaAnimWebNode ); + +// +scriptEvent void action_LoopAnim( string animWebNode, int milliseconds ); + +// +scriptEvent void action_LoopAnimExitAtEnd( string animWebNode, int milliseconds, int framesFromEnd ); + +// +scriptEvent void action_StartAnim( string animWebNode, int finishBlend, int wait ); + +// +scriptEvent void action_WaitForTraversalAnim( string animWebNode, int runWhenDone ); + +// +scriptEvent void action_ChangeAnimState( int animweb, string destNode, int waitType ); + +// +scriptEvent void action_ChangeAnimStateVia( int animweb, string destNode, string viaNode, int wait ); + +// +scriptEvent void action_ForceAnimState( int animweb, string destNode, int blendDurationMS, int wait ); + +// +scriptEvent void action_Dodge( vector dodgeFrom ); + +// +scriptEvent void action_Wait( int milliseconds ); + +// +scriptEvent void action_Dive( float dodgeYaw, float faceYaw ); + +// +scriptEvent void action_Melee( int overrideAnim ); + +// +scriptEvent void action_TurnToPoint( vector point ); + +// +scriptEvent void action_TurnToEntity( entity ent ); + +// +scriptEvent void action_TurnToEntityWithOffset( entity ent, float yawOffset ); + +// +scriptEvent void action_LeapAttack( vector leapTarget ); + +// +scriptEvent void action_WaitForEntity( entity ent, float range ); + +// +scriptEvent void action_EnterVehicle( entity vehicle, entity vai ); + +// +scriptEvent void action_PlayVoiceOver( decl declVoiceOver, int waitUntilFinished ); + +// +scriptEvent void action_PlayInteractionVoiceOver( decl declVoiceOver, entity trackEntity, float abortDistance, boolean abortScript ); + +// +scriptEvent void action_StopVoiceOver(); + +// +scriptEvent void action_PlayOverrideAnim( int overrideAnim, int cycle ); + +// +scriptEvent void action_PlayOverrideAnimInterrupt( int overrideAnim, int cycle ); + +// +scriptEvent void action_HolsterWeapon(); + +// +scriptEvent void action_DrawWeapon(); + +// +scriptEvent void action_PerformCoverAction( int coverAction, int duration ); + +// +scriptEvent void action_WaitForPlayerInteraction(); + +// +scriptEvent void action_WaitForPlayerInteractionDist( float maxDistance ); + +// +scriptEvent void action_WaitForAIVar( string varName, int op, string value ); + +// +scriptEvent void action_SetAlertCycle( int alertCycle ); + +// +scriptEvent void action_SetSubWeb( int subWeb ); + +// +scriptEvent void action_SetFocus( entity ent, int aiming, int keepFocusInView, int trackOnlyVisible, int aimPoint ); + +// +scriptEvent void action_ClearLookFocus(); + +// +scriptEvent void action_ClearAimFocus(); + +// +scriptEvent void action_SetLookFocusOffset( vector offset ); + +// +scriptEvent void action_SetAimFocusOffset( vector offset ); + +// +scriptEvent void action_SetAimPoint( int aimPoint ); + +// +scriptEvent void action_SetFireMode( int fireMode ); + +// +scriptEvent void action_SetScriptAbort( int AbortOnCombat, int AbortOnSearch ); + +// +scriptEvent void action_SetWalkState( int state ); + +// +scriptEvent void action_SetPosture( int posture ); + +// +scriptEvent void action_SetSitState( int state ); + +// +scriptEvent void action_SetStandState( int state ); + +// +scriptEvent void action_SetIdleState( int _indexType ); + +// +scriptEvent void action_SetPlayerEnemy( int player ); + +// +scriptEvent void action_SetEnemy( entity enemy ); + +// +scriptEvent void action_SearchToTarget( entity target ); + +// +scriptEvent void action_SetPlayerFocus( int player, int aiming, int keepFocusInView ); + +// +scriptEvent void action_SetActionNodeGroup( string group ); + +// +scriptEvent void action_Trigger( entity ent ); + +// +scriptEvent void action_EnableDamage( int enabled, int permanent ); + +// +scriptEvent void action_EnablePain( int enabled ); + +// +scriptEvent void action_EnableAutoFocus( int enabled, int permanent ); + +// +scriptEvent void action_EnableBodyRotation( int enabled ); + +// +scriptEvent void action_EnableWalkIK( int enabled ); + +// +scriptEvent void action_EnableHeadTracking( int enabled ); + +// +scriptEvent void action_ForceOpenCombat( int player ); + +// +scriptEvent void action_ForceAwarenessByDistance( float radius, boolean playerFlag, boolean aiFlag ); + +// +scriptEvent void action_ForcePlayerInteraction( int player ); + +// +scriptEvent void action_IgnorePlayerApproach( int permanent ); + +// +scriptEvent void action_NoticePlayerApproach( int permanent ); + +// +scriptEvent void action_SetAIVar( string name, int type, string value ); + +// +scriptEvent void action_SetScriptFlag( int flag ); + +// +scriptEvent void action_ClearScriptFlag( int flag ); + +// +scriptEvent void action_SetPerceptionFlag( int flag ); + +// +scriptEvent void action_ClearPerceptionFlag( int flag ); + +// +scriptEvent void action_GiveItem( entity giveTo, decl itemDecl ); + +// +scriptEvent void action_TakeItem( entity takeFrom, decl itemDecl ); + +// +scriptEvent void action_ClearWorldState(); + +// +scriptEvent void action_ShowAttachment( string slotName ); + +// +scriptEvent void action_HideAttachment( string slotName ); + +// +scriptEvent void action_DropAttachment( string slotName ); + +// +scriptEvent void action_SetMoveMode( int moveMode ); + +// +scriptEvent void action_SetAccuracy( int accuracy ); + +// +scriptEvent void action_ScriptedAnimWeb( entity scriptedAnimWeb, int loopInterval ); + +// +scriptEvent void action_MoveToScenePoint( entity scenepoint, int mtspFlags ); + +/* +================================================ + idSound +================================================ +*/ + +// +scriptEvent float startSoundShader( decl shader, int channel ); + +// +scriptEvent void setSoundShader( decl newShader ); + +// +scriptEvent float playVoiceOver( decl voToPlay, int channel, string talkerID ); + +// +scriptEvent void setLooping(); + +// +scriptEvent void setNonLooping(); + +// +scriptEvent void on(); + +// +scriptEvent void off(); + +// +scriptEvent boolean isPlayingSound(); + +/* +================================================ + idActor +================================================ +*/ + +// Changes to left foot and plays footstep sound. +scriptEvent void leftFoot(); + +// Changes to right foot and plays footstep sound. +scriptEvent void rightFoot(); + +// Enables walk IK. +scriptEvent void enableWalkIK(); + +// Disables walk IK. +scriptEvent void disableWalkIK(); + +// Enables IK on the leg with the given number. +scriptEvent void enableLegIK( int num ); + +// Disables IK on the leg with the given number. +scriptEvent void disableLegIK( int num ); + +// DEPRECATED: returns true if count number of items are in the inventory +scriptEvent boolean itemInInventory( string internalName, float count ); + +// returns the number of matching items in the actor's inventory +scriptEvent int numOfItemTypeInInventory( string declName ); + +// gives count number of inventory items +scriptEvent void giveInventoryItem( string declName, float count ); + +// removes count number of inventory items +scriptEvent void removeInventoryItem( string declName, float count ); + +// removes all inventory items +scriptEvent void removeAllInventoryItems(); + +// hide an attachment by slot name +scriptEvent void hideAttachment( string slotName ); + +// show an attachment by slot name +scriptEvent void showAttachment( string slotName ); + +// remove attachment by entity +scriptEvent void removeAttachment( entity entity ); + +// returns true if the actor is dead +scriptEvent boolean isDead(); + +// returns the name of the current npc the player is interacting with +scriptEvent string currentNPC(); + +// returns the current burst mode for the weapon in the specified slot +scriptEvent float weaponBurstMode( int slot ); + +// returns if the actor is sneaking, walking or running +scriptEvent float getWalkState(); + +// returns if the weapon is holstered, lowered or raised state +scriptEvent float getWeaponReadyState(); + +// +scriptEvent void increaseHealth( float amt ); + +// +scriptEvent void decreaseHealth( float amt ); + +// +scriptEvent boolean needsHealth(); + +// +scriptEvent void setHealth( float health ); + +// +scriptEvent void setPosture( int posture ); + +/* +================================================ + idProjectile +================================================ +*/ + +// +scriptEvent void fadeOut( float time ); + +// +scriptEvent void stopFX( int condition ); + +/* +================================================ + idVehicle +================================================ +*/ + +// +scriptEvent void allowAccelerate( float allow ); + +// Set the usable state of the vehicle +scriptEvent void setUsable( boolean usable ); + +// Get current velocity of the vehicle +scriptEvent float getCurrentVelocity(); + +// Get number of people in vehicle +scriptEvent float getNumOccupants(); + +// Is entity inside of a vehicle? +scriptEvent float vehicleHasOccupant( entity vehicle_entity, entity entity ); + +// Get vehicle that entity is inside of +scriptEvent entity getVehicleWithOccupant( entity entity ); + +// Set health +scriptEvent void setHealth( float health ); + +// Inflictor of last damage +scriptEvent entity getLastDamage_Inflictor(); + +// Attacker of last damage +scriptEvent entity getLastDamage_Attacker(); + +// DamageDef->name of last damage +scriptEvent string getLastDamage_DamageName(); + +// Damage amount of last damage +scriptEvent float getLastDamage_Damage(); + +// Game time of last damage +scriptEvent float getLastDamage_Time(); + +// Game current throttle 0 -1 +scriptEvent float getCurrentThrottle(); + +// Damage vehicle +scriptEvent void damage( entity inflictor, entity attacker, string damageDef, float damageScale, vector dir ); + +// Vehicle's health +scriptEvent float getHealth(); + +// Name of vehicle driver +scriptEvent string getDriverName(); + +// Game time of last collision +scriptEvent float getLastCollision_Time(); + +// Entity of last collision +scriptEvent entity getLastCollision_Entity(); + +// Position of last collision +scriptEvent vector getLastCollision_Point(); + +// Normal of last collision +scriptEvent vector getLastCollision_Normal(); + +// Distance of last collision +scriptEvent float getLastCollision_Dist(); + +// Was last collider a car? +scriptEvent boolean getLastCollision_WasOtherCar(); + +// enables / disables the controls and the vehicle gui from script +scriptEvent void enableVehicleControls( float enable ); + +// Exit Vehicle +scriptEvent void exitVehicle( int occupantNum ); + +// Respawn in garage after death. +scriptEvent void respawnInGarage(); + +/* +================================================ + idActorModifierManager +================================================ +*/ + +/* +================================================ + idProp_Moveable +================================================ +*/ + +// Returns true if object is not moving. +scriptEvent int isAtRest(); + +// Returns how many hands to use to pickup an item. 0 means can't pick up. +scriptEvent float numPickupHands(); + +// fades the prop +scriptEvent void fade( float from, float to, float secs ); + +// +scriptEvent void pulse(); + +/* +================================================ + idHands +================================================ +*/ + +/* +================================================ + idJob +================================================ +*/ + +// hack until we think of something better +scriptEvent void doRepeat(); + +/* +================================================ + idDamageableEntity +================================================ +*/ + +// +scriptEvent void kill(); + +/* +================================================ + idVehicle_Car +================================================ +*/ + +// Turn on/off engine (mostly affects sounds) +scriptEvent void startEngine( float start ); + +// disables the car for scripted sequence +scriptEvent void setDisableEngine( float disabled ); + +// sets enter target that is triggered for scripted sequences +scriptEvent void setEnterTarget( entity target ); + +// removes enter target. +scriptEvent void removeEnterTarget(); + +/* +================================================ + idVehicleOccupant +================================================ +*/ + +/* +================================================ + idProp_WeaponStatic +================================================ +*/ + +// +scriptEvent entity getUser(); + +// Whether we should allow players to manually exit the static weapon or not. +scriptEvent void enableManualExit( boolean enable ); + +// +scriptEvent void setCooldownBlocked( boolean blockIt ); + +/* +================================================ + idTurret +================================================ +*/ + +// +scriptEvent void kill(); + +// +scriptEvent void deactivate(); + +/* +================================================ + idRagePlayerMetrics +================================================ +*/ + +/* +================================================ + idGameChallenge +================================================ +*/ + +/* +================================================ + idVehicleAI +================================================ +*/ + +// +scriptEvent void respawn(); + +// +scriptEvent void killVehicleAndAi(); + +// +scriptEvent void aiStopControllingVehicle(); + +// +scriptEvent void aiExitVehicle(); + +// +scriptEvent void setNewChaseWaypoint( entity newWayPoint ); + +// +scriptEvent void boost( int ms ); + +/* +================================================ + idMover +================================================ +*/ + +// Stops any translational movement. +scriptEvent void stopMoving(); + +// Stops any rotational movement. +scriptEvent void stopRotating(); + +// Sets the movement speed. Set this speed before initiating a new move. +scriptEvent void speed( float speed ); + +// Sets the movement time. Set this time before initiating a new move. +scriptEvent void time( float time ); + +// Sets the acceleration time. Set this acceleration time before initiating a new move. +scriptEvent void accelTime( float time ); + +// Sets the deceleration time. Set this deceleration time before initiating a new move. +scriptEvent void decelTime( float time ); + +// Sets movement time, acceleration time, and deceleration time. +scriptEvent void setParmsForTime( float time, float acceltime, float deceltime ); + +// Sets movement speed, acceleration time, and deceleration time. +scriptEvent void setParmsForSpeed( float speed, float acceltime, float deceltime ); + +// Initiates a translation to the position of an entity. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void moveTo( entity ent ); + +// Initiates a translation to an absolute position. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void moveToPos( vector pos ); + +// Initiates a translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void move( float angle, float distance ); + +// Initiates an absolute translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void moveAbsolute( float angle, float distance ); + +// Initiates an acceleration to the given speed over the given time in seconds. +scriptEvent void accelTo( float speed, float time ); + +// Initiates a deceleration to the given speed over the given time in seconds. +scriptEvent void decelTo( float speed, float time ); + +// Initiates a rotation about the given axis by decreasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateDownTo( int axis, float angle ); + +// Initiates a rotation about the given axis by increasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateUpTo( int axis, float angle ); + +// Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateTo( vector angles ); + +// Initiates a rotation with the given angular speed. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateXYZ( float x, float y, float z ); + +// +scriptEvent void rotate( vector angles ); + +// Initiates a rotation towards the current angles plus the given Euler angles. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateOnceXYZ( float x, float y, float z ); + +// +scriptEvent void rotateOnce( vector angles ); + +// Initiates a translation back & forth along the given vector with the given speed & phase. +scriptEvent void bob( float speed, float phase, vector depth ); + +// Initiates a rotation back and forth along the given angles with the given speed & phase. +scriptEvent void sway( float speed, float phase, vector depth ); + +// Sets the sound to be played when the mover accelerates. +scriptEvent void accelSound( decl sound ); + +// Sets the sound to be played when the mover decelerates. +scriptEvent void decelSound( decl sound ); + +// Sets the sound to be played when the moving. +scriptEvent void moveSound( decl sound ); + +// Enables aligning the mover with the spline direction. +scriptEvent void enableSplineAngles(); + +// Disables aligning the mover with the spline direction. +scriptEvent void disableSplineAngles(); + +// Subtracts the initial spline angles to maintain the initial orientation of the mover. +scriptEvent void removeInitialSplineAngles(); + +// Starts moving along a spline stored on the given entity. +scriptEvent void startSpline( entity splineEntity ); + +// Starts moving along a spline stored on the given entity, optionally ignore entity rotation and follow spline's initial rotation +scriptEvent void followSpline( entity splineEntity, int ignoreEntityRotation, int followSplineInitialRotation ); + +// Stops moving along a spline. +scriptEvent void stopSpline(); + +// Returns true if a mover is moving +scriptEvent int isMoving(); + +// Returns true if a mover is rotating +scriptEvent int isRotating(); + +// emit smoke / particles +scriptEvent void emitSmoke( string particle, int timeOffsetSecs, float diversity, vector offset ); + +// enable influence trail +scriptEvent void enableInfluence(); + +// disable influence trail +scriptEvent void disableInfluence(); + +// call this to break the constraint that holds the impaled target to the mover +scriptEvent void breakConstraint(); + +// call this after breaking the constraint to reset this mover to impale again! +scriptEvent void restConstraint(); + +// called after this tried to impale an entity to make sure it will not impale an entity while resetting +scriptEvent void impaleFinished(); + +/* +================================================ + idSplinePathMM +================================================ +*/ + +// get the number of spline children associated with this spline +scriptEvent int getNumSplineChildren(); + +// get the spline child at a particular index +scriptEvent entity getSplineChild( int index ); + +// get the next spline child +scriptEvent entity getNextSplineChild( float splineLength ); + +// get the nearest spline child to a spline length position +scriptEvent entity getClosestSplineChild( float splineLength ); + +// return the total length of the spline +scriptEvent float getSplineLength(); + +// find the distance along the spline from a world position, projected onto nearest spline position +scriptEvent float getDistanceAlongPath( vector worldPos, float lastDistance, float searchWidth, float interval ); + +// get the vector position along a path at a specified distanced(clamped 0.0 to spline length) +scriptEvent vector getPositionAlongPath( float distance ); + +// get the vector direction/tangent of the spline at a specified distance(clamped 0.0 to spline length) +scriptEvent vector getDirectionAlongPath( float distance ); + +/* +================================================ + idMoverMM +================================================ +*/ + +// Stops any translational movement. +scriptEvent void stopMoving(); + +// Stops any rotational movement. +scriptEvent void stopRotating(); + +// Sets the movement speed. Set this speed before initiating a new move. +scriptEvent void speed( float speed ); + +// Sets the movement time. Set this time before initiating a new move. +scriptEvent void time( float time ); + +// Sets the acceleration time. Set this acceleration time before initiating a new move. +scriptEvent void accelTime( float time ); + +// Sets the deceleration time. Set this deceleration time before initiating a new move. +scriptEvent void decelTime( float time ); + +// Initiates a translation to the position of an entity. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void moveTo( entity ent ); + +// Initiates a translation to an absolute position. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void moveToPos( vector pos ); + +// Initiates a translation with the given distance in the given yaw direction. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void move( float angle, float distance ); + +// Initiates an acceleration to the given speed over the given time in seconds. +scriptEvent void accelTo( float speed, float time ); + +// Initiates a deceleration to the given speed over the given time in seconds. +scriptEvent void decelTo( float speed, float time ); + +// Initiates a rotation about the given axis by decreasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateDownTo( int axis, float angle ); + +// Initiates a rotation about the given axis by increasing the current angle towards the given angle. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateUpTo( int axis, float angle ); + +// Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateTo( vector angles ); + +// Initiates a rotation towards the given Euler angles. Uses the current speed/time and acceleration and deceleration settings. This version garuntees to take the shortest rotational path +scriptEvent void rotateToShortest( vector angles ); + +// Initiates a rotation with the given angular speed. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateXYZ( float x, float y, float z ); + +// +scriptEvent void rotate( vector angles ); + +// Initiates a rotation towards the current angles plus the given Euler angles. Uses the current speed/time and acceleration and deceleration settings. +scriptEvent void rotateOnceXYZ( float x, float y, float z ); + +// +scriptEvent void rotateOnce( vector angles ); + +// Initiates a translation back & forth along the given vector with the given speed & phase. +scriptEvent void bob( float speed, float phase, vector depth ); + +// Initiates a rotation back and forth along the given angles with the given speed & phase. +scriptEvent void sway( float speed, float phase, vector depth ); + +// Sets the sound to be played when the mover accelerates. +scriptEvent void accelSound( decl sound ); + +// Sets the sound to be played when the mover decelerates. +scriptEvent void decelSound( decl sound ); + +// Sets the sound to be played when the moving. +scriptEvent void moveSound( decl sound ); + +// Enables aligning the mover with the spline direction. +scriptEvent void enableSplineAngles(); + +// Disables aligning the mover with the spline direction. +scriptEvent void disableSplineAngles(); + +// Subtracts the initial spline angles to maintain the initial orientation of the mover. +scriptEvent void removeInitialSplineAngles(); + +// doom: made protected to support Tick implementation Starts moving along a spline stored on the given entity. +scriptEvent void startSpline( entity splineEntity ); + +// +scriptEvent void travelSpline( entity splineEntity, boolean forward, boolean setSplineAngle ); + +// +scriptEvent void pauseSpline( boolean pause ); + +// Stops moving along a spline. +scriptEvent void stopSpline(); + +// Returns true if a mover is moving +scriptEvent int isMoving(); + +// +scriptEvent boolean isDone(); + +// Returns true if a mover is rotating +scriptEvent int isRotating(); + +// emit smoke / particles +scriptEvent void emitSmokeDecl( decl decl, int timeOffsetSecs, float diversity, vector offset ); + +/* +================================================ + idFuncRotate +================================================ +*/ + +// +scriptEvent void action_SetRotateSpeed( int pitch, int yaw, int roll ); + +/* +================================================ + idPathCorner +================================================ +*/ + +// Chooses a random path from the entity's targets, ignoring non-path entities. +scriptEvent entity randomPath(); + +/* +================================================ + idBinaryModel +================================================ +*/ + +// Returns true if the entity's model is invisible. +scriptEvent int isHidden(); + +// Makes this entity invisible. +scriptEvent void hide(); + +// Makes this entity visible if it has a model. +scriptEvent void show(); + +/* +================================================ + idDynamicEntity +================================================ +*/ + +// +scriptEvent void fade( float from, float to, float secs ); + +// +scriptEvent void fadeNoStipple( float from, float to, float secs ); + +// +scriptEvent void activateColorModulate(); + +// +scriptEvent void deactivateColorModulate(); + +/* +================================================ + idRegimeTile +================================================ +*/ + +// +scriptEvent void pulse(); + +// +scriptEvent void powerDown(); + +// +scriptEvent void powerUp(); + +/* +================================================ + idEntityImposter +================================================ +*/ + +// +scriptEvent void mimicEntity(); + +/* +================================================ + idParticleEmitter +================================================ +*/ + +// +scriptEvent void triggerShow(); + +/* +================================================ + idElectricBoltEmitter +================================================ +*/ + +// +scriptEvent void deactivate(); + +// +scriptEvent void resetTarget(); + +/* +================================================ + idGuiEntity +================================================ +*/ + +// +scriptEvent void setFloat( string name, float value ); + +// +scriptEvent void setString( string name, string str ); + +// +scriptEvent void resetGuiEntity(); + +// +scriptEvent void moveToState( int state ); + +// +scriptEvent void enableInteract( boolean enable ); + +/* +================================================ + idWorldDestructibleEntity +================================================ +*/ + +// events +scriptEvent void breakPiece( int pieceIndex, vector impulse ); + +/* +================================================ + idAnimated +================================================ +*/ + +// +scriptEvent void reset(); + +/* +================================================ + idAnimatedSimple +================================================ +*/ + +// Starts playing the given animation directly +scriptEvent void playAnim( string animName, boolean loop, int blendTime ); + +// Sets animstate +scriptEvent void setAnimState( int state, int blendTime, boolean queueChangeState ); + +// +scriptEvent int getAnimState(); + +// +scriptEvent void pauseAnim( boolean pause, int pauseFrame, boolean queuePause ); + +// +scriptEvent void showAttachments( boolean show ); + +// +scriptEvent boolean startVoiceOver( entity talkingTo, decl vo, boolean playInCombat ); + +// +scriptEvent boolean isVoiceOverPlaying( decl vo ); + +/* +================================================ + idModifiedPlayerMovement +================================================ +*/ + +// Reset on player +scriptEvent void remove(); + +/* +================================================ + idAnimated_AnimWeb +================================================ +*/ + +// +scriptEvent void changeAnimState( string destSubWebName, string destStateName ); + +// +scriptEvent void changeAnimStateVia( string destSubWebName, string destStateName, string viaSubWebName, string viaStateName ); + +// +scriptEvent void forceAnimState( string destSubWebName, string destStateName, int blendDurationMS ); + +// +scriptEvent boolean startVoiceOver( entity talkingTo, decl vo, boolean playInCombat ); + +/* +================================================ + idLight +================================================ +*/ + +// Sets the shader to be used for the light. +scriptEvent void setShader( string shadername ); + +// Sets the red/green/blue/alpha shader parms on the light and the model. +scriptEvent void setLightParms( float parm0, float parm1, float parm2, float parm3 ); + +// Sets the width/length/height of the light bounding box. +scriptEvent void setRadiusXYZ( float x, float y, float z ); + +// Sets the size of the bounding box. +scriptEvent void setRadius( float radius ); + +// Turns the light off. +scriptEvent void hide(); + +// Turns the light on. +scriptEvent void show(); + +// Turns the light on. +scriptEvent void on(); + +// Turns the light off. +scriptEvent void off(); + +// Turns the light off over the given time in seconds. +scriptEvent void fadeOutLight( float time ); + +// Turns the light on over the given time in seconds. +scriptEvent void fadeInLight( float time ); + +/* +================================================ + idCamera +================================================ +*/ + +// +scriptEvent void deactivate(); + +/* +================================================ + idInteractionCamera +================================================ +*/ + +// +scriptEvent void reallyDeactivate(); + +// +scriptEvent void interactActivate( entity activator_, entity aitarget ); + +/* +================================================ + idAlignedEntity +================================================ +*/ + +// +scriptEvent void setViewAnglesFromCamera(); + +// +scriptEvent void attachLimitViewCamera( string jointName, int lookMode, int blendMode, float viewConeDeg, float autoCenterK ); + +/* +================================================ + idWorldspawn +================================================ +*/ + +// +scriptEvent void remove(); + +/* +================================================ + idDummyGarbageDontUse +================================================ +*/ + +/* +================================================ + idVolume +================================================ +*/ + +// +scriptEvent int numEntitiesInVolume(); + +// +scriptEvent int numEntitiesInVolumeByName( string subStr ); + +// +scriptEvent int numAIsInVolume(); + +// +scriptEvent int numPlayersInVolume(); + +// +scriptEvent int numVehiclesInVolume(); + +// +scriptEvent int numDronesInVolume(); + +// +scriptEvent int numDropShipsInVolume(); + +// +scriptEvent boolean isEntityInVolume( entity entity ); + +// { return eventVoid(); } +scriptEvent void volumeMemberAdded( entity member ); + +/* +================================================ + idVolume_ItemGroup +================================================ +*/ + +// +scriptEvent void gatherItems(); + +/* +================================================ + idVolume_RegimeRegenerate +================================================ +*/ + +// +scriptEvent void reset(); + +/* +================================================ + idVolume_PlayerViewEffect +================================================ +*/ + +// +scriptEvent void deactivate(); + +/* +================================================ + idCombatVolume +================================================ +*/ + +// note: if group == "" then players +scriptEvent int countInGroup( string groupName ); + +// +scriptEvent int averageHealthInGroup( string groupName ); + +// +scriptEvent int highestHealthInGroup( string groupName ); + +// +scriptEvent int lowestHealthInGroup( string groupName ); + +/* +================================================ + idInfoSplineChild +================================================ +*/ + +// get the length along the spline this entity is +scriptEvent float getLengthOnSpline(); + +// get the parent spline entity +scriptEvent entity getParentSpline(); + +/* +================================================ + idInfoLinkSegment +================================================ +*/ + +// +scriptEvent void enableLink( boolean enable ); + +/* +================================================ + idScenePoint_Arc +================================================ +*/ + +// +scriptEvent boolean isInArc( vector pos ); + +/* +================================================ + idTrigger +================================================ +*/ + +// +scriptEvent void enable(); + +// +scriptEvent void disable(); + +// +scriptEvent string getUserData(); + +/* +================================================ + idSoundDoor +================================================ +*/ + +// +scriptEvent void open( entity user ); + +// +scriptEvent void close( entity user ); + +/* +================================================ + idTarget_MultiSound +================================================ +*/ + +// +scriptEvent boolean isPlayingSound(); + +/* +================================================ + idTarget_SoundDuck +================================================ +*/ + +// +scriptEvent void duckSounds(); + +/* +================================================ + idEditorModelEntity +================================================ +*/ + +/* +================================================ + idAnimCamera +================================================ +*/ + +/* +================================================ + idScriptMapEntity +================================================ +*/ + +// Deactivate the script +scriptEvent void deactivate(); + +/* +================================================ + idUse +================================================ +*/ + +// +scriptEvent void delayedActivation( entity activator, int usable ); + +/* +================================================ + idProp_Usable +================================================ +*/ + +// +scriptEvent void delayedActivation( entity activator, int usable ); + +// checks if the prop is standing upright +scriptEvent float isUpright(); + +// +scriptEvent void setUsable( boolean usable ); + +/* +================================================ + idProp_ContinuallyUsed +================================================ +*/ + +// events +scriptEvent void setUsePercent( float amount ); + +// +scriptEvent float getUsePercent(); + +// +scriptEvent void setRateOfIncrease( float rate ); + +// +scriptEvent void setRateOfDecrease( float rate ); + +/* +================================================ + idProp_Breakable +================================================ +*/ + +// Break the moveable +scriptEvent void breakIt(); + +/* +================================================ + idProp_Explosive +================================================ +*/ + +// +scriptEvent void detonate( entity activator ); + +// +scriptEvent void preDetonate( entity activator ); + +// +scriptEvent void resetContainer( entity activator ); + +/* +================================================ + idProp_Spawnable +================================================ +*/ + +// These are pooled objects so we don't want anything to remove this class except the SpawnablePropManager +scriptEvent void remove(); + +/* +================================================ + idMinigame +================================================ +*/ + +// +scriptEvent void minigameSuccess(); + +/* +================================================ + idDoor_Base +================================================ +*/ + +// +scriptEvent void linkSoundDoor(); + +// +scriptEvent void open( entity user ); + +// +scriptEvent void kickOpen( entity user, float forceScale ); + +// +scriptEvent void close( entity user ); + +// +scriptEvent boolean getLocked(); + +// +scriptEvent void setLocked( int lock ); + +// +scriptEvent void setForcedUnusable( int lock ); + +// +scriptEvent void setPlayerUsable( int usable ); + +/* +================================================ + idDoor_Laser +================================================ +*/ + +// toggle open/close make door open +scriptEvent void open( entity dummy ); + +// make door close +scriptEvent void close( entity dummy ); + +// make door close +scriptEvent void enable(); + +// make door open +scriptEvent void disable(); + +// make door close +scriptEvent void show(); + +// make door open +scriptEvent void hide(); + +// toggle the door +scriptEvent void activate( entity dummy ); + +/* +================================================ + idDoor_Parametric +================================================ +*/ + +// +scriptEvent void setAngleAtTime( entity source, float duration, float yaw ); + +// +scriptEvent void lockGrinderSetAngleAtTime( entity source, vector dir, float duration, float yaw ); + +// +scriptEvent boolean isOpen(); + +// +scriptEvent boolean isClosed(); + +// +scriptEvent boolean isLockedForEntity( entity entity ); + +// +scriptEvent vector getAIUsePosition( entity entity ); + +// +scriptEvent vector getCenterOfDoor(); + +// +scriptEvent void disableObstacleFlag(); + +/* +================================================ + idLaserGate +================================================ +*/ + +// +scriptEvent void powerUpLasers(); + +// +scriptEvent void shutDownLasers(); + +/* +================================================ + idEntityFx +================================================ +*/ + +// Start the fx with the specified condition +scriptEvent void startFX( int condition ); + +// Stop the fx with the specified condition +scriptEvent void stopFX( int condition ); + +/* +================================================ + idPlayerControlled +================================================ +*/ + +/* +================================================ + idPanzerHund +================================================ +*/ + +// +scriptEvent void action_ChangeAnimState( int animweb, string destNode, int waitType ); + +// +scriptEvent void action_ChangeAnimStateVia( int animweb, string destNode, string viaNode, int wait ); + +/* +================================================ + idTrigger_SaveGame +================================================ +*/ + +// +scriptEvent void triggerSaveGame( entity activator ); + +/* +================================================ + mgFunc_CaptureFrames +================================================ +*/ + +// +scriptEvent void deactivate(); + +/* +================================================ + idExplodable +================================================ +*/ + +// +scriptEvent void disablePhysics(); + +/* +================================================ + idAlertCycle_Default +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_ExecuteDoomscript +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_ActionScript +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Relaxed +================================================ +*/ + +// +scriptEvent int fsm_stuck(); + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Combat +================================================ +*/ + +// +scriptEvent int fsm_stuck(); + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_CombatScenePoint +================================================ +*/ + +// +scriptEvent int fsm_stuck(); + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_SearchScenePoint +================================================ +*/ + +// +scriptEvent int fsm_stuck(); + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_RoamScenePoint +================================================ +*/ + +// +scriptEvent int fsm_stuck(); + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Search +================================================ +*/ + +// +scriptEvent int fsm_stuck(); + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Pain +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Melee +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +/* +================================================ + idAlertCycle_Passified +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Avoid +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +/* +================================================ + idAlertCycle_WatchPossessedGuy +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_DropFromShip +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +/* +================================================ + idAlertCycle_PerformDropLanding +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +/* +================================================ + idAlertCycle_OnElevator +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAlertCycle_Stuck +================================================ +*/ + +// +scriptEvent int fsm_killed(); + +// +scriptEvent int fsm_pain( entity owner ); + +/* +================================================ + idAnimStateMoveGround +================================================ +*/ + +// +scriptEvent void fsm_startArrival(); + +// +scriptEvent void fsm_startDeparture(); + +// +scriptEvent void fsm_startStepTransition(); + +// +scriptEvent void fsm_animEventLunge(); + +// +scriptEvent void fsm_departureReturnToMove(); + +/* +================================================ + idAnimFSM +================================================ +*/ + +// +scriptEvent void fsm_notifyDead(); + +/* +================================================ + idAIStateError +================================================ +*/ + +// +scriptEvent void action_ErrorEnter( entity entity ); + +/* +================================================ + idAIStateDone +================================================ +*/ + +// +scriptEvent void action_DoneEnter( entity entity ); + +/* +================================================ + idAction_MoveToPoint +================================================ +*/ + +// +scriptEvent void action_MoveToPointEnter( entity entity, int moveReason, vector dest, int arrivalAction, float tolerance, boolean align, vector dir ); + +/* +================================================ + idAction_MoveToPointNoFail +================================================ +*/ + +// +scriptEvent void action_MoveToPointNoFailEnter( entity entity, int moveReason, vector dest, int arrivalAction, float tolerance, boolean align, vector dir, decl ptr ); + +/* +================================================ + idAction_MoveToEntity +================================================ +*/ + +// +scriptEvent void action_MoveToEntityEnter( entity entity, int moveReason, entity destEnt, int arrivalAction, float tolerance, boolean align, vector dir, boolean smoothTransitions ); + +/* +================================================ + idAction_MoveToEntityNoFail +================================================ +*/ + +// +scriptEvent void action_MoveToEntityNoFailEnter( entity entity, int moveReason, entity destEnt, int arrivalAction, float tolerance, boolean align, vector dir, decl ptr ); + +/* +================================================ + idAction_MoveToPathPoint +================================================ +*/ + +// +scriptEvent void action_MoveToPathPointEnter( entity entity, int moveReason, entity pathPoint ); + +/* +================================================ + idAction_MoveToPathPointNoFail +================================================ +*/ + +// +scriptEvent void action_MoveToPathPointNoFailEnter( entity entity, int moveReason, entity pathPoint, decl ptr ); + +/* +================================================ + idAction_MoveToCover +================================================ +*/ + +// +scriptEvent void action_MoveToCoverEnter( entity entity, int moveReason, vector dest, int arrivalAction, int arrivalPosture, boolean align, vector dir ); + +/* +================================================ + idAction_UseZipline +================================================ +*/ + +// +scriptEvent void action_UseZiplineEnter( entity entity, entity destEnt ); + +/* +================================================ + idAction_SetMovePushStatus +================================================ +*/ + +// +scriptEvent void action_SetMovePushStatusEnter( entity entity, int newStatus ); + +/* +================================================ + idAction_Idle +================================================ +*/ + +// +scriptEvent void action_IdleEnter( entity entity, int time, int turnType ); + +/* +================================================ + idAction_Pain +================================================ +*/ + +// +scriptEvent void action_PainEnter( entity entity ); + +/* +================================================ + idAction_StandToCrouch +================================================ +*/ + +// +scriptEvent void action_StandToCrouchEnter( entity entity ); + +/* +================================================ + idAction_CrouchToStand +================================================ +*/ + +// +scriptEvent void action_CrouchToStandEnter( entity entity ); + +/* +================================================ + idAction_PullTriggerRight +================================================ +*/ + +// +scriptEvent void action_PullTriggerRightEnter( entity entity ); + +/* +================================================ + idAction_ReleaseTriggerRight +================================================ +*/ + +// +scriptEvent void action_ReleaseTriggerRightEnter( entity entity ); + +/* +================================================ + idAction_PullTriggerLeft +================================================ +*/ + +// +scriptEvent void action_PullTriggerLeftEnter( entity entity ); + +/* +================================================ + idAction_ReleaseTriggerLeft +================================================ +*/ + +// +scriptEvent void action_ReleaseTriggerLeftEnter( entity entity ); + +/* +================================================ + idAction_ReloadWeapon +================================================ +*/ + +// +scriptEvent void action_ReloadWeaponEnter( entity entity, int slot, decl ammoDecl ); + +/* +================================================ + idAction_ReloadWeaponTorso +================================================ +*/ + +// +scriptEvent void action_ReloadWeaponTorsoEnter( entity entity, int slot, decl ammoDecl ); + +/* +================================================ + idAction_WaitForAnim +================================================ +*/ + +// +scriptEvent void action_WaitForAnimEnter( entity entity, string animRef ); + +/* +================================================ + idAction_WaitForAnimVia +================================================ +*/ + +// +scriptEvent void action_WaitForAnimViaEnter( entity entity, string destAnim, string viaAnim ); + +/* +================================================ + idAction_LoopAnim +================================================ +*/ + +// +scriptEvent void action_LoopAnimEnter( entity entity, string animRef, int waitTimeMS ); + +/* +================================================ + idAction_LoopAnimExitAtEnd +================================================ +*/ + +// +scriptEvent void action_LoopAnimExitAtEndEnter( entity entity, string animRef, int waitTimeMS, int endFramesFromEnd ); + +/* +================================================ + idAction_StartAnim +================================================ +*/ + +// +scriptEvent void action_StartAnimEnter( entity entity, string animRef, boolean finishBlend, boolean wait ); + +/* +================================================ + idAction_WaitForTraversalAnim +================================================ +*/ + +// +scriptEvent void action_WaitForTraversalAnimEnter( entity entity, string traversalAnimName, boolean runWhenDone ); + +/* +================================================ + idAction_ChangeAnimState +================================================ +*/ + +// +scriptEvent void action_ChangeAnimStateEnter( entity entity, int aw, string destNode, int wait ); + +/* +================================================ + idAction_ChangeAnimStateVia +================================================ +*/ + +// +scriptEvent void action_ChangeAnimStateViaEnter( entity entity, int aw, string destNode, string viaNode, int wait ); + +/* +================================================ + idAction_ForceAnimState +================================================ +*/ + +// +scriptEvent void action_ForceAnimStateEnter( entity entity, int aw, string destNode, int blendDurationMS, int wait ); + +/* +================================================ + idAction_Dodge +================================================ +*/ + +// +scriptEvent void action_DodgeEnter( entity entity, int dodgeDir ); + +/* +================================================ + idAction_Wait +================================================ +*/ + +// +scriptEvent void action_WaitEnter( entity entity, int time ); + +/* +================================================ + idAction_Dive +================================================ +*/ + +// +scriptEvent void action_DiveEnter( entity entity, int moveReason, float diveYaw, float faceYaw ); + +/* +================================================ + idAction_Melee +================================================ +*/ + +// +scriptEvent void action_MeleeEnter( entity entity, int overrideAnim, boolean align, vector dir ); + +/* +================================================ + idAction_TurnToPoint +================================================ +*/ + +// +scriptEvent void action_TurnToPointEnter( entity entity, vector dest ); + +/* +================================================ + idAction_TurnToEntity +================================================ +*/ + +// +scriptEvent void action_TurnToEntityEnter( entity entity, entity ent ); + +/* +================================================ + idAction_TurnToEntityWithOffset +================================================ +*/ + +// +scriptEvent void action_TurnToEntityWithOffsetEnter( entity entity, entity ent, float yawOffset ); + +/* +================================================ + idAction_WaitForEntity +================================================ +*/ + +// +scriptEvent void action_WaitForEntityEnter( entity entity, entity ent, float distance ); + +/* +================================================ + idAction_EnterVehicle +================================================ +*/ + +// +scriptEvent void action_EnterVehicleEnter( entity entity, entity vehicle, entity vehicleAI ); + +/* +================================================ + idAction_PlayVoiceOver +================================================ +*/ + +// +scriptEvent void action_PlayVoiceOverEnter( entity entity, decl vo, boolean wait ); + +/* +================================================ + idAction_StopVoiceOver +================================================ +*/ + +// +scriptEvent void action_StopVoiceOverEnter( entity entity ); + +/* +================================================ + idAction_PlayInteractionVoiceOver +================================================ +*/ + +// +scriptEvent void action_PlayInteractionVoiceOverEnter( entity entity, decl vo, entity ent, float distance, boolean abort ); + +/* +================================================ + idAction_PlayOverrideAnim +================================================ +*/ + +// +scriptEvent void action_PlayOverrideAnimEnter( entity entity, int overrideAnim ); + +/* +================================================ + idAction_PlayOverrideAnimInterrupt +================================================ +*/ + +// +scriptEvent void action_PlayOverrideAnimInterruptEnter( entity entity, int overrideAnim ); + +/* +================================================ + idAction_DrawWeapon +================================================ +*/ + +// +scriptEvent void action_DrawWeaponEnter( entity entity ); + +/* +================================================ + idAction_HolsterWeapon +================================================ +*/ + +// +scriptEvent void action_HolsterWeaponEnter( entity entity ); + +/* +================================================ + idAction_LeapAttack +================================================ +*/ + +// +scriptEvent void action_LeapAttackEnter( entity entity, vector leapTarget ); + +/* +================================================ + idAction_PerformCoverAction +================================================ +*/ + +// +scriptEvent void action_PerformCoverActionEnter( entity entity, int coverAction, int duration ); + +/* +================================================ + idAction_WaitForPlayerInteraction +================================================ +*/ + +// +scriptEvent void action_WaitForPlayerInteractionEnter( entity entity, float distance ); + +/* +================================================ + idAction_WaitForAIVar +================================================ +*/ + +// +scriptEvent void action_WaitForAIVarEnter( entity entity, string varName, int op, string varValue ); + +/* +================================================ + idAction_PerfectMovement +================================================ +*/ + +// +scriptEvent void action_PerfectMovementEnter( entity entity, vector perfectMovementStartPoint, quat startAxis, string subweb, string state, boolean forceTransition, boolean isPerfectDestination ); + +/* +================================================ + idAction_SetAlertCycle +================================================ +*/ + +// +scriptEvent void action_SetAlertCycleEnter( entity entity, int ac ); + +/* +================================================ + idAction_SetSubWeb +================================================ +*/ + +// +scriptEvent void action_SetSubWebEnter( entity entity, int sw ); + +/* +================================================ + idAction_SetFocus +================================================ +*/ + +// +scriptEvent void action_SetFocusEnter( entity entity, entity ent, boolean aiming, boolean keepFocusInView, boolean trackOnlyVisible, int aimPoint ); + +/* +================================================ + idAction_ClearLookFocus +================================================ +*/ + +// +scriptEvent void action_ClearLookFocusEnter( entity entity ); + +/* +================================================ + idAction_ClearAimFocus +================================================ +*/ + +// +scriptEvent void action_ClearAimFocusEnter( entity entity ); + +/* +================================================ + idAction_SetAimPoint +================================================ +*/ + +// +scriptEvent void action_SetAimPointEnter( entity entity, int aimPoint ); + +/* +================================================ + idAction_SetFireMode +================================================ +*/ + +// +scriptEvent void action_SetFireModeEnter( entity entity, int fireMode ); + +/* +================================================ + idAction_SetScriptAbort +================================================ +*/ + +// +scriptEvent void action_SetScriptAbortEnter( entity entity, boolean abortForCombat, boolean abortForSearch ); + +/* +================================================ + idAction_SetPosture +================================================ +*/ + +// +scriptEvent void action_SetPostureEnter( entity entity, int posture ); + +/* +================================================ + idAction_SetWalkState +================================================ +*/ + +// +scriptEvent void action_SetWalkStateEnter( entity entity, int ws ); + +/* +================================================ + idAction_SetSitState +================================================ +*/ + +// +scriptEvent void action_SetSitStateEnter( entity entity, int ss ); + +/* +================================================ + idAction_SetStandState +================================================ +*/ + +// +scriptEvent void action_SetStandStateEnter( entity entity, int ss ); + +/* +================================================ + idAction_SetIdleState +================================================ +*/ + +// +scriptEvent void action_SetIdleStateEnter( entity entity, int state ); + +/* +================================================ + idAction_IgnorePlayerApproach +================================================ +*/ + +// +scriptEvent void action_IgnorePlayerApproachEnter( entity entity, boolean permanent ); + +/* +================================================ + idAction_NoticePlayerApproach +================================================ +*/ + +// +scriptEvent void action_NoticePlayerApproachEnter( entity entity, boolean permanent ); + +/* +================================================ + idAction_SetPlayerEnemy +================================================ +*/ + +// +scriptEvent void action_SetPlayerEnemyEnter( entity entity, int player ); + +/* +================================================ + idAction_SetEnemy +================================================ +*/ + +// +scriptEvent void action_SetEnemyEnter( entity entity, entity enemy ); + +/* +================================================ + idAction_SearchToTarget +================================================ +*/ + +// +scriptEvent void action_SearchToTargetEnter( entity entity, entity target ); + +/* +================================================ + idAction_SetPlayerFocus +================================================ +*/ + +// +scriptEvent void action_SetPlayerFocusEnter( entity entity, int player, boolean aiming, boolean keepFocusInView, boolean trackOnlyVisible, int aimPoint ); + +/* +================================================ + idAction_SetActionNodeGroup +================================================ +*/ + +// +scriptEvent void action_SetActionNodeGroupEnter( entity entity, string groupName ); + +/* +================================================ + idAction_Trigger +================================================ +*/ + +// +scriptEvent void action_TriggerEnter( entity entity, entity ent ); + +/* +================================================ + idAction_EnableDamage +================================================ +*/ + +// +scriptEvent void action_EnableDamageEnter( entity entity, boolean enabled, boolean permanent ); + +/* +================================================ + idAction_EnablePain +================================================ +*/ + +// +scriptEvent void action_EnablePainEnter( entity entity, boolean enabled ); + +/* +================================================ + idAction_EnableAutoFocus +================================================ +*/ + +// +scriptEvent void action_EnableAutoFocusEnter( entity entity, boolean enabled, boolean permanent ); + +/* +================================================ + idAction_EnableBodyRotation +================================================ +*/ + +// +scriptEvent void action_EnableBodyRotationEnter( entity entity, boolean enabled ); + +/* +================================================ + idAction_EnableWalkIK +================================================ +*/ + +// +scriptEvent void action_EnableWalkIKEnter( entity entity, boolean enabled ); + +/* +================================================ + idAction_EnableHeadTracking +================================================ +*/ + +// +scriptEvent void action_EnableHeadTrackingEnter( entity entity, boolean enabled ); + +/* +================================================ + idAction_ForceOpenCombat +================================================ +*/ + +// +scriptEvent void action_ForceOpenCombatEnter( entity entity, int player ); + +/* +================================================ + idAction_ForceAwarenessByDistance +================================================ +*/ + +// +scriptEvent void action_ForceAwarenessByDistanceEnter( entity entity, float radius, boolean playerFlag, boolean aiFlag ); + +/* +================================================ + idAction_ForcePlayerInteraction +================================================ +*/ + +// +scriptEvent void action_ForcePlayerInteractionEnter( entity entity, int player ); + +/* +================================================ + idAction_SetAIVar +================================================ +*/ + +// +scriptEvent void action_SetAIVarEnter( entity entity, string varName, int type, string varValue ); + +/* +================================================ + idAction_GiveItem +================================================ +*/ + +// +scriptEvent void action_GiveItemEnter( entity entity, entity giveTo, decl itemDecl ); + +/* +================================================ + idAction_TakeItem +================================================ +*/ + +// +scriptEvent void action_TakeItemEnter( entity entity, entity takeFrom, decl itemDecl ); + +/* +================================================ + idAction_ClearWorldState +================================================ +*/ + +// +scriptEvent void action_ClearWorldStateEnter( entity entity ); + +/* +================================================ + idAction_ShowAttachment +================================================ +*/ + +// +scriptEvent void action_ShowAttachmentEnter( entity entity, string slotName ); + +/* +================================================ + idAction_HideAttachment +================================================ +*/ + +// +scriptEvent void action_HideAttachmentEnter( entity entity, string slotName ); + +/* +================================================ + idAction_DropAttachment +================================================ +*/ + +// +scriptEvent void action_DropAttachmentEnter( entity entity, string slotName ); + +/* +================================================ + idAction_SetScriptFlag +================================================ +*/ + +// +scriptEvent void action_SetScriptFlagEnter( entity entity, int flags ); + +/* +================================================ + idAction_ClearScriptFlag +================================================ +*/ + +// +scriptEvent void action_ClearScriptFlagEnter( entity entity, int flags ); + +/* +================================================ + idAction_SetPerceptionFlag +================================================ +*/ + +// +scriptEvent void action_SetPerceptionFlagEnter( entity entity, int flags ); + +/* +================================================ + idAction_ClearPerceptionFlag +================================================ +*/ + +// +scriptEvent void action_ClearPerceptionFlagEnter( entity entity, int flags ); + +/* +================================================ + idAction_SetMoveMode +================================================ +*/ + +// +scriptEvent void action_SetMoveModeEnter( entity entity, int moveMode ); + +/* +================================================ + idAction_SetAccuracy +================================================ +*/ + +// +scriptEvent void action_SetAccuracyEnter( entity entity, int accuracy ); + +/* +================================================ + idAction_ScriptedAnimWeb +================================================ +*/ + +// +scriptEvent void action_ScriptedAnimWebEnter( entity entity, entity entityPtr, int loopInterval_ ); + +/* +================================================ + idAction_MoveToScenePoint +================================================ +*/ + +// +scriptEvent void action_MoveToScenePointEnter( entity entity, entity entityPtr, int flags ); + +/* +================================================ + idAIDeathVolume +================================================ +*/ + +// +scriptEvent void stopKilling(); + +/* +================================================ + idTurretGunner +================================================ +*/ + +// +scriptEvent void animWeb_Raised( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +// +scriptEvent void animWeb_Lowered( int webHandle, int subWebIndex, int stateIndex, int eventParm ); + +/* +================================================ + idVehicleMountedTurret +================================================ +*/ + +/* +================================================ + idTarget_PlayerCheckpoint +================================================ +*/ + +// +scriptEvent void activate( entity activator ); + +// +scriptEvent void doCheckpoint( entity activator ); + +/* +================================================ + idTarget_LevelTransition +================================================ +*/ + +// +scriptEvent void doTransition( entity activator ); + +/* +================================================ + idTarget_SetSpawnSpot +================================================ +*/ + +// +scriptEvent void activate( entity activator ); + +/* +================================================ + idTarget_Spawn +================================================ +*/ + +// +scriptEvent entity getLastSpawned(); + +/* +================================================ + idTarget_Disconnect +================================================ +*/ + +// +scriptEvent void doTransition( entity activator ); + +/* +================================================ + idTarget_DummyFire +================================================ +*/ + +// +scriptEvent boolean setFireTarget( entity target ); + +// +scriptEvent void setFireTime( float time ); + +// +scriptEvent void setFireDone(); + +/* +================================================ + idTarget_PlayerOverrideFocus +================================================ +*/ + +// +scriptEvent void overrideFocus( entity activator, boolean setFocus ); + +/* +================================================ + idTarget_Conditional +================================================ +*/ + +// +scriptEvent void modifyCount( int value ); + +// +scriptEvent int getCurrentCount(); + +// +scriptEvent int getLimitCount(); + +/* +================================================ + idTarget_NextMap +================================================ +*/ + +// +scriptEvent void doTransition( entity activator ); + +/* +================================================ + idFirstPersonEvent +================================================ +*/ + +// +scriptEvent void attachEntity( entity entity, string tag ); + +// +scriptEvent void forceEndFirstPersonEvent(); + +// +scriptEvent void setFirstPersonEventAnimState( int state ); + +/* +================================================ + idDrone +================================================ +*/ + +/* +================================================ + idGameChallenge_Coop +================================================ +*/ + +/* +================================================ + idGameChallenge_PVP +================================================ +*/ + +#endif // !__SCRIPT_EVENTS_SCRIPT__ diff --git a/bin/base/script/script_main.script b/bin/base/script/script_main.script new file mode 100644 index 0000000..6150a8a --- /dev/null +++ b/bin/base/script/script_main.script @@ -0,0 +1,26 @@ +/*********************************************************************** + +script_main.script + +This is the main script that is loaded before any level scripts load. + +***********************************************************************/ + +// these are automatically included by every script file +//#include "script_defs.script" +//#include "script_events.script" + +// base defines and util functions +#include "script_util.script" +#include "debug_drawtext.script" +//#include "rage_npc.script" + +void script_main() { + sys.print( "Entering script_main()\n"); + + // + // Do any script setup here + // + + sys.print( "Exiting script_main()\n" ); +} diff --git a/bin/base/script/script_util.script b/bin/base/script/script_util.script new file mode 100644 index 0000000..97d1fd0 --- /dev/null +++ b/bin/base/script/script_util.script @@ -0,0 +1,282 @@ +/*********************************************************************** + +script_util.script + +This defines utility functions for scripts + +***********************************************************************/ + +/* +================== +waitForButtonPress + +Waits for the user to press a button +================== +*/ +void waitForButtonPress() { + float buttons; + + do { + buttons = $player1.getUserButtons(); + sys.wait( 0.01 ); + } while( !buttons ); +} + +/* +================== +abs + +Returns the absolute value of a number +================== +*/ +float abs( float value ) { + if ( value < 0 ) { + return value * -1; + } + + return value; +} + +/* +================== +unpause + +Utility function that works with onSignal to unpause a script +================== +*/ +void unpause() { +} + +/* +================== +anglemod360 + +Puts angles into the range of 0 to 360 +================== +*/ +vector anglemod360( vector ang ) { + while( ang_x < 0 ) { + ang_x += 360; + } + while( ang_x >= 360 ) { + ang_x -= 360; + } + while( ang_y < 0 ) { + ang_y += 360; + } + while( ang_y >= 360 ) { + ang_y -= 360; + } + while( ang_z < 0 ) { + ang_z += 360; + } + while( ang_z >= 360 ) { + ang_z -= 360; + } + + return ang; +} + +/* +================== +anglemod180 + +Puts angles into the range of -180 to 180 +================== +*/ +vector anglemod180( vector ang ) { + while( ang_x < -180 ) { + ang_x += 360; + } + while( ang_x >= 180 ) { + ang_x -= 360; + } + while( ang_y < -180 ) { + ang_y += 360; + } + while( ang_y >= 180 ) { + ang_y -= 360; + } + while( ang_z < -180 ) { + ang_z += 360; + } + while( ang_z >= 180 ) { + ang_z -= 360; + } + + return ang; +} + +/* +================== +delayRemoveThread + +Service thread for delayRemove. +================== +*/ +void delayRemoveThread( entity ent, float mytime ) { + sys.wait( mytime ); + ent.remove(); +} + +/* +================== +delayRemove + +Causes an entity to be removed after a specified amount of time. +================== +*/ +void delayRemove( entity ent, float mytime ) { + thread delayRemoveThread( ent, mytime ); +} + + +/* +================== +fadeOutEnt + +Causes a entity to fade to black +================== +*/ +void fadeOutEnt( entity ent, vector color, float totalTime ) { + float i; + vector c; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = ( numTics - i ) / numTics; + c = color * frac; + ent.setColor( c_x, c_y, c_z ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly black + ent.setColor( 0, 0, 0 ); +} + +/* +================== +fadeInEnt + +Causes a entity to from black to color +================== +*/ +void fadeInEnt( entity ent, vector color, float totalTime ) { + float i; + vector c; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = i / numTics; + c = color * frac; + ent.setColor( c_x, c_y, c_z ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the color + ent.setColor( color_x, color_y, color_z ); +} + +/* +================== +crossFadeEnt + +Causes a entity to from one color to another +================== +*/ +void crossFadeEnt( entity ent, vector source, vector dest, float totalTime ) { + float i; + vector c; + float frac; + float numTics; + + // convert to the total number of game tics + numTics = totalTime * sys.getTicsPerSecond(); + + for( i = 0; i < numTics; i++ ) { + frac = i / numTics; + c = dest * frac + source * ( 1 - frac ); + ent.setColor( c_x, c_y, c_z ); + + // wait one game frame + sys.waitFrame(); + } + + // make sure we are set to exactly the destination color + ent.setColor( dest_x, dest_y, dest_z ); +} + +/* +================== +CalcTimeForRotationAroundEntity + +Calculates the time to perform a rotation of an entity around an entity it is bound to given +the angles to rotate and the desired speed. +================== +*/ +float CalcTimeForRotationAroundEntity( float distanceFromCenter, float angles, float desiredSpeed ) { + float distance; + + if ( desiredSpeed <= 0 ) { + return 0; + } + + distance = DEG2RAD( angles ) * distanceFromCenter; + + return distance / desiredSpeed; +} + +/* +================== +RandomDelay +================== +*/ +float RandomDelay( float min, float max ) { + float t; + + t = sys.getTime(); + t += min + sys.random( max - min ); + + return t; +} + +/* +================== +RandomTime +================== +*/ +float RandomTime( float delay ) { + float t; + + t = sys.getTime(); + t += sys.random( delay ); + + return t; +} + +/* +================== +DelayTime +================== +*/ +float DelayTime( float delay ) { + float t; + + t = sys.getTime(); + t += delay; + t += sys.random( 2 ) - 1; + + return t; +}