Browse Source

Start on organization of textures into texture sets, and implemented a basic test for alias model entities, which are now properly textured including fullbright (emissive) textures.

console
Nico de Poel 5 years ago
parent
commit
fdaee3321f
  1. 6
      Assets/Scripts/Game/Entity.cs
  2. 7
      Assets/Scripts/Modules/RenderModule.cs
  3. 1
      Assets/Scripts/Support/AliasModel.cs
  4. 12
      Assets/Scripts/Support/TextureSet.cs
  5. 11
      Assets/Scripts/Support/TextureSet.cs.meta

6
Assets/Scripts/Game/Entity.cs

@ -129,15 +129,21 @@ public class Entity
private void AssignMeshRenderer()
{
Material material;
if (aliasModel.IsAnimated)
{
visualStyle.SetupAliasModelRenderer(skinnedMeshRenderer);
material = skinnedMeshRenderer.material;
skinnedMeshRenderer.enabled = true;
}
else
{
visualStyle.SetupAliasModelRenderer(meshRenderer);
material = meshRenderer.material;
meshRenderer.enabled = true;
}
var textures = aliasModel.Textures;
visualStyle.SetAliasModelTextures(material, textures.MainTexture, textures.FullBrightTexture);
}
}

7
Assets/Scripts/Modules/RenderModule.cs

@ -24,11 +24,10 @@ public partial class RenderModule
uq.GameAssets.AddAliasModel(aliasModel);
// DEBUG kept for reference for the moment, how to address skins & texture frames, and full-bright textures
var material = new Material(Shader.Find("Universal Render Pipeline/Simple Lit"));
uint texNum = glTextures[0][0].texNum;
if (uq.GameAssets.TryGetTexture(texNum, out var texture))
{
material.mainTexture = texture;
aliasModel.Textures.MainTexture = texture;
}
if (fbTextures != null && fbTextures[0] != null && fbTextures[0][0] != null)
@ -36,9 +35,7 @@ public partial class RenderModule
var fbTexNum = fbTextures[0][0].texNum;
if (uq.GameAssets.TryGetTexture(fbTexNum, out var fbTexture))
{
material.EnableKeyword("_EMISSION");
material.SetTexture("_EmissionMap", fbTexture);
material.SetColor("_EmissionColor", Color.white);
aliasModel.Textures.FullBrightTexture = fbTexture;
}
}

1
Assets/Scripts/Support/AliasModel.cs

@ -15,6 +15,7 @@ public class AliasModel
public string Name => name;
public bool IsAnimated => header.numPoses > 1;
public bool AutoAnimate => frameType == QAliasFrameType.Group;
public TextureSet Textures { get; } = new TextureSet();
public AliasModel(string name, QAliasHeader header, QAliasFrameType frameType)
{

12
Assets/Scripts/Support/TextureSet.cs

@ -0,0 +1,12 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TextureSet
{
public Texture2D MainTexture { get; set; }
public Texture2D FullBrightTexture { get; set; }
// TODO: organize into skins, frames/groups
}

11
Assets/Scripts/Support/TextureSet.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7e2b44caf480c45459e09af660b9e378
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Loading…
Cancel
Save