If $G$ is a compact Lie group then $pi_1(G)$ is finitely generated

I have to prove the statement in the title. Let $G$ a compact Lie group then $pi_{1}(G)$ is finitely generated. I have no idea how to prove it, can anyone help me?
thanks in advance

secure boot – Can I store an openssl generated public key on a TPM (2.0) device?

I’ve got an Infineon SLB9670 TPM module connected to a BeagleBone Board. I would like to carry out RSA signature verification on the board by using the TPM as a key store (storing the public key). W.r.t the same I have the following questions:

  1. Is it possible to store an externally generated public key on the TPM?
  2. If the above is possible, then is there an authentication mechanism in place that will allow only me to write to the public key store in the TPM?

I’m just starting out with TPMs, so please let me know if I’ve made some glaring assumptions.

malware – Could events 1, 61 and 27 generated by the source [UniversalTelemetryClient] be a sign of a compromisedsystem?

Previously I was sent e-mail information from my ISP about pva.intowow malware that might of infected my system. This post is get information on a seemly correlated event pattern I’ve discovered on my computer.

Does the information I’ve gathered below show a possibility that my system has been compromised?

If there is more details needed plesae let me know and I’ll extract what I can.

Initial Data:

Sent on Jul. 29, 2021, 10:33 a.m.

    IP (Same IP as in 2nd e-mail) .
     data: SOURCE TIME: 2021-07-27 03:08:36Z
    IP: (Same IP as above)
    ASN: (Same 3 digits)
    AS NAME: (My ISP)
    MALWARE FAMILY: pva.intowow
    TYPE: botnet drone
    DESCRIPTION: This host is most likely infected with malware.
    DESTINATION IP: (Same target as in second e-mail)
    DESTINATION PORT: 80 
    PORT: 41456 <- different port
    HTTP REQUEST: /api/1/tracking
    UUID
    : 83eff90d-261d-433c-a431-a53a330111f3 <- different UUID

My ISP was only able to give me a window as to when the first event occured (somewhere between the 23rd @ 13:12 and the 25 @ 13:00).

My Research:

  • Looking at the past 30 day history I’ve identified three events generated by UniversalTelemetryClient) that have started on the 23 @ 3:16:42 AM and have been reecuring ever since.

Event 61:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Windows-UniversalTelemetryClient" Guid="{(Some GUID)}" /> 
  <EventID>27</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>27</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8000000000020000</Keywords> 
  <TimeCreated SystemTime="2021-07-29T21:45:09.3379641Z" /> 
  <EventRecordID>18543</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="5396" ThreadID="4208" /> 
  <Channel>Microsoft-Windows-UniversalTelemetryClient/Operational</Channel> 
  <Computer>(My Computers Name)</Computer> 
  <Security UserID="S-1-5-18" /> 
  </System>
- <EventData>
  <Data Name="Environment">ServiceHost</Data> 
  <Data Name="EventsUploaded">2</Data> 
  <Data Name="EventsDropped">0</Data> 
  <Data Name="LastEventlogWrittenTime">132720669093049644</Data> 
  </EventData>
  </Event>

and Event 1

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Windows-UniversalTelemetryClient" Guid="{(Some GUID)}" /> 
  <EventID>1</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>1</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8000000000010000</Keywords> 
  <TimeCreated SystemTime="2021-07-23T07:21:30.7521289Z" /> 
  <EventRecordID>16750</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="4820" ThreadID="5888" /> 
  <Channel>Microsoft-Windows-UniversalTelemetryClient/Operational</Channel> 
  <Computer>(My Computers Name)</Computer> 
  <Security UserID="S-1-5-18" /> 
  </System>
- <EventData>
  <Data Name="Environment">ServiceHost</Data> 
  <Data Name="IKey">P-ARIA-(32 Alpha Numeric #)-(8 Alpha Numeric #)-(4 Alpha Numeric #)-(4 Alpha Numeric #)-(4 Alpha Numeric #)-(12 Alpha Numeric #)-(4 Numeric #)</Data> 
  <Data Name="DiskSizeInBytes">8388608</Data> 
  <Data Name="DailyUploadQuotaInBytes">0</Data> 
  <Data Name="HRESULT">2147943642</Data> 
  </EventData>
  </Event>

Note: I’ve only noted 3 unique values for the field (IKey) between all events.

and event 27

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Windows-UniversalTelemetryClient" Guid="{(Some GUID)}" /> 
  <EventID>27</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>27</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8000000000020000</Keywords> 
  <TimeCreated SystemTime="2021-07-23T07:27:06.0721704Z" /> 
  <EventRecordID>16759</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="4820" ThreadID="4216" /> 
  <Channel>Microsoft-Windows-UniversalTelemetryClient/Operational</Channel> 
  <Computer>(My Computers Name)</Computer> 
  <Security UserID="S-1-5-18" /> 
  </System>
- <EventData>
  <Data Name="Environment">ServiceHost</Data> 
  <Data Name="EventsUploaded">19</Data> 
  <Data Name="EventsDropped">0</Data> 
  <Data Name="LastEventlogWrittenTime">132714970256233086</Data> 
  </EventData>
  </Event>

Extrapolation:

  • I’ve gone back as far back as my event logs would let me and these events have only started occurring in this time period.
  • 1833 Events (Event Id 1: 759, Event Id 64: 743 and Event 27: 299)
  • Event 61: Occurs in dense chunks (Multiple in the span of a few minutes and then gaps of minutes to hours) and seems to be bound between 9AM to Midnight (+/- 10 minutes.)
  • Event 1: Similar to Event 61 but has a greater variance
  • Event 27: Very consistent and repeats every 1/2 hour or every hour with no variation other than gaps of minutes or hours between the end and a new start.
  • My use of the computer is continuous with a few breaks between 9AM and 3AM. This is relevant since these patterns don’t match my use.

Graph of Event Occurrence with respect to date
Graph of Event Occurrence with respect to date

Graph of Event Occurrence with respect to delta time between events (Time is measured by units of time used in Excel)
Graph of Event Occurrence with respect to delta time between events

Inspecting Events near the start (23/07/2021 @ 1:30 -> 3:18 AM)

Verbose 7/23/2021 1:49:48 AM    StateRepository 231 (2)
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:56:52 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 1:58:22 AM    Ntfs (Microsoft-Windows-Ntfs)   146 None
Information 7/23/2021 1:58:22 AM    Ntfs (Microsoft-Windows-Ntfs)   146 None
Verbose 7/23/2021 2:02:24 AM    StateRepository 231 (2)
Error   7/23/2021 2:13:02 AM    StorPort    549 Port
Information 7/23/2021 2:14:23 AM    Security-SPP    16394   None
Information 7/23/2021 2:14:53 AM    Security-SPP    16384   None
Verbose 7/23/2021 2:16:58 AM    StateRepository 231 (2)
Verbose 7/23/2021 2:20:39 AM    StateRepository 231 (2)
Information 7/23/2021 2:27:40 AM    StorPort    505 Port
Information 7/23/2021 2:27:40 AM    StorPort    505 Port
Information 7/23/2021 2:27:40 AM    StorPort    505 Port
Information 7/23/2021 2:27:40 AM    StorPort    504 Port
Information 7/23/2021 2:27:40 AM    StorPort    510 Port
Information 7/23/2021 2:27:40 AM    StorPort    510 Port
Information 7/23/2021 2:27:40 AM    StorPort    511 Port
Verbose 7/23/2021 2:39:43 AM    StateRepository 231 (2)
Information 7/23/2021 2:45:58 AM    Kernel-ShimEngine   4   None
Error   7/23/2021 2:45:58 AM    StorDiag    507 Class
Error   7/23/2021 2:45:58 AM    StorDiag    507 Class
Information 7/23/2021 2:45:58 AM    StorageSpaces-Driver    207 None
Information 7/23/2021 2:45:58 AM    Partition   1006    None
Information 7/23/2021 2:45:58 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:58 AM    Kernel-ShimEngine   4   None
Error   7/23/2021 2:45:58 AM    StorPort    549 Port
Information 7/23/2021 2:45:58 AM    Storsvc 1001    None
Information 7/23/2021 2:45:58 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:58 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:58 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:59 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:59 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:59 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:45:59 AM    SMBClient   30810   None
Information 7/23/2021 2:46:00 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 2:46:00 AM    DeviceSetupManager  100 None
Information 7/23/2021 2:46:00 AM    DeviceSetupManager  300 None
Information 7/23/2021 2:46:00 AM    DeviceSetupManager  300 None
Information 7/23/2021 2:46:03 AM    DeviceSetupManager  301 None
Information 7/23/2021 2:46:03 AM    DeviceSetupManager  112 None
Information 7/23/2021 2:46:03 AM    DeviceSetupManager  301 None
Information 7/23/2021 2:46:03 AM    DeviceSetupManager  112 None
Error   7/23/2021 2:46:04 AM    StorPort    549 Port
Information 7/23/2021 2:46:04 AM    NetworkProfile  4004    None
Information 7/23/2021 2:46:05 AM    SMBClient   30810   None
Information 7/23/2021 2:46:10 AM    NetworkProfile  4004    None
Information 7/23/2021 2:46:48 AM    DeviceSetupManager  101 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:56:54 AM    Ntfs (Microsoft-Windows-Ntfs)   151 None
Information 7/23/2021 2:58:41 AM    Ntfs (Microsoft-Windows-Ntfs)   146 None
Information 7/23/2021 2:58:41 AM    Ntfs (Microsoft-Windows-Ntfs)   146 None
Information 7/23/2021 2:58:41 AM    Ntfs (Microsoft-Windows-Ntfs)   146 None
Information 7/23/2021 2:59:20 AM    Service Control Manager 7040    None
Information 7/23/2021 3:01:44 AM    Service Control Manager 7040    None
Information 7/23/2021 3:02:08 AM    Partition   1006    None
Information 7/23/2021 3:02:13 AM    SMBClient   30811   None
Information 7/23/2021 3:02:13 AM    SMBClient   30811   None
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Information 7/23/2021 3:02:16 AM    Kernel-ShimEngine   4   None
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Warning 7/23/2021 3:02:16 AM    StorageSpaces-Driver    208 None
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Information 7/23/2021 3:02:16 AM    Partition   1006    None
Information 7/23/2021 3:02:16 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:16 AM    Kernel-ShimEngine   4   None
Error   7/23/2021 3:02:16 AM    StorDiag    500 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Error   7/23/2021 3:02:16 AM    StorDiag    500 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Error   7/23/2021 3:02:16 AM    StorDiag    507 Class
Information 7/23/2021 3:02:17 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:17 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:17 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:17 AM    Partition   1006    None
Information 7/23/2021 3:02:17 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:17 AM    Storsvc 1001    None
Information 7/23/2021 3:02:17 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:17 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:18 AM    Kernel-ShimEngine   4   None
Information 7/23/2021 3:02:18 AM    NetworkProfile  4004    None
Information 7/23/2021 3:02:18 AM    SMBClient   30810   None
Information 7/23/2021 3:02:19 AM    DeviceSetupManager  100 None
Information 7/23/2021 3:02:19 AM    DeviceSetupManager  300 None
Information 7/23/2021 3:02:19 AM    DeviceSetupManager  300 None
Information 7/23/2021 3:02:22 AM    DeviceSetupManager  301 None
Information 7/23/2021 3:02:22 AM    DeviceSetupManager  112 None
Information 7/23/2021 3:02:23 AM    NetworkProfile  4004    None
Information 7/23/2021 3:02:24 AM    DeviceSetupManager  301 None
Information 7/23/2021 3:02:24 AM    DeviceSetupManager  112 None
Information 7/23/2021 3:02:24 AM    SMBClient   30810   None
Information 7/23/2021 3:02:29 AM    NetworkProfile  4004    None
Information 7/23/2021 3:03:09 AM    DeviceSetupManager  101 None
Verbose 7/23/2021 3:07:51 AM    StateRepository 231 (2)
Verbose 7/23/2021 3:10:56 AM    StateRepository 231 (2)
Information 7/23/2021 3:10:57 AM    Security-SPP    16394   None
Warning 7/23/2021 3:11:00 AM    DistributedCOM  10016   None
Information 7/23/2021 3:11:27 AM    Security-SPP    16384   None
Warning 7/23/2021 3:11:31 AM    Security-Mitigations    10  (5)

domain driven design – Obtaining application generated ID from repostory or from entity constructor?

In the Book “Implementing Domain-Driven Design” the author suggests to implement a repository method to provide the next application-generated (not database-generated) ID. Like so:

class MyRepo {
  public MyId nextId() {
    return new MyId(UUID.fromRandom());
  }
}

That would lead to code like this:

var id = repository.nextId();
var entity = new MyEntity(id, ...);

But although I can see the point that providing IDs is somehow the responsibility of a repository, I don’t see an actual benefit of this implementation. Why not assiging the ID directly on object construction?

@Entity
public class MyEntity {
  @Id
  private MyId id = new MyId(UUID.fromRandom());
}

One could also argue that the identity is a central part of the entity itself.

But apart from this philoshophical difference, I see the benefit of creating the ID directly in the entity that no additional call to the repository is needed.

Do you see any advantage of providing the ID by the repository?

graphics3d – Retain rotate, zoom and pan in Plot3D generated from a package

Consider the following .wl package:

BeginPackage["ColorsIn3DPlot`"];


Begin["MyPrivate`"]


CreatePalette[Manipulate[
  Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3}, ColorFunction -> color,
   ImageSize -> {480, 480}],
  {color, {"Rainbow", "NeonColors", "BlueGreenYellow"}}],
 WindowFloating -> True,
 WindowSize -> All,
 WindowTitle -> "Nice Plot",
 Saveable -> False];


End[];


EndPackage[];

Clicking on ► Run All Code at the top right corner of the so-called “Package Helper” indeed outputs a palette with the 3D graphics, but no interactivity is enabled.

Can anyone point out the reason to why it is so?

gr.group theory – on the group generated by transitive permutation groups and diagonal groups

Let $T$ be a transitive permutation group in $S_n$, embedded in $GL_n(F)$ as permutation matrices. Let $D$ be the group of diagonal matrices in $GL_n(F)$. Let $G$ be the group generated by $T$ and $D$. That is, $G$ is a subgroup of the monomial group in $GL_n(F)$.

Question: is $G$ irreducible as a matrix group?

Probably this is a very basic question, but I cannot figure it out or find a reference…

Thank you for your help!

Python randomly generated sound – Computer Science Stack Exchange

So, I’m writing this script in Python and I want it to randomly generate and play sounds (Similar to the Solaris Virus https://www.youtube.com/watch?v=MHXLgQgilHw) but I don’t want it as earrapey as some of the sounds get in that Virus.

If you are wondering as to WHY I’m doing this, I’m trying to make a mockup of DOS in python and i wanted to test it’s “programs” by writing a “virus” that isn’t destructive to anything BUT the python script. I kind of have an idea of what I want it to do, and I know how to implement some of the pseudo-payloads. But NOT the randomly generated sounds.

I tried using PySound but apparently PIP just gave me an error saying the wheel file is having an issue being built.

THIS IS IN NO WAY AN ACTUAL VIRUS FOR ACTUAL OPERATING SYSTEMS. JUST ME TRYING TO MAKE SOMETHING MESS UP ONE SCRIPT THAT I MADE

I totally understand if you don’t really get why I’m doing this. Just screwing around with Python.

TL;DR I wanna create randomly generated sounds in python similar to Solaris

also I’ve been ping-ponged back and forth between meta stackexchange and stack overflow and decided to ask here

2D side-scroller : how to place structures in a noise generated map?

I’m creating a little terraria-like 2D side-scroller game with TypeScript. The map is generated by a 1D noise which indicates the height of the ground at each block.

I am looking for the best way to implement natural structures, generated at the same time as the terrain (for example houses, trees …), in places that allow it. For example, if a tree is placed on a slope that is too steep, its leaves could interfere with the cliff, which would not be very aesthetic. Another example, houses should appear where there is enough floor space.

One method would be to have a loop that searches for the right places but isn’t there a more optimized way of doing this?

Thank you in advance for your answers

unity – Marching cube terrain generated by compute shader gives strange error

I’m creating my own terrain terrain system for Unity using marching cubes but I’ve run into a problem I’m stumped on. First I’ll explain how it works:

A compute shader creates an array of points placed in a 3D grid of sorts based on a given individual cube size, number of cubes per axis, and a number of chunks per axis in the terrain (right now it’s working with only one chunk for simplicity). Each vertex also has a value property between 0 and 1, this is for the mesh generation next step and is set manually with an editor tool. This part works flawlessly.

Next, the mesh is generated one triangle at a time using the marching cube algorithm outlined here, and based a little on the project that’s linked in the description here.

The code for the compute shader looks like this:

#pragma kernel CSMain
#include "MarchingTable.compute"

struct Vertex
{
    float3 position;
    float value;
};

struct Triangle
{
    float3 vertexC;
    float3 vertexB;
    float3 vertexA;
};

float surfaceLevel;
float3 chunkSize;

RWStructuredBuffer<Vertex> totalVertices;
AppendStructuredBuffer<Triangle> tBuffer;

float3 LerpVertex(float3 pointA, float3 pointB, float valueA, float valueB)
{
    float t = (surfaceLevel - valueA) / (valueB - valueA);
    return pointA + t * (pointB - pointA);
}

(numthreads(8, 1, 1))
void CSMain(uint3 id : SV_DispatchThreadID, uint3 threadID: SV_DispatchThreadID)
{
  if (id.x >= chunkSize.y)
      return;

  uint chunkPower = (uint) ((chunkSize.x + 1) * (chunkSize.z + 1));
    
  uint componentY = threadID.x * (((uint) chunkSize.x + 1) * ((uint) chunkSize.z + 1));
    
  for (uint i = 0; i < chunkSize.x * chunkSize.z; i++)
  {   
      uint componentX = round(i % (uint) chunkSize.x);
      uint componentZ = round((i / (uint) chunkSize.x) * ((uint) chunkSize.x + 1));

      uint startPoint = componentX + componentZ + componentY;

      uint corners(8);

      corners(0) = startPoint;
      corners(1) = startPoint + 1;
      corners(2) = (uint) (startPoint + chunkSize.x + 2);
      corners(3) = (uint) (startPoint + chunkSize.x + 1);

      corners(4) = startPoint + chunkPower;
      corners(5) = startPoint + chunkPower + 1;
      corners(6) = (uint) (startPoint + chunkPower + chunkSize.x + 2);
      corners(7) = (uint) (startPoint + chunkPower + chunkSize.x + 1);

      int cubeIndex = 0;

      for (uint j = 0; j < 8; j++)
      {
          if (totalVertices(corners(j)).value < surfaceLevel)
              cubeIndex |= 1 << j;
      }
        
      int triangulation(16) = triangles(cubeIndex);
      
      for (uint k = 0; triangulation(k) != -1; k += 3)
      {
          int indexA1 = cornerIndexFromEdge(triangulation(k))(0);
          int indexB1 = cornerIndexFromEdge(triangulation(k))(1);

          int indexA2 = cornerIndexFromEdge(triangulation(k + 1))(0);
          int indexB2 = cornerIndexFromEdge(triangulation(k + 1))(1);
            
          int indexA3 = cornerIndexFromEdge(triangulation(k + 2))(0);
          int indexB3 = cornerIndexFromEdge(triangulation(k + 2))(1);
            
          float valueA1 = totalVertices(corners(indexA1)).value;
          float valueB1 = totalVertices(corners(indexB1)).value;

          float valueA2 = totalVertices(corners(indexA2)).value;
          float valueB2 = totalVertices(corners(indexB2)).value;
          float valueA3 = totalVertices(corners(indexA3)).value;
          float valueB3 = totalVertices(corners(indexB3)).value;
            
          Triangle tri;
            
          tri.vertexA = LerpVertex(totalVertices(corners(indexA1)).position, totalVertices(corners(indexB1)).position, valueA1, valueB1);
          tri.vertexB = LerpVertex(totalVertices(corners(indexA2)).position, totalVertices(corners(indexB2)).position, valueA2, valueB2);
          tri.vertexC = LerpVertex(totalVertices(corners(indexA3)).position, totalVertices(corners(indexB3)).position, valueA3, valueB3);
            
       tBuffer.Append(tri);
      }
   }
}

The C# code that dispatches it looks like this

void ConstructCube(ref TerrainDataObject.Chunk chunk, uint cIndex, uint chunkIndex)
{
    byte totalSize = sizeof(float) * 3 + sizeof(float);

    ComputeBuffer vertexBuffer = new ComputeBuffer(dataObject.vertices.Length, totalSize);
    vertexBuffer.SetData(dataObject.vertices);

    ComputeBuffer tBuffer = new ComputeBuffer((chunkSize.x * chunkSize.y * chunkSize.z) * 5, sizeof(float) * 3 * 3, ComputeBufferType.Append);
    ComputeBuffer tCountBuffer = new ComputeBuffer(1, sizeof(int), ComputeBufferType.Raw);

    vertexBuffer.SetCounterValue(0);
    meshGenerationShader.SetBuffer(0, "totalVertices", vertexBuffer);
    meshGenerationShader.SetBuffer(0, "tBuffer", tBuffer);
    meshGenerationShader.SetFloats("chunkSize", new float(3) { chunkSize.x, chunkSize.y, chunkSize.z });
    meshGenerationShader.SetFloat("surfaceLevel", surfaceLevel);

    meshGenerationShader.Dispatch(0, Mathf.CeilToInt(chunkSize.y/8f), 1, 1);

    ComputeBuffer.CopyCount(tBuffer, tCountBuffer, 0);
    int() tCountArray = { 0 };
    tCountBuffer.GetData(tCountArray);
    int numTri = tCountArray(0);

    // Get tri data from shader
    Triangle() tris = new Triangle(numTri);
    tBuffer.GetData(tris, 0, 0, tris.Length);

    vertexBuffer.Release();

    tBuffer.Release();
    tCountBuffer.Release();

    Vector3() verts = new Vector3(numTri * 3);
    var meshTriangles = new int(numTri * 3);

    for (int i = 0; i < numTri; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            meshTriangles(i * 3 + j) = i * 3 + j;
            verts(i * 3 + j) = tris(i)(j);
        }
    }

    chunk.vertices = verts;
    chunk.triangles = meshTriangles;
}

At first it appeared to work pretty well

But then at larger amounts of cubes, this happens

The triangles at the front of the chunk are not being generated and the triangles at the back are… well I’m not sure what they’re doing.

Anyone know how to fix this? I figure it has something to do with the threads or thread groups but I’m not sure how. I’m also pretty new to compute shaders in general if that helps.

Why are thumbnails not being generated for PDF files?

I’m trying to figure out why one of my WordPress sites is not generating thumbnails for PDF uploads. It works on my dev and staging sites. When comparing them, the only difference that I can find is that my production site is running PHP 7.2, whereas dev and staging are running PHP 7.3. I have the imagick extension installed on all of them.

Thumbnails are being generated for image files – it’s only PDF files that aren’t working. The iMagick PHP extension should be all that’s needed, right? I’ve turned on WordPress debug logging and looked for errors there and in the Apache error logs, but have found nothing.

Any suggestions?